summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/glossaries
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
Initial commit
Diffstat (limited to 'macros/latex/contrib/glossaries')
-rw-r--r--macros/latex/contrib/glossaries/CHANGES1512
-rw-r--r--macros/latex/contrib/glossaries/INSTALL122
-rw-r--r--macros/latex/contrib/glossaries/README81
-rw-r--r--macros/latex/contrib/glossaries/glossaries-code.pdfbin0 -> 1195352 bytes
-rw-r--r--macros/latex/contrib/glossaries/glossaries-user.html31130
-rw-r--r--macros/latex/contrib/glossaries/glossaries-user.pdfbin0 -> 893233 bytes
-rw-r--r--macros/latex/contrib/glossaries/glossaries-user.tex13059
-rw-r--r--macros/latex/contrib/glossaries/glossaries.dtx39747
-rw-r--r--macros/latex/contrib/glossaries/glossaries.ins129
-rw-r--r--macros/latex/contrib/glossaries/glossariesbegin.html3949
-rw-r--r--macros/latex/contrib/glossaries/glossariesbegin.pdfbin0 -> 186454 bytes
-rw-r--r--macros/latex/contrib/glossaries/glossariesbegin.tex2092
-rw-r--r--macros/latex/contrib/glossaries/glossary2glossaries.html1882
-rw-r--r--macros/latex/contrib/glossaries/glossary2glossaries.pdfbin0 -> 143132 bytes
-rw-r--r--macros/latex/contrib/glossaries/glossary2glossaries.tex667
-rwxr-xr-xmacros/latex/contrib/glossaries/makeglossaries1676
-rw-r--r--macros/latex/contrib/glossaries/makeglossaries-lite.1235
-rwxr-xr-xmacros/latex/contrib/glossaries/makeglossaries-lite.lua559
-rw-r--r--macros/latex/contrib/glossaries/makeglossaries-lite.pod120
-rw-r--r--macros/latex/contrib/glossaries/makeglossaries.1243
-rw-r--r--macros/latex/contrib/glossaries/samples/README-samples52
-rw-r--r--macros/latex/contrib/glossaries/samples/database1.tex24
-rw-r--r--macros/latex/contrib/glossaries/samples/database2.tex22
-rw-r--r--macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.pdfbin0 -> 248669 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.tex221
-rw-r--r--macros/latex/contrib/glossaries/samples/minimalgls.pdfbin0 -> 49958 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/minimalgls.tex87
-rw-r--r--macros/latex/contrib/glossaries/samples/mwe-acr-desc.pdfbin0 -> 37957 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/mwe-acr-desc.tex26
-rw-r--r--macros/latex/contrib/glossaries/samples/mwe-acr.pdfbin0 -> 33649 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/mwe-acr.tex25
-rw-r--r--macros/latex/contrib/glossaries/samples/mwe-gls.pdfbin0 -> 29939 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/mwe-gls.tex20
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-FnDesc.pdfbin0 -> 58817 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-FnDesc.tex29
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.pdfbin0 -> 54822 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.tex59
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-crossref.pdfbin0 -> 53456 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-crossref.tex36
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-custom-acronym.pdfbin0 -> 82185 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-custom-acronym.tex152
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-dot-abbr.pdfbin0 -> 52796 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-dot-abbr.tex92
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-dual.pdfbin0 -> 36455 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-dual.tex33
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-entrycount.pdfbin0 -> 36839 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-entrycount.tex35
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-entryfmt.pdfbin0 -> 34904 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-entryfmt.tex28
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-font-abbr.pdfbin0 -> 50703 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-font-abbr.tex63
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-ignored.pdfbin0 -> 31810 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-ignored.tex25
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-index.pdfbin0 -> 43379 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-index.tex61
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-inline.pdfbin0 -> 147381 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-inline.tex146
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-langdict.pdfbin0 -> 38855 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-langdict.tex46
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-newkeys.pdfbin0 -> 39198 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-newkeys.tex64
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.pdfbin0 -> 96000 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.tex148
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-noidxapp.pdfbin0 -> 67077 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-noidxapp.tex145
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-nomathhyper.pdfbin0 -> 41745 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-nomathhyper.tex42
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-numberlist.pdfbin0 -> 41979 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-numberlist.tex40
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-prefix.pdfbin0 -> 43259 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-prefix.tex73
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-si.pdfbin0 -> 21710 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-si.tex22
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.pdfbin0 -> 39892 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.tex147
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-storage-abbr.pdfbin0 -> 37659 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample-storage-abbr.tex112
-rw-r--r--macros/latex/contrib/glossaries/samples/sample.pdfbin0 -> 104265 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample.tex166
-rw-r--r--macros/latex/contrib/glossaries/samples/sample4col.pdfbin0 -> 43320 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sample4col.tex29
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleAcr.pdfbin0 -> 65506 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleAcr.tex88
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleAcrDesc.pdfbin0 -> 65613 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleAcrDesc.tex76
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleCustomAcr.pdfbin0 -> 93612 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleCustomAcr.tex115
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleDB.pdfbin0 -> 47043 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleDB.tex24
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleDesc.pdfbin0 -> 48396 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleDesc.tex71
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleEq.pdfbin0 -> 155760 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleEq.tex239
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleEqPg.pdfbin0 -> 169225 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleEqPg.tex295
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.pdfbin0 -> 91343 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.tex79
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleNtn.pdfbin0 -> 99000 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleNtn.tex90
-rw-r--r--macros/latex/contrib/glossaries/samples/samplePeople.pdfbin0 -> 47459 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/samplePeople.tex57
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleSec.pdfbin0 -> 65669 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleSec.tex64
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleSort.pdfbin0 -> 95383 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleSort.tex105
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleaccsupp.pdfbin0 -> 41155 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleaccsupp.tex43
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleacronyms.pdfbin0 -> 37201 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleacronyms.tex42
-rw-r--r--macros/latex/contrib/glossaries/samples/sampletree.pdfbin0 -> 66912 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampletree.tex69
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleutf8.pdfbin0 -> 44939 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/sampleutf8.tex53
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy-mc.xdy852
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy-mc207.xdy591
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy.pdfbin0 -> 133968 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy.tex300
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy2.pdfbin0 -> 68399 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy2.tex73
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy3.pdfbin0 -> 178997 bytes
-rw-r--r--macros/latex/contrib/glossaries/samples/samplexdy3.tex269
121 files changed, 103068 insertions, 0 deletions
diff --git a/macros/latex/contrib/glossaries/CHANGES b/macros/latex/contrib/glossaries/CHANGES
new file mode 100644
index 0000000000..fb9bc0861a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/CHANGES
@@ -0,0 +1,1512 @@
+glossaries change log:
+
+v4.42 (2019-01-06):
+
+ * glossaries.sty:
+
+ - changed \edef to \protected@csedef in \glsfieldedef
+
+ - changed \xdef to \protected@csxdef in \glsfieldxdef
+
+ - added package option 'noglossaryindex' to counteract 'index'
+ (if 'index' happens to be supplied as a global option)
+
+ - automake option now takes 'immediate' as a value.
+
+ * glossary-longbooktabs.sty:
+
+ - removed superfluous \glspatchLToutput
+
+v4.41 (2018-07-23):
+
+ * glossaries.sty:
+
+ - added package option kernelglossredefs (Warnings are now
+ generated if the kernel commands \makeglossary and \glossary are
+ used. These commands are deprecated with the glossaries package.
+ If the originals are required, by a package or class that must
+ be used with glossaries.sty for some reason, then use
+ kernelglossredefs=false, but beware of other possible conflicts.)
+
+ - renamed some internal commands to avoid conflict
+ \gls@debug@val, \gls@debug@nr
+ \gls@seenoindex@val, \gls@seenoindex@nr
+ \gls@numberedsection@val, \gls@numberedsection@nr
+ \gls@translate@val, \gls@translate@nr
+ \gls@nonumberlist@val, \gls@nonumberlist@nr
+
+v4.40 (2018-06-01):
+
+ * bug fix: corrected page number reference when
+ using \makenoidxglossaries
+
+v4.39 (2018-05-23):
+
+ * makeglossaries-lite.lua:
+
+ - corrected version information
+
+ * glossariesbegin.tex:
+
+ - updated further information section
+
+ * glossaries-user.tex:
+
+ - updated some external links
+
+v4.38 (2018-05-10):
+
+ * glossaries.sty:
+
+ - added \GlsEntryCounterLabelPrefix
+
+ - bug fixes:
+
+ - moved conditional inside \glsstepentry,
+ \glsstepsubentry, \glsrefentry,
+ \glsentrycounterlabel, \glssubentrycounterlabel, \glsentryitem,
+ \glssubentryitem, \glsresetentrycounter, \glsresetsubentrycounter
+
+ - removed spurious space in subentrycounter (printgloss) key
+
+ - fixed use of entrycounter and subentrycounter in \setupglossaries
+
+ * glossaries-accsupp.sty:
+
+ - bug fixes:
+
+ - added braces around argument of ActualText in \glsaccsupp
+
+ - corrected field used in \showglonameaccess
+
+v4.37 (2018-04-07):
+
+ * glossaries.sty:
+
+ - added \gls@begindocdefs
+
+v4.36 (2018-03-07):
+
+ * glossaries.sty:
+
+ - bug fix (if \makeindex is used without \makeglossaries,
+ corrupted glossary information is written to the .idx file)
+
+ * makeglossaries-lite.lua:
+
+ - corrected check for double-quotes in \@istfilename
+ (from \jobname when the .tex file name contains spaces)
+
+ - added check for nil codepage
+
+v4.35 (2017-11-14):
+
+ * glossaries.sty:
+
+ - bug fix (\glsadd breaks with sort=use)
+
+v4.34 (2017-11-03):
+
+ * glossaries.sty:
+
+ - modified \glsshowtarget to check for math mode and inner
+
+ * glossary-mcols.sty:
+
+ - removed spurious space in mcolalttreespannav style
+
+ * makeglossaries and makeglossaries-lite.lua:
+
+ - added check for \glsxtr@resource
+
+v4.33 (2017-09-20):
+
+ * Removed makeglossaries.bat (TeX distributions on Windows
+ convert the Perl script to makeglossaries.exe, so the
+ .bat file isn't needed.)
+
+ * makeglossaries and makeglossaries-lite.lua now have their
+ version numbers synchronised with glossaries.sty
+
+ * Added makeglossaries-lite.pod (to provide the
+ makeglossaries-lite.1 man file)
+
+ * Updated POD at the end of makeglossaries
+
+ * Added example-glossaries-symbolnames.tex for use in any MWE
+ requiring symbols in the name fields.
+
+ * Tidied up the user manual and guide for beginners.
+
+ * glossaries.sty:
+
+ - added package option nolangwarn
+
+ - added package option esclocations
+
+ - added \GlsSetXdyNumberGroupOrder
+
+ - added starred form of \GlsSetXdyFirstLetterAfterDigits
+
+v4.32 (2017-08-24):
+
+ * glossaries.sty:
+
+ - added debug=showtargets and associated commands
+ \@glsshowtarget and \glsshowtarget
+
+ * glossary-hypernav.sty:
+
+ - added \@glsnavhypertarget
+
+v4.31 (2017-08-10):
+
+ * glossaries.sty:
+
+ - Bug fix: 'nolist' option sets default style to \relax
+ if currently set to 'list' to prevent trying to set an
+ undefined style.
+
+v4.30 (2017-06-11):
+
+ * glossaries.sty:
+
+ - Added sort=none option
+
+ - Added \glosortentrieswarning
+
+ - Added \@glo@autosee
+
+ - Fixed bug occurring with \setupglossaries{sort=def}
+
+ - Fixed bug in \@xdyuserlocationnames
+
+ - Fixed bug in \@xdylocationclassorder
+
+ - Added \@xdycrossrefhook
+
+ - Added \@glo@check@sortallowed
+
+ - Fixed bug in \printnoidxglossary with group skips in
+ tabular styles
+
+ * makeglossaries v2.21:
+
+ - Fixed spelling mistake in warning message
+ (\GlsAddLocation -> \GlsAddXdyLocation)
+
+ - Adjusted range encap clash correction
+
+v4.29:
+
+ * glossaries-accsupp.sty: corrected check for glossaries-extra
+ 'accsupp' option.
+
+ * glossaries.sty: moved definition of \@gls@currentlettergroup
+ before \begin{theglossary} and made redefinitions of it within
+ theglossary global to guard against scoping issues cause by
+ tabular-like glossary styles.
+
+ * glossary-hypernav.sty: added \glsnavhyperlinkname
+
+v4.28:
+
+ * glossaries.sty: added \glspatchtabularx
+
+v4.27:
+
+ * Version number updated in *.sty files, but no actual code
+ change.
+
+ * makeglossaries v2.20 and makeglossaries-lite.lua v1.3:
+
+ - Added check for \glsxtr@makeglossaries
+
+v4.26:
+
+ * glossaries.sty:
+
+ - added check for classicthesis.sty (if it's been loaded
+ the default style is changed to "index" since the "list"
+ style doesn't work with classicthesis.)
+
+ * glossary-tree.sty:
+
+ - new commands \glstreeitem, \glstreesubitem and
+ \glstreesubsubitem provided for the "index" style
+ to make the style easier to adjust.
+
+ - replaced hard-coded \space with \glstreepredesc
+ or \glstreechildpredesc for all glossary-tree styles
+ except for the alttree* styles.
+
+ * glossary-mcol.sty:
+
+ - The "mcolindex" and "mcolindexspannav" styles
+ use the new \glstreeitem, \glstreesubitem and
+ \glstreesubsubitem provided by glossary-tree.sty.
+
+v4.25:
+
+ * glossaries.sty:
+
+ - bug fix
+ http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=111
+
+v4.24:
+
+ * glossaries.sty:
+
+ - added debug and seenoindex option
+
+ - added \GlsSetWriteIstHook and \GlsSetQuote
+
+ - added \@gls@extramakeindexopts for makeglossaries
+ and makeglossaries-lite.lua (allow makeindex -g
+ for German documents)
+
+ * makeglossaries (2.19):
+
+ - Improved check in &parse_for_xindy_nosort
+
+ - Added check for \@gls@extramakeindexopts
+
+ * makeglossaries-lite.lua (1.2):
+
+ - Added check for nil codepage
+
+v4.23
+
+ * glossaries.sty:
+
+ - added \glscurrentfieldvalue
+
+ * tabular-like styles (glossary-long.sty etc):
+
+ - bug fix (nogroupskip in tabular styles with "noidx" commands)
+ http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108
+
+v4.22:
+
+ * glossaries.sty:
+
+ - added \gls@arabicpage
+
+ - added \ifglswrallowprimitivemods
+
+ - added \glsentrytitlecase
+
+ * glossary-tree.sty:
+
+ - new formatting commands \glstreegroupheaderfmt
+ and \glstreenavigationfmt to
+ make it easier to customize styles
+
+ - new command \glsfindwidesttoplevelname
+
+ * glossary-mcols.sty:
+
+ - hard-coded \textbf replaced with
+ \glstreegroupheaderfmt or \glstreenavigationfmt,
+ as appropriate
+
+ - added new styles mcolindexspannav, mcoltreespannav,
+ mcoltreenonamespannav, mcolalttreespannav
+
+ * glossary-list.sty:
+
+ - new formatting commands \glslistgroupheaderfmt
+ and \glslistnavigationitem to make it easier to
+ customize styles
+
+ - fixed missing space before description in list
+ style sub-entries.
+
+ * glossary-super.sty:
+
+ - fixed bug in super4col style
+
+ * glossary-long.sty:
+
+ - fixed bug in long style (typo in \glossentrydesc
+ for sub-entries)
+
+v4.21:
+
+ * glossaries.sty:
+
+ - Added warning if there's no default style.
+
+ * glossary-longbooktabs.sty - new package
+
+ * makeglossaries (2.18):
+
+ - Added extra diagnostic if xindy's empty index key
+ warning/error occurs.
+
+ - Added check for makeindex's multiple encap warning
+ and attempt to fix.
+
+ * glossaries-user.tex:
+
+ - Fixed typo: \DefineAcronymShortcuts should be
+ \DefineAcronymSynonyms
+
+v4.20:
+
+ * makeglossaries (2.17) bug fix
+ http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=101
+
+ (No changes to any of the *.sty files, except the version number.)
+
+v4.19:
+
+ * glossaries.sty:
+
+ - Added commands: \glsdoifexistsordo,
+ \doifglossarynoexistsordo
+
+ - Added some new internals that will be used by pending new
+ package glossaries-extra.sty
+
+ * glossary-tree.sty:
+
+ - Added \glstreenamebox
+
+v4.18:
+
+ * mfirstuc removed from glossaries bundle and now
+ needs to be installed separately
+
+v4.17:
+
+ * makeglossaries-lite.lua:
+
+ - changed #! line "lua" to "texlua"
+
+ * mwe-acr.tex and mwe-acr-desc.tex:
+
+ - fixed misplaced \setacronymstyle
+
+v4.16:
+
+ * Added makeglossaries-lite.lua (Lua trimmed-down alternative
+ to Perl makeglossaries script. Doesn't have the full
+ functionality of makeglossaries but doesn't require Perl.)
+
+ * makeglossaries (Perl script):
+
+ - fixed ngerman din5007 issue.
+
+ * glossaries.sty:
+
+ - new field-related commands:
+ \glsaddstoragekey, \glsfielddef, \glsfieldedef,
+ \glsfieldgdef, \glsfieldxdef, \glsfieldfetch,
+ \ifglsfieldeq, \ifglsfielddefeq, \ifglsfieldcseq
+
+ - new user command \glswriteentry to hook into mechanism
+ that writes entry information to the external files
+
+ - new user command \glspostlinkhook to hook into end of
+ commands like \gls and \glstext.
+
+ - Added new acronym styles "long-sp-short" and
+ "long-sp-short-desc"
+
+ - bug fix: \glsadd should use \@@do@wrglossary not
+ \@do@wrglossary
+
+v4.15:
+
+ * glossaries.sty:
+
+ - bug fix
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=79
+
+v4.14:
+
+ * glossaries.sty:
+
+ - Added \glsenableentrycount and associated commands
+ and accompanying sample file sample-entrycount.tex
+ that illustrates them.
+
+v4.13:
+
+ * glossaries.sty:
+
+ - provide a definition of \indexspace if not already defined
+ for those styles that need it.
+
+ * mfirstuc.sty (v1.10):
+
+ - added \ecapitalisewords, \emakefirstuc
+
+v4.12:
+
+ * glossaries.sty:
+
+ - Separated language-dependent code into separate
+ modules to be independently installed, as required.
+
+ - Fixed bugs:
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=67
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=69
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&category=glossaries&key=72
+
+v4.11:
+
+ * glossaries.sty:
+
+ - Added \glsaddprotectedpagefmt
+
+ - Put back the redefinition of \glossary (so that it takes an
+ optional argument) removed in the previous version to
+ allow for packages that have hacked the internal glossary
+ writing mechanism. (This may be removed or moved to a
+ compatibility mode in the future.)
+
+ - Fixed backward compatibility support of deprecated
+ sanitize=none option
+
+ - Fixed bug introduced in v4.10 that caused a conflict with
+ doc.sty
+
+v4.10:
+
+ * Added test file example-glossaries-url.tex
+
+ * glossaries.sty:
+
+ - Added \glspercentchar and \glstildechar
+
+ - Fixed problem with \Glsentryname (and \Glsname)
+ when used with \setacronymstyle
+
+ - No longer redefine \glossary but instead define
+ a replacement internal command \gls@glossary, and
+ renamed \@glossary to \@gls@glossary
+
+ * glossary-tree.sty:
+
+ - Corrected location of space in alttree style with symbols
+
+v4.09:
+
+ * Fixed bug in \glsaddkey introduced in v4.08
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=64
+
+v4.08:
+
+ * New files: example-glossaries-*.tex
+
+ These contain lorem ipsum dummy entries for testing
+ new styles or constructing MWEs that require a lot of sample entries
+ (to be placed on TeX's path)
+
+ * glossaries.sty
+
+ - new package option: automake
+
+ - \newglossary now has a starred version where you don't need
+ to specify the extensions
+
+ - new commands: \forallacronyms, \newignoredglossary
+
+ - new keys for \printglossary/\printnoidxglossary:
+ entrycounter, subentrycounter, nopostdot
+
+ - \gls etc now have a +-version (opposite of the *-version)
+ that explicitly switches on the hyperlink with hyper=true
+ (unlike the unstarred version that uses the default setting).
+
+ - new commands for use within \glsentryfmt or \defglsentryfmt:
+ \glsifhyperon and \glslinkvar (\glsifhyper now deprecated).
+
+ - fixed bug that didn't correctly honour the hyper setting
+ in commands like \glslink, \gls, glstext, etc under
+ certain situations.
+
+ - fixed bug
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=54
+
+ - added \@gls@hyp@opt and removed now-redundant internal commands
+
+ - removed some of the redundancy in commands like \gls
+
+ * glossary-longragged.sty:
+
+ - Fixed bug in altlongragged4col style that displayed the
+ description instead of the symbol in the third column.
+
+ * glossary-tree.sty:
+
+ - Added \glstreenamefmt
+
+ * mfirstuc.sty v1.09:
+
+ - Added \MFUnocap
+
+ * New package: mfirstuc-english.sty
+
+ * makeglossaries
+
+ - Fixed bug report
+ http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=55
+
+v4.07:
+
+ * glossaries.sty:
+
+ - Added \glsletentryfield
+
+ - Bug fixes:
+ - added optional argument to unstarred sectioning
+ commands (used with package options numberedsection=nolabel
+ and numberedsection=autolabel)
+
+ - added \global prefix to definition of \@gls@loclist
+ in \@gls@noidx@do in case a tabular-like style is used.
+
+ - Fixed no case change bug in \Acrfullplfmt
+
+v4.06:
+
+ * glossaries.sty:
+
+ - Added \glsifhyper
+
+ - Fixed bookmark issue occurring with
+ "numbers" and "symbols" package options
+ in combination with hyperref.sty and translator.sty
+
+v4.05:
+
+ - Added missing glossaries-prefix.sty to tds
+
+v4.04:
+
+ * glossaries.sty:
+
+ - new commands: \makenoidxglossaries, \printnoidxglossary
+ and \printnoidxglossaries that use TeX to sort entries
+ instead of makeindex/xindy
+
+ - new command: \glsnumberlistloop (for use with
+ \makenoidxglossaries)
+
+ - new package option: noredefwarn
+
+ - moved definition of \glswrite to \makeglossaries so that write
+ register is only allocated if required.
+
+ - fixed bug in \defglsdisplayfirst
+
+ * glossary-tree.sty:
+
+ - fixed bug in alttree style
+
+
+ * glossaries-accsupp.sty:
+
+ - \compatibleglossentry and \compatiblesubglossentry:
+ changed \newcommand to \def as they may or may not be
+ defined depending on whether user has loaded glossaries
+ separately from glossaries-accsupp
+
+ * makeglossaries:
+
+ - added -Q and -k switches
+
+ - added extra diagnostics
+
+v4.03:
+
+ glossaries.sty:
+
+ * Added \glsifhasfield
+
+ * Changed default definition of \glswritefiles to \@empty
+ instead of \relax
+
+ * Fixed bug in \ifglsdescsuppressed
+
+ * Added \glsdetoklabel
+
+ * Added \glsdoifexistsorwarn
+
+ * Changed \glossentryname etc to use \glsdoifexistsorwarn
+ instead of \glsdoifexists
+
+ * Added \renewacronymstyle
+
+ * Fixed bug in dua acronym style
+
+ glossaries-accsupp.sty:
+
+ * Redefined acronym styles to use accessibility support
+
+ makeglossaries v2.12:
+
+ * Added check for backslashes in -x, -m and -d arguments
+
+
+v4.02:
+
+ glossaries.sty:
+
+ * Added nameref value to 'numberedsection' package option
+
+ * New package option: "index"
+
+ * New package option: xindynoglsnumbers (equivalent to
+ xindy={glsnumbers=false})
+
+ * Added \newacronymstyle, \setacronymstyle and associated
+ commands. (Package options "smallcaps", "smaller",
+ "description", "dua" and "footnote" now deprecated.)
+
+ * New commands \acrfullfmt etc to govern the format of
+ \acrfull etc.
+
+ * Made \makeglossaries preamble only
+
+ * Bug Fixes:
+
+ - \acrlong, \Acrlong, \ACRlong, \acrlongpl,
+ \Acrlongpl and \ACRlongpl: removed \acronymfont and
+ spurious parenthetical text.
+
+ - \glsentryfull, \Glsentryfull, \glsentryfullpl,
+ and \Glsentryfullpl: added missing \acronymfont
+
+ - Fixed bug in "sanitize" package option (deprecated option,
+ but still kept for backward compatibility).
+
+v4.01:
+
+ * Fixed bug in \CustomAcronymFields caused by missing comma.
+
+ * Fixed valueless package options so that they can be passed via
+ the document class.
+
+v4.0:
+
+ First stable release since v3.07.
+
+v3.14a:
+
+ * glossaries.sty
+
+ - New package options: acronyms, xindygloss, notranslate
+
+ - Modified savewrites option so that it can be set via
+ \setupglossaries
+
+ - Enabled compatible-3.07 option in \setupglossaries
+
+ - Added \provideglossaryentry and \longprovideglossaryentry
+
+ - Bug fix: fixed the default firstplural value to the value of
+ the plural key.
+
+ * glossaries-prefix.sty
+
+ - New
+
+ * makeglossaries v2.09:
+
+ - added check for -q switch when issuing warnings
+
+v3.13a:
+
+ * glossaries.sty
+
+ - Added \glsprestandardsort
+
+ - Renamed \glossarymark to \glsglossarymark to prevent clash
+ with memoir.
+
+ - Made "translate" package option a choice key rather than boolean
+
+ - Bug fix for \glsaddallunused:
+ set default value of optional argument to \@glo@types
+
+ - Bug fix for \SetFootnoteAcronymDisplayStyle:
+ added missing final argument of \ifglshaslong
+
+ - Bug fix for \glossarystyle:
+ replaced \ifdef with \ifcsdef
+
+ * mfirstuc.sty (v1.08):
+
+ - Made \makefirstuc and \capitalisewords robust
+
+v3.12a:
+
+ * glossaries.sty
+
+ - Added \glsaddkey (allows the user to add their own custom
+ keys to glossary entries).
+
+v3.11a:
+
+ * glossaries.sty
+
+ - Added \setupglossaries
+ (http://www.dickimaw-books.com/cgi-bin/featuretracker.cgi?action=view&key=7)
+
+ - Added \glsentryfmt and \defglsentryfmt
+ and deprecated \glsdisplayfirst, \glsdisplay,
+ \defglsdisplayfirst and \defglsdisplay
+ (http://www.dickimaw-books.com/cgi-bin/featuretracker.cgi?action=view&key=13)
+
+ - Added \longnewglossaryentry
+
+ - Added \ifglshasshort and \ifglshaslong
+
+ - Added check in \glsgetgrouptitle for non-Latin characters
+
+ - Added compatible-3.07 package option
+
+ - Added "symbols" and "numbers" package options
+ (http://www.dickimaw-books.com/cgi-bin/featuretracker.cgi?action=view&key=16)
+
+ - Added \printacronyms[opts] as a synonym for
+ \printglossary[type=\acronymtype,opts]
+ if "acronym" package option is used and
+ "compatible-3.07" package has not been used
+ and \printacronym doesn't already exist at the start
+ of the document.
+
+ - Added \showgloshort and \showglolong
+
+ - Fixed bug in \@gls@noexpand@fields
+
+ - Fixed bug in \gls@defglossaryentry that didn't set the default
+ counter correctly
+
+ - Now uses \mfirstucMakeUppercase instead of \MakeUppercase
+ to be consistent with mfirstuc.
+
+ - Now requires textcase (better handling of case changes)
+
+ * mfirstuc (v1.07)
+
+ - Added \mfirstucMakeUppercase to allow the user to switch from
+ \MakeUppercase to another case changing command.
+
+ * makeglossaries (v2.08)
+
+ - Added -x and -m switches
+
+v3.10a:
+
+ * glossaries.sty
+
+ - Added \providecommand to aux file in case user removes
+ the glossaries package from their document. (This ensures
+ the next run doesn't throw a load of undefined control
+ sequence errors when the aux file is parsed.)
+
+ - Fixed new code (from v3.08a) so that document can still
+ compile if entries are defined within the document after
+ \printglossary or \printglossaries
+
+v3.09a:
+
+ * glossaries.sty
+
+ - Added fix for \RecordChanges if doc.sty has been loaded
+
+ - Fixed noexpand for symbolplural field
+ (http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=41)
+
+ - Made \Glsentryname, \Glsentrytext etc robust
+
+ - Fixed bug in footnote option
+ (http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=37)
+
+ - Fixed bug where acronym starts with repeated letter
+ (www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=34)
+
+ - Added \glstextup which checks for \textulc
+ (http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=40)
+
+v3.08a:
+
+ * glossaries.sty
+
+ - Changed the way information is written to external glossary
+ files. Information is now written as just \glossentry{label}
+ or \subglossentry{level}{label} instead of
+ \glossaryentryfield{label}{name}{description}{symbol} or
+ \glossarysubentryfield{level}{label}{name}{description}{symbol}
+ This means that descriptions can span multiple paragraphs
+ without exceeding makeindex's buffer.
+
+ - Added \setglossarystyle (replaces \glossarystyle which is now
+ just for backward compatibility)
+
+ - New user commands:
+
+ \glossentryname, \Glossentryname,
+ \glossentrydesc, \Glossentrydesc,
+ \glossentrysymbol, \Glossentrysymbol,
+ \glsexpandfields, \glsnoexpandfields,
+ \glsaddallunused,
+ \ifglshassymbol, ifglshasdesc
+
+ - Added nogroupskip option to \printglossary
+
+ - Added \gls@ifnotmeasuring
+
+ - Made \glsseeformat, \glsseelist, \glsseeitem and \glssee robust
+
+ * glossary-tree.sty
+
+ - Added \par to end of theglossary environment for index style.
+ (http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=38)
+
+v3.07:
+
+ * glossaries.sty
+
+ - Fixed bug relating to nohypertypes list option
+
+ - Added \setglossarypreamble (code provided by Michael Pock)
+
+ - Modified \glspostdescription to adjust spacefactor before full
+ stop. (Patch provided by Michael Pock.)
+
+ - Added check for openright in \gls@doclearpage
+
+ - Added \glsdoparenifnotempty
+
+ - Made \findrootlanguage obsolete
+
+makeglossaries:
+
+ - Added languagemap to determine root language
+
+v3.06:
+
+ * glossaries.sty
+
+ - Fixed incompatibility between glossaries and new version of babel.
+
+ * makeglossaries
+
+ - added babel dialect -> xindy language map
+
+v3.05:
+
+ * glossaries.sty
+
+ - fixed bugs related to location numbering (Roman and Alph).
+
+ - made \nopostdesc robust
+
+ - clarified in the documentation that \makeglossaries must be
+ used before cross-referenced entries
+
+ - added missing 'nohypertypes' code
+
+ * makeglossaries:
+
+ - added "din5007" as the default to makeglossaries if the
+ language is german
+
+ * glossary-mcols.sty:
+
+ - Fixed bug -> \begin{multicols}{2} replaced with \begin{multicols}{\glsmcols}
+
+v3.04:
+
+ * added 'nohypertypes' package option
+
+ * added new commands: \GlsDeclareNoHyperList and \glsIfNoHyperType
+
+ * added 'local' key to \glsdisp, \gls, \Gls and \GLS
+
+ * added check for doc package
+
+ * fixed bug in altlist that can cause an unintentional page break
+ between entry and description.
+
+ * fixed bug that causes extra space after glossary when using
+ xindy
+
+ * fixed bug that was introduced by the bug fix in 3.02 regarding wrong
+ page number
+
+ makeglossaries v2.05:
+ * added -d option
+
+v3.03:
+
+ * fixed bug in \printglossary options: title now also sets
+ toctitle if toctitle missing (as per documentation).
+
+ * added sanitize={sort=false} option
+
+ * added nopostdot package option
+
+ * added nogroupskip package option
+
+ glossary-inline.sty added:
+
+ - \glsinlinenameformat
+ - \glsinlinedescformat
+ - \glsinlineemptydescformat
+ - \glsinlinesubnameformat
+ - \glsinlinesubdescformat
+ - \glsinlinepostchild
+
+v3.02:
+
+ * new package options:
+
+ - 'ucmark'
+ - 'indexonlyfirst'
+ - 'savenumberlist'
+
+ * new glossary styles:
+
+ - glossary-mcol.sty
+ - glossary-inline.sty
+
+ * new commands:
+
+ - \glolinkprefix
+ - \glsmoveentry
+ - \renewglossarystyle
+ - \ifglshaschildren
+ - \ifglshasparent
+ - \glsresetentrycounter
+ - \glsentrynumberlist
+ - \glsdisplaynumberlist
+
+ * added check to \glswritefiles to see if glossary tokens have
+ been defined in case savewrites option used and \makeglossaries
+ omitted.
+
+ * fixed bug in \showglossaryentries
+
+ * fixed bug in \SmallNewAcronymDef
+
+ * fixed unwanted space in
+ \SetDescriptionFootnoteAcronymDisplayStyle
+
+ * fixed [xindy] wrong page number bug for entries occurring in
+ paragraph spanning page break
+
+ * fixed bug in \Glsentryfull and \glsentryfullpl
+
+ * swapped order of checks for babel and polyglossia
+
+ mfirstuc v1.06:
+
+ * added \capitalisewords, \xcapitalisewords
+
+ makeglossaries v2.04:
+
+ * fixed bug in &scan_aux
+
+v3.01:
+
+ * made commands like \glslink, \gls and \acrshort robust
+
+ * Fixed bugs in commands like \acrfullpl which was missing the
+ plural in some cases.
+
+ * Removed \acronymfont from \acrfullformat as it's already used
+ in the second argument passed to that command. (Causes a
+ problem with the "smaller" option.)
+
+v3.0 (Major changes):
+
+ * Documentation has been restructured:
+
+ - glossaries-user: main user manual
+ - glossariesbegin: cut-down introduction for beginners
+ - mfirstuc-manual: user manual for mfirstuc package
+ - glossaries.pdf: documented code for advanced users
+ - glossary2glossaries: upgrading from glossary.sty to glossaries.sty
+
+ * Added new package options:
+
+ - entrycounter : number main (level 0) entries in the glossary.
+
+ - counterwithin : set parent counter for the entry counter.
+
+ - subentrycounter : number level 1 entries in the glossary.
+
+ - sort : set the sort order to
+ - standard alphabetical (sort=standard),
+ - order of definition (sort=def)
+ - order of use (sort=use)
+
+ - seeautonumberlist : automatically activates the number list
+ for entries that use the "see" key.
+
+ - savewrites : minimise number of \newwrite
+
+ - compatible-2.07 :
+
+ bug fixes in v3.0 have cause compatibility problems. This
+ package option will restore the old behaviour but bugs will
+ remain. (Should mostly only effect documents that used
+ \noist with a custom Xindy style file.)
+
+ * \printglossary sets \currentglossary to the current glossary's
+ label. (Allows custom glossary styles access to the glossary
+ type.)
+
+ * Modified internal workings of acronyms and:
+
+ - Added starred versions of \acrshort etc.
+
+ - Added "long", "short", "longplural" and "shortplural" keys
+ (Reserved for use with \newacronym.)
+
+ - Added analogous "longaccess", "shortaccess", "longpluralaccess"
+ and "shortpluralaccess" keys for \newacronym in
+ glossaries-accsupp.sty
+
+ * Added \glsseeitemformat to customise the text given in the link
+ created by \glsseeitem.
+
+ * \newglossaryentry key "nonumberlist" now boolean.
+
+ * added debugging commands \showgloname etc.
+
+ * now loads etoolbox:
+
+ - replaced \DeclareRobustCommand with \newrobustcmd
+
+ - replaced \@ifundefined with \ifcsundef
+
+ - replaced \let...\undefined with \undef...
+
+ * Bug Fixes:
+
+ - now works with equation counter in amsmath's align
+ environment.
+
+ - Mixed counters now work with xindy option.
+
+ - Fixed hyperlinks in location numbers where \theH<counter>
+ has a prefix not present in \the<counter>.
+
+ - If title specified in \printglossary but toctitle hasn't
+ been specified, make toctitle same as supplied title.
+
+ - \newglossaryentry "see" key and \glssee now sanitize and escape
+ special characters before writing to output file. (Allows
+ user to redefine \seename any point before \printglossary or
+ \printglossaries.)
+
+ - \glshyperlink: Changed the default value of the optional argument
+ to \glsentrytext instead of \glsentryname.
+
+ * mfirstuc.sty (v1.05):
+
+ - added \glsmakefirstuc (replaces \@gls@makefirstuc) to make
+ it easier to customise.
+
+ makeglossaries (v2.02):
+
+ * now displays version number on startup unless -q
+
+ * added more diagnostics to give more helpful messages than
+ those supplied by xindy or makeindex.
+
+v2.07:
+
+ * Fixed bug that ignored format key in \glsadd
+
+ makeglossaries:
+
+ * Fixed bug causing failure to process aux files containing \@input
+
+v2.06:
+ * Added \altnewglossary
+
+ * added facility to customise acronyms if the predefined styles
+ don't fit the user's requirements.
+
+ * Serbian dictionary added (provided by Zoran Filipovic)
+
+ makeglossaries:
+
+ * Scans aux file for \@input in case \printglossary is in an
+ imported file.
+
+v2.05:
+ * Fixed error in .ist file and in \glsdisp caused by a
+ misplace brace. (Patch provided by Sergiu Dotenco).
+
+v2.04:
+ * Improved support for multiple lists of acronyms.
+
+ * Fixed bug that caused \glsadd to ignore counter option
+
+ * Fixed bug that causes babel to override translator's definition
+ of \glossaryname.
+
+ * Added user1, ... , user6 keys.
+
+ * Added polyglossia support
+
+ * makeglossaries now creates stub output file if input file is
+ empty
+
+ glossaries-accsupp v0.2:
+ * Added access keys.
+
+ * Added support for acronyms.
+
+ mfirstuc v1.04:
+ * fixed bug occurring when initial control sequence
+ in the argument of \makefirstuc has more than one
+ argument.
+
+v2.03:
+ * Added check to see if \glossarymark has been defined
+
+ * makeglossaries - failed file test messages printed to
+ stdout instead of stderr (so that it doesn't interrupt
+ latexmk).
+
+ * Fixed bug when entries used at the start of a paragraph.
+
+ * Added package option hyperfirst (boolean option to suppress
+ hyperlink on first use).
+
+ * Added pod to makeglossaries.
+
+v2.02:
+ * Renamed glossaries-dictionary-Brazil.dict to
+ glossaries-dictionary-Brazilian.dict
+
+ * Replaced \@mkboth with \glossarymark in \glossarysection
+ to make it easier for the user to override it
+
+ * Fixed bug that generated no \printglossary warning when
+ the glossary is placed in a group
+
+ * translate=false option will now prevent automatic loading
+ of translator package.
+
+v2.01:
+ * Documentation changes:
+ - removed quick guide section from glossaries.pdf and replaced
+ it with a separate beginners guide (glossariesbegin.pdf)
+ - added a section for front-end or script developers who
+ want to access information from the aux file
+
+ * Added new ragged right versions of long/super styles
+
+ * Added 'nomain' package option to suppress the creation of the
+ main glossary
+
+ * Added 'nowarn' package option to suppress warnings
+
+ * Removed unwanted full stops in transcript messages
+
+ * Changed \linewidth to \hsize when setting lengths
+
+ * Removed item_02 key from makeindex style file (no such key)
+
+ * Moved \@do@wrglossary before term is displayed to prevent
+ unwanted whatsit
+
+v2.0 (1.20):
+ * Fixed ngerman caption bug in glossaries-babel.sty
+
+v1.19:
+
+ * changed \acronymfont to use \textsmaller instead of \smaller
+ (for "smaller" package option)
+
+ * Added \glsdisp (similar to \glslink except that it uses
+ \glsdisplay/glsdisplayfirst and unsets the first use flag)
+
+ * Added experimental package glossaries-accsupp which
+ requires accsupp package.
+
+v1.18:
+ * fixed missing closing } in glossaries-babel.sty
+
+ * added \glstarget so that glossary styles can be modified
+ in the document without using internal commands.
+
+ * glossary-super.sty isn't loaded if supertabular.sty isn't
+ installed.
+
+ * added nolong, nosuper, nolist, notree and nostyles package
+ options to prevent loading unnecessary packages.
+
+ * added \oldacronym (emulates the old glossary package's
+ \newacronym command).
+
+ * added sublistdotted style.
+
+ * fixed bug caused by misspelt \glspagewidthlist (should be
+ \glspagelistwidth).
+
+ * fixed border in super4colheaderborder and
+ altsuper4colheaderborder styles.
+
+ * fixed sort sanitization when package option sanitize={name=false}
+ is used.
+
+v1.17:
+ * changed definition of \@glossary to prevent conflict with
+ memoir
+
+ * added check to determine if \printglossary is defined. (If
+ it is, issue warning and redefine.)
+
+ * provided means to suppress number list for specific entries
+
+ * provided means to suppress description terminator for
+ specific entries
+
+ * added cross-referencing support
+
+ * added hierarchical support
+
+ * added xindy support
+
+ * modified \glshypernumber to support \nohyperpage
+ (code provided by Heiko Oberdiek)
+
+ * added 2 and 3-page suffix support
+
+ * added "order" package option to set word/letter ordering
+ (only has an effect in combination with makeglossaries script)
+
+ * added Brazilian dictionary (supplied by Thiago de Melo)
+
+v1.16 :
+ * fixed bug that causes footnote option to remove hyperlink
+ for first use entries in glossaries other than the list
+ of acronyms. (footnote option should only affect entries
+ in \acronymtype glossary.)
+
+ * Raised hypertarget so that links to glossary entries don't
+ scroll off the top of the page.
+
+ * Fixed expansion-related bug (thanks to fix provided by
+ Ulrich Diez)
+
+v1.15 :
+ * added \glslabel
+
+ * added altlong4col* and altsuper4col* styles
+
+ * fixed PDF encoding problem caused when both translator
+ and hyperref packages are being used
+
+ * fixed bug when using smallcaps and smaller options that causes
+ the long form in the list of acronyms to be the same for each
+ entry
+
+ * Added warnings when rerun required when using glossary
+ group hyper navigation
+
+glossaries.perl v1.04:
+ * add do_cmd_glslabel
+
+ * changed links to the start of the relevant glossary entry
+ rather than the entry's backlink
+
+ * added implementation of starred forms of \gls etc
+
+ * added frame related code if frames.pl has been loaded
+
+v1.14 :
+ * Fixed bug in \glsnavhyperlink that causes an error when used
+ with hyperref and translator packages.
+
+ * Added \glsautoprefix (specifies a prefix to the automatically
+ generated label)
+
+ * Added nonumberlist and numberedsection keys to \printglossary
+
+ * Changed \glsnavigation so that it only lists the groups that
+ are present. (This prevents unknown target warnings.)
+
+ * Amended documentation.
+
+mfirstuc v1.02 (18 June 2008):
+
+ * Fixed bug that transfered grouping, (e.g
+ \makefirstuc{\emph{abc}xyz} moved the xyz into the \emph)
+
+ * If group following initial command is empty, \MakeUppercase
+ is applied to the command, e.g. \makefirstuc{\ae{}bc} now
+ produces \MakeUppercase\ae{}bc.
+
+v1.13 :
+ * Fixed bug in long4colheaderborder that puts an extra row
+ at the end of the glossary.
+
+ * Fixed bug in \glstext etc that ignored 3rd argument (thanks
+ to Franz Fischer for pointing this out).
+
+ * Removed only preamble restriction on \newglossaryentry and
+ \newacronym.
+
+ * Added \glspluralsuffix.
+
+ * Changed firstplural default so that it takes its value from
+ the plural key if the first key is omitted.
+
+ * Added \acrshortpl, \Acrshortpl, \ACRshortpl, \acrlongpl,
+ \Acrlongpl, \ACRlongpl, \acrfullpl, \Acrfullpl, \ACRfullpl.
+
+ * Fixed bugs in \Acrshort etc.
+
+ * Add package options "smaller" and "shortcuts".
+
+ * Acronym default plural forms now implemented for the additional
+ acronym styles.
+
+ * Fixed makeglossaries to allow filenames with spaces.
+
+ * Fixed error in documentation describing \glsaddall
+ - optional argument should be a key=value list.
+
+ * Added Polish support (thanks to Piotr Formella for supplying
+ the translations).
+
+ * If babel is loaded and translator package is found on TeX's
+ path, then the translator package will now be automatically
+ loaded.
+
+mfirstuc v1.01 (13 May 2008):
+
+ * Added \xmakefirstuc (expands argument before applying \makefirstuc)
+
+v1.12 (8 March 2008):
+ * Fixed bug that causes \glspl to print the plural short form
+ on first use instead of the plural long form.
+
+ * Added descriptionplural and symbolplural keys.
+
+ * Added \glsshortkey, \glsshortpluralkey, \glslongkey and
+ \glslongpluralkey.
+
+ * Fixed bugs in \glsname, \glstext, \glsdesc etc.
+
+ * Added a check for \hypertarget in addition to checking
+ for \hyperlink (in the event that \hyperlink is defined
+ but not \hypertarget).
+
+ * Changed #! line in makeglossaries to use /usr/bin/env
+
+ * Added package mfirstuc.sty which provides the command
+ \makefirstuc{<stuff>} which makes the first object of
+ <stuff> uppercase unless <stuff> starts with a control
+ sequence followed by a group, in which case the first
+ object in the group is converted to uppercase. Examples:
+
+ \makefirstuc{abc} -> Abc
+ \makefirstuc{\emph{abc}} -> \emph{Abc}
+ \makefirstuc{{\'a}bc} -> {\'A}bc
+ \makefirstuc{\ae bc} -> \AE bc
+ \makefirstuc{{\ae}bc} -> {\AE}bc
+
+ (but don't do \makefirstuc{\ae{}bc} which produces \ae Bc.)
+
+v1.11 (2 March 2008):
+ * Fixed error in manual (glossary style is set using \glossarystyle
+ not \setglossarystyle).
+
+ * Changed the way the package is archived to make it compatible
+ with TeX Live.
+
+ * Improved error handling of makeglossaries and added --version
+ and --help options.
+
+v1.1 (22 Feb 2008):
+
+ * New package options:
+
+ - numberline:
+ inserts \numberline{} in \addcontentsline when used with
+ the toc option.
+
+ - numberedsection:
+ puts glossaries in numbered chapters/sections
+
+ - translate:
+ translate=false option prevents glossaries package from
+ using pre-supplied translations.
+
+ - description:
+ changes definition of \newacronym to allow a description
+
+ - footnote:
+ changes definition of \newacronym to use a footnote on
+ first use
+
+ - smallcaps:
+ changes definition of \newacronym to set acronyms in
+ small capitals
+
+ - dua:
+ changes definition of \newacronym to always expand
+ acronyms
+
+ * Added \setglossarysection
+ - changes the section type used by the glossaries
+
+ * Added listdotted glossary style.
+
+ * No longer uses xspace package; uses amsgen instead.
+
+ * Added \glsname, \glsdesc, \glssymbol, \glsfirst, \glstext,
+ \glsplural and \glsfirstplural.
+
+ * Added support for translator package.
+
+v1.08 (13 Oct 2007):
+ * Added multilingual support
+ * Fixed bug in listgroup and altlistgroup styles so that
+ \glsgroupheading uses \glsgetgrouptitle to get the group title
+ instead of displaying the label
+ * Fixed typo in error message text when the description key
+ is missing to \newglossaryentry.
+
+v1.07 (13 Sep 2007):
+ * Fixed bug causing incorrect page number for entries in the
+ first paragraph of a page.
+
+v1.06 (21 Aug 2007):
+ * Changed the license text
+
+v1.05 (10 Aug 2007):
+ * Changed the default value of the sort key to just use the
+ name key
+ * Added \@mkboth to \glossarysection
+
+v1.04 (3 Aug 2007):
+ * Added \glstextformat
+
+v1.03 (4 July 2007):
+ * Added \glspostdescription
+
+v1.02 (25 May 2007):
+ * Added overview section in the documentation
+
+v1.01 (17 May 2007):
+ * Added number range facility (equivalent to makeindex's |( and |)
+ formatting commands.)
+ * Added a space after \delimN and \delimR in the ist file.
+
+v1.0 (16 May 2007): Initial release
diff --git a/macros/latex/contrib/glossaries/INSTALL b/macros/latex/contrib/glossaries/INSTALL
new file mode 100644
index 0000000000..e9ba724de8
--- /dev/null
+++ b/macros/latex/contrib/glossaries/INSTALL
@@ -0,0 +1,122 @@
+INSTALLATION
+
+The best method of installing is through your TeX package
+manager, but if you need to use the manual method for some
+reason, follow the instructions below.
+
+If you have downloaded the glossaries package using the TeX
+Directory Structure (TDS), that is you have downloaded the archive
+glossaries.tds.zip containing doc, tex, scripts and source
+directories, you need to follow the "Installing from TDS"
+instructions below.
+
+If you have downloaded the following files:
+
+glossaries.dtx
+glossaries.ins
+makeglossaries
+makeglossaries.bat
+
+You need to follow the "Installing from DTX and INS" instructions
+below.
+
+For further information on installing LaTeX packages see:
+
+http://www.tex.ac.uk/cgi-bin/texfaq2html?label=installthings
+
+INSTALLING FROM TDS
+===================
+
+Files in tex and doc directories should go in the corresponding
+TEXMF directories (for example, ~/texmf or /usr/share/texmf-local/ or
+C:\localtexmf\). The scripts/glossaries/ directory contains the Perl
+script makeglossaries and the batch file makeglossaries.bat which
+should go somewhere on your operating system's PATH. (Both files are
+required for Windows, but only the Perl script is required for other
+operating systems.) Similarly for makeglossaries-lite.lua, which is
+a Lua alternative.
+
+Example (on UNIX like systems):
+
+unzip glossaries.tds.zip -d ~/texmf/
+
+A minimal example file called minimalgls.tex is provided for testing
+and debugging purposes and can be found in the package documentation
+samples directory (doc/latex/glossaries/samples/). To test your
+installation do:
+
+latex minimalgls
+makeglossaries minimalgls
+latex minimalgls
+
+The LaTeX2HTML style file, glossaries.perl, is located in
+source/latex/glossaries and should go in the LaTeX2HTML styles
+directory, if required.
+
+INSTALLING FROM DTX AND INS
+===========================
+
+Run LaTeX on glossaries.ins to generate the package style files,
+sample files and LaTeX2HTML style file:
+
+latex glossaries.ins
+
+To create the package documentation (glossaries-code.pdf):
+
+pdflatex -jobname glossaries-code glossaries.dtx
+makeindex -s gind.ist glossaries.idx
+makeindex -s gglo.ist -o glossaries.gls glossaries.glo
+makeglossaries glossaries
+pdflatex -jobname glossaries-code glossaries.dtx
+pdflatex -jobname glossaries-code glossaries.dtx
+
+If TEXMF denotes the base directory of your local TeX installation (e.g.
+/usr/share/texmf-local/ or C:\localtexmf\) then create the following
+directories (if they don't already exist):
+
+TEXMF/doc/latex/glossaries
+TEXMF/doc/latex/glossaries/samples
+TEXMF/tex/latex/glossaries
+TEXMF/tex/latex/glossaries/base
+TEXMF/tex/latex/glossaries/expl
+TEXMF/tex/latex/glossaries/styles
+TEXMF/tex/latex/glossaries/test-entries
+
+Move the example-glossaries-*.tex files to
+TEXMF/tex/latex/glossaries/test-entries/
+
+Move the sample files (*.tex) to TEXMF/doc/latex/glossaries/sample/
+
+Move the documentation (*.pdf) to TEXMF/doc/latex/glossaries/
+
+Move glossaries.sty, glossaries-babel.sty,
+glossaries-polyglossia.sty, glossaries-compatible-207.sty,
+glossaries-compatible-307.sty,
+mfirstuc.sty and mfirstuc-english.sty to
+TEXMF/tex/latex/glossaries/base/
+
+Move glossaries-accsupp.sty to
+TEXMF/tex/latex/glossaries/expl/
+
+Move the other style files (glossary-*.sty) to
+TEXMF/tex/latex/glossaries/styles/
+
+Move makeglossaries to somewhere on your path, e.g. /usr/bin/.
+
+If you are a Windows user, you will also need to move
+makeglossaries.bat to the same location as makeglossaries, but you
+will need to have Perl installed to be able to use makeglossaries.
+(It is possible to use makeindex or xindy directly if you don't have
+Perl installed. See the manual, glossaries.pdf, for details.)
+
+A minimal example file called minimalgls.tex is provided for testing
+and debugging purposes. This file is created along with all the other
+sample files when you run glossaries.ins through LaTeX. To test your
+installation do:
+
+latex minimalgls
+makeglossaries minimalgls
+latex minimalgls
+
+If you want to use the glossaries package with LaTeX2HTML:
+move glossaries.perl to the LaTeX2HTML styles directory.
diff --git a/macros/latex/contrib/glossaries/README b/macros/latex/contrib/glossaries/README
new file mode 100644
index 0000000000..4f0e0ea8e5
--- /dev/null
+++ b/macros/latex/contrib/glossaries/README
@@ -0,0 +1,81 @@
+LaTeX Package : glossaries v4.42
+
+Last Modified : 2019-01-06
+
+Author : Nicola Talbot
+
+Package FAQ : http://www.dickimaw-books.com/faqs/glossariesfaq.html
+
+This package is provided to assist generating glossaries.
+The package supports abbreviations and multiple glossaries.
+New entries are defined to have a name and description (and
+optionally an associated symbol). Plural forms can also be
+specified. New glossary styles can be defined, and preambles
+and postambles can be specified. There is provision for loading
+a database of terms, only terms used in the text will be added
+to the relevant glossary.
+
+*This package replaces the glossary package which is now obsolete.*
+
+glossaries-accsupp.sty is an experimental package that uses the
+accsupp package to provide accessibility support for the
+glossaries package.
+
+The glossaries package may be extended with the
+separately-distributed glossaries-extra package
+(https://ctan.org/pkg/glossaries-extra), which provides
+more options and improved abbreviation handling.
+
+The mfirstuc package is now a separate bundle
+(https://ctan.org/pkg/mfirstuc).
+
+INSTALLATION
+
+See INSTALL file for installation instructions.
+
+REQUIREMENTS
+
+mfirstuc
+ifthen
+xkeyval *at least version 2.5f (2006/11/18)*
+xfor
+amsgen
+etoolbox
+longtable (unless you use the nolong or nostyles package options)
+datatool-base
+textcase
+tracklang (to determine if any language modules need to be loaded)
+
+If the supertabular package is installed, it will also be loaded
+unless the nosuper or nostyles package options are used. If the
+supertabular package isn't installed, you can still use the
+glossaries package, but you won't be able to use any of the styles
+defined in glossaries-super.sty. If you want to use
+glossary-longragged.sty or glossary-superragged.sty you will also
+need the array package. If you want to use glossary-mcols you will
+also need the multicol package.
+
+Note that the current version of the glossaries package doesn't
+load xspace.
+
+If you want to use the experimental glossaries-accsupp.sty
+you will also need the accsupp package.
+
+LaTeX2HTML
+
+This package comes with a LaTeX2HTML style file glossaries.perl
+which should be placed in the relevant LaTeX2HTML
+styles directory, but note that these styles only supply a sub-set
+of the commands provided by glossaries.sty, so some
+commands may not be implemented or may be implemented in a different
+way. This file has not be tested with recent versions of
+LaTeX2HTML and may no longer be compatible.
+
+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/glossaries-code.pdf b/macros/latex/contrib/glossaries/glossaries-code.pdf
new file mode 100644
index 0000000000..4401858727
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossaries-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/glossaries-user.html b/macros/latex/contrib/glossaries/glossaries-user.html
new file mode 100644
index 0000000000..df8866e01c
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossaries-user.html
@@ -0,0 +1,31130 @@
+<?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-user.tex" />
+
+<style type="text/css">
+<!--
+
+/* start css.sty */
+.cmr-7{font-size:70%;}
+.cmmi-7{font-size:70%;font-style: italic;}
+.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;}
+.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;}
+.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;}
+.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;}
+.cmssbx-10{ font-family: sans-serif; font-weight: bold;}
+.cmr-9{font-size:90%;}
+.tcrm-0800{font-size:80%;}
+.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;}
+.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;}
+.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;}
+.cmss-9{font-size:90%; font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.tcrm-0900{font-size:90%;}
+.cmmi-9{font-size:90%;font-style: italic;}
+.msam-10x-x-90{font-size:90%;}
+.pzdr-x-x-90{font-size:90%;}
+.cmbx-12{font-size:120%; font-weight: bold;}
+.cmbx-12{ font-weight: bold;}
+.cmitt-10{font-family: monospace; font-style: italic;}
+.cmbxti-10{ font-weight: bold; font-style: italic;}
+.cmssbx-10x-x-120{font-size:120%; font-family: sans-serif; font-weight: bold;}
+.cmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
+.cmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
+.cmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
+.cmssbx-10x-x-120{ font-family: sans-serif; font-weight: bold;}
+.small-caps{font-variant: small-caps; }
+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%;}
+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; }
+div.array {text-align:center;}
+.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#textcolor1{color:#00FF00}
+span#textcolor2{color:#00FF00}
+span#textcolor3{color:#00FF00}
+span#textcolor4{color:#FF0000}
+span#textcolor5{color:#FF0000}
+span#textcolor6{color:#00FF00}
+span#textcolor7{color:#FF0000}
+span#textcolor8{color:#FF0000}
+span#textcolor9{color:#FF0000}
+span#textcolor10{color:#00FF00}
+span#textcolor11{color:#00FF00}
+span#textcolor12{color:#00FF00}
+span#textcolor13{color:#FF0000}
+span#textcolor14{color:#00FF00}
+span#textcolor15{color:#00FF00}
+span#textcolor16{color:#00FF00}
+span#textcolor17{color:#00FF00}
+span#textcolor18{color:#00FF00}
+span#textcolor19{color:#FF0000}
+span#textcolor20{color:#00FF00}
+span#textcolor21{color:#FF0000}
+span#textcolor22{color:#FF0000}
+span#textcolor23{color:#00FF00}
+span#textcolor24{color:#00FF00}
+span#textcolor25{color:#FF0000}
+span#textcolor26{color:#00FF00}
+span#textcolor27{color:#00FF00}
+span#textcolor28{color:#00FF00}
+span#textcolor29{color:#00FF00}
+span#textcolor30{color:#FF0000}
+span#textcolor31{color:#FF0000}
+span#textcolor32{color:#00FF00}
+span#textcolor33{color:#FF0000}
+span#textcolor34{color:#FF0000}
+span#textcolor35{color:#FF0000}
+span#textcolor36{color:#00FF00}
+span#textcolor37{color:#00FF00}
+span#textcolor38{color:#00FF00}
+span#textcolor39{color:#00FF00}
+span#textcolor40{color:#FF0000}
+span#textcolor41{color:#00FF00}
+span#textcolor42{color:#00FF00}
+span#textcolor43{color:#FF0000}
+span#textcolor44{color:#00FF00}
+span#textcolor45{color:#00FF00}
+span#textcolor46{color:#00FF00}
+span#textcolor47{color:#FF0000}
+span#textcolor48{color:#00FF00}
+span#textcolor49{color:#FF0000}
+span#textcolor50{color:#00FF00}
+span#textcolor51{color:#00FF00}
+span#textcolor52{color:#00FF00}
+span#textcolor53{color:#00FF00}
+span#textcolor54{color:#FF0000}
+span#textcolor55{color:#FF0000}
+span#textcolor56{color:#00FF00}
+span#textcolor57{color:#FF0000}
+span#textcolor58{color:#00FF00}
+span#textcolor59{color:#FF0000}
+span#textcolor60{color:#FF0000}
+span#textcolor61{color:#00FF00}
+span#textcolor62{color:#00FF00}
+/* end css.sty */
+
+
+-->
+</style>
+</head><body
+>
+<!--l. 458--><p class="noindent" ><a
+ id="top"></a>
+</p><!--l. 458--><p class="indent" >
+
+
+</p><!--l. 458--><p class="indent" >
+
+
+</p>
+<div class="center"
+>
+<!--l. 458--><p class="noindent" >
+</p><!--l. 458--><p class="noindent" ><span
+class="cmr-17">User Manual for glossaries.sty v4.42</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
+ style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-2-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. 458--><p class="noindent" ><span
+class="cmr-12">2019-01-06</span></p></div>
+ <div
+class="abstract"
+>
+<!--l. 460--><p class="indent" >
+
+
+</p>
+<div class="center"
+>
+<!--l. 460--><p class="noindent" >
+</p><!--l. 460--><p class="noindent" ><span
+class="cmbx-10">Abstract</span></p></div>
+<!--l. 461--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>package provides a means to define terms or abbreviations or symbols that can be
+referenced within your document. Sorted lists with collated <a
+href="#glo:entrylocation">locations</a> can be generated either
+using <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;or using a supplementary <a
+href="#glo:indexingapp">indexing application</a>.
+</p><!--l. 466--><p class="indent" > Additional features not provided here may be available through the extension package
+<a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> which, if required, needs to be installed separately. New features will be added
+to <span
+class="cmss-10">glossaries-extra</span>. Versions of the <span
+class="cmss-10">glossaries </span>package after v4.21 will mostly be just bug fixes.
+Note that <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> provides an extra indexing option (<a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2"></a></a>) which isn&#8217;t available
+with just the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-3"></a> package.
+</p><!--l. 474--><p class="indent" >
+
+
+</p>
+ </div>
+<!--l. 476--><p class="indent" > If you require multilingual support you must also separately install the relevant language
+module. Each language module is distributed under the name <span
+class="cmtt-10">glossaries-</span>&#x27E8;<span
+class="cmti-10">language</span>&#x27E9;,
+where &#x27E8;<span
+class="cmti-10">language</span>&#x27E9; is the root language name. For example, <span
+class="cmtt-10">glossaries-french </span>or
+<span
+class="cmtt-10">glossaries-german</span>. If a language module is required, the <span
+class="cmss-10">glossaries </span>package will
+automatically try to load it and will give a warning if the module isn&#8217;t found. See <a
+href="#sec:languages"><span
+class="tcrm-1000">&sect;</span>1.4
+</a><a
+href="#sec:languages">Multi-Lingual Support<!--tex4ht:ref: sec:languages --></a> for further details. If there isn&#8217;t any support available for your
+language, use the <span
+class="cmss-10">nolangwarn</span><a
+ id="dx1-4"></a> package option to suppress the warning and provide your own
+translations. (For example, use the <span
+class="cmss-10">title</span><a
+ id="dx1-5"></a> key in <span
+class="cmtt-10">\printglossary</span>.)
+</p><!--l. 489--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package requires a number of other packages including, but not limited to,
+<span
+class="cmss-10">tracklang</span><a
+ id="dx1-6"></a>, <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-7"></a>, <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-8"></a>, <span
+class="cmss-10">xkeyval</span><a
+ id="dx1-9"></a> (at least version dated 2006/11/18), <span
+class="cmss-10">textcase</span><a
+ id="dx1-10"></a>, <span
+class="cmss-10">xfor</span><a
+ id="dx1-11"></a>,
+<span
+class="cmss-10">datatool-base</span><a
+ id="dx1-12"></a> (part of the <span
+class="cmss-10">datatool</span><a
+ id="dx1-13"></a> bundle) and <span
+class="cmss-10">amsgen</span><a
+ id="dx1-14"></a>. These packages are all available in the
+latest <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 (for Linux users) <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>.
+</p><!--l. 504--><p class="indent" > Note that occasionally you may find that certain packages need to be loaded <span
+class="cmti-10">after</span>
+packages that are required by <span
+class="cmss-10">glossaries</span>. For example, a package &#x27E8;<span
+class="cmti-10">X</span>&#x27E9; might need to be loaded
+after <span
+class="cmss-10">amsgen</span><a
+ id="dx1-15"></a>. In which case, load the required package first (for example, <span
+class="cmss-10">amsgen</span><a
+ id="dx1-16"></a>), then &#x27E8;<span
+class="cmti-10">X</span>&#x27E9;,
+and finally load <span
+class="cmss-10">glossaries</span>.
+</p><!--l. 510--><p class="indent" > <div class="important" title="Important Note"> Documents have wide-ranging styles when it comes to presenting glossaries or lists of
+terms or notation. People have their own preferences and to a large extent this
+is determined by the kind of information that needs to go in the glossary. They
+may just have symbols with terse descriptions or they may have long technical
+words with complicated descriptions. The <span
+class="cmss-10">glossaries </span>package is flexible enough to
+accommodate such varied requirements, but this flexibility comes at a price: a&#x00A0;big
+manual.
+</p><!--l. 520--><p class="indent" > &#x1F631;&#x00A0;If you&#8217;re freaking out at the size of this manual, start with <span
+class="cmtt-10">glossariesbegin.pdf </span>(&#8220;The
+glossaries package: a guide for beginnners&#8221;). You should find it in the same directory as this
+document or try <span
+class="cmtt-10">texdoc glossariesbegin.pdf</span>. Once you&#8217;ve got to grips with
+the basics, then come back to this manual to find out how to adjust the settings.
+</div>
+</p><!--l. 526--><p class="noindent" >
+</p><!--l. 528--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>bundle comes with the following documentation:
+ </p><dl class="description"><dt class="description">
+<a
+href="glossariesbegin.pdf" class="url" ><span
+class="cmtt-10">glossariesbegin.pdf</span></a> </dt><dd
+class="description">If you are a complete beginner, start with <a
+href="glossariesbegin.html" >&#8220;The glossaries
+ package: a guide for beginners&#8221;</a>.
+ </dd><dt class="description">
+<a
+href="glossary2glossaries.pdf" class="url" ><span
+class="cmtt-10">glossary2glossaries.pdf</span></a> </dt><dd
+class="description">If you are moving over from the obsolete <span
+class="cmss-10">glossary</span><a
+ id="dx1-17"></a> package,
+ read <a
+href="glossary2glossaries.html" >&#8220;Upgrading from the glossary package to the glossaries package&#8221;</a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">glossaries-user.pdf</span> </dt><dd
+class="description">This document is the main user guide for the <span
+class="cmss-10">glossaries </span>package.
+
+
+ </dd><dt class="description">
+<a
+href="glossaries-code.pdf" class="url" ><span
+class="cmtt-10">glossaries-code.pdf</span></a> </dt><dd
+class="description">Advanced users wishing to know more about the inner workings
+ of all the packages provided in the <span
+class="cmss-10">glossaries </span>bundle should read &#8220;Documented
+ Code for glossaries v4.42&#8221;.
+ </dd><dt class="description">
+<span
+class="cmbx-10">INSTALL</span> </dt><dd
+class="description">Installation instructions.
+ </dd><dt class="description">
+<span
+class="cmbx-10">CHANGES</span> </dt><dd
+class="description">Change log.
+ </dd><dt class="description">
+<span
+class="cmbx-10">README</span> </dt><dd
+class="description">Package summary.
+ </dd></dl>
+<!--l. 557--><p class="noindent" >Related resources: </p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmss-10">glossaries-extra </span>and <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-18"></a></a>: 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="http://www.dickimaw-books.com/faqs/glossariesfaq.html" ><span
+class="cmss-10">glossaries </span>FAQ</a>
+ </li>
+ <li class="itemize"><a
+href="http://www.dickimaw-books.com/gallery/#glossaries" ><span
+class="cmss-10">glossaries </span>gallery</a>
+ </li>
+ <li class="itemize"><a
+href="http://www.dickimaw-books.com/gallery/glossaries-styles/" >a summary of all glossary styles provided by <span
+class="cmss-10">glossaries</span></a>
+ </li>
+ <li class="itemize"><a
+href="http://www.dickimaw-books.com/gallery/glossaries-performance.shtml" ><span
+class="cmss-10">glossaries </span>performance</a> (comparing document build times for the different options
+ provided by <span
+class="cmss-10">glossaries </span>and <span
+class="cmss-10">glossaries-extra</span>).
+ </li>
+ <li class="itemize"><a
+href="http://www.dickimaw-books.com/latex/thesis/" >Using LaTeX to Write a PhD Thesis</a> (chapter 6).
+ </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://ctan.org/pkg/glossaries-extra" ><span
+class="cmss-10">glossaries-extra </span>package</a>
+ </li>
+ <li class="itemize"><a
+href="http://ctan.org/pkg/bib2gls" ><span
+class="cmtt-10">bib2gls</span></a></li></ul>
+<!--l. 590--><p class="indent" > <div class="important" title="Important Note"> If you use <span
+class="cmss-10">hyperref</span><a
+ id="dx1-19"></a> and <span
+class="cmss-10">glossaries</span>, you must load <span
+class="cmss-10">hyperref</span><a
+ id="dx1-20"></a> <span
+class="cmti-10">first</span>. Similarly the <span
+class="cmss-10">doc</span><a
+ id="dx1-21"></a> package
+must also be loaded before <span
+class="cmss-10">glossaries</span>. (If <span
+class="cmss-10">doc</span><a
+ id="dx1-22"></a> is loaded, the file extensions for the default main
+glossary are changed to <span
+class="cmtt-10">gls2</span><a
+ id="dx1-23"></a>, <span
+class="cmtt-10">glo2</span><a
+ id="dx1-24"></a> and <span
+class="cmtt-10">.glg2</span><a
+ id="dx1-25"></a> to avoid conflict with <span
+class="cmss-10">doc</span><a
+ id="dx1-26"></a>&#8217;s changes
+glossary.)<a
+ id="pdflatexnote"></a>
+
+
+</p><!--l. 599--><p class="indent" > If you are using <span
+class="cmss-10">hyperref</span><a
+ id="dx1-27"></a>, it&#8217;s best to use <span
+class="cmtt-10">pdflatex</span><a
+ id="dx1-28"></a> rather than <span
+class="cmtt-10">latex</span><a
+ id="dx1-29"></a> (DVI format) as
+<span
+class="cmtt-10">pdflatex </span>deals with hyperlinks much better. If you use the DVI format, you will encounter
+problems where you have long hyperlinks or hyperlinks in subscripts or superscripts. This is
+an issue with the DVI format not with <span
+class="cmss-10">glossaries</span>. If you really need to use the DVI format and
+have a problem with hyperlinks in maths mode, I recommend you use <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> with the
+<span
+class="cmtt-10">hyperoutside </span>and <span
+class="cmtt-10">textformat </span>attributes set to appropriate values for problematic entries.
+</div>
+</p><!--l. 609--><p class="noindent" >
+
+
+
+
+</p>
+ <h2 class="likechapterHead"><a
+ id="x1-1000"></a>Contents</h2>
+ <div class="tableofcontents">
+ <span class="chapterToc" > <a
+href="#Q1-1-3">Glossary</a></span>
+<br /> <span class="chapterToc" >1 <a
+href="#sec:intro" id="QQ2-1-5">Introduction</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.1 <a
+href="#sec:indexingoptions" id="QQ2-1-6">Indexing Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.2 <a
+href="#sec:samples" id="QQ2-1-13">Sample Documents</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.3 <a
+href="#sec:lipsum" id="QQ2-1-14">Dummy Entries for Testing</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.4 <a
+href="#sec:languages" id="QQ2-1-15">Multi-Lingual Support</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >1.4.1 <a
+href="#sec:fixednames" id="QQ2-1-16">Changing the Fixed Names</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.5 <a
+href="#sec:makeglossaries" id="QQ2-1-19">Generating the Associated Glossary Files</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >1.5.1 <a
+href="#sec:makeglossariesapp" id="QQ2-1-21">Using the makeglossaries Perl Script</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >1.5.2 <a
+href="#sec:makeglossarieslua" id="QQ2-1-22">Using the makeglossaries-lite Lua Script</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >1.5.3 <a
+href="#sec:xindyapp" id="QQ2-1-23">Using xindy explicitly (Option&#x00A0;3)</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >1.5.4 <a
+href="#sec:makeindexapp" id="QQ2-1-24">Using makeindex explicitly (Option&#x00A0;2)</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >1.5.5 <a
+href="#sec:notedev" id="QQ2-1-25">Note to Front-End and Script Developers</a></span>
+<br /> <span class="chapterToc" >2 <a
+href="#sec:pkgopts" id="QQ2-1-26">Package Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.1 <a
+href="#sec:pkgopts-general" id="QQ2-1-27">General Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.2 <a
+href="#sec:pkgopts-sec" id="QQ2-1-28">Sectioning, Headings and TOC Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.3 <a
+href="#sec:pkgopts-printglos" id="QQ2-1-29">Glossary Appearance Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.4 <a
+href="#sec:pkgopts-sort" id="QQ2-1-30">Sorting Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.5 <a
+href="#sec:pkgopts-acronym" id="QQ2-1-31">Acronym Options</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >2.5.1 <a
+href="#sec:pkgopts-old-acronym" id="QQ2-1-32">Deprecated Acronym Style Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.6 <a
+href="#sec:pkgopts-other" id="QQ2-1-33">Other Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.7 <a
+href="#sec:setupglossaries" id="QQ2-1-34">Setting Options After the Package is Loaded</a></span>
+<br /> <span class="chapterToc" >3 <a
+href="#sec:setup" id="QQ2-1-35">Setting Up</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.1 <a
+href="#sec:setupopt1" id="QQ2-1-36">Option 1</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.2 <a
+href="#sec:setupopt23" id="QQ2-1-37">Options 2 and 3</a></span>
+<br /> <span class="chapterToc" >4 <a
+href="#sec:newglosentry" id="QQ2-1-38">Defining Glossary Entries</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.1 <a
+href="#sec:plurals" id="QQ2-1-39">Plurals</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.2 <a
+href="#sec:grammar" id="QQ2-1-40">Other Grammatical Constructs</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.3 <a
+href="#sec:addkey" id="QQ2-1-41">Additional Keys</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.3.1 <a
+href="#sec:glsaddkey" id="QQ2-1-42">Document Keys</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.3.2 <a
+href="#sec:glsaddstoragekey" id="QQ2-1-43">Storage Keys</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.4 <a
+href="#sec:expansion" id="QQ2-1-44">Expansion</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.5 <a
+href="#sec:subentries" id="QQ2-1-46">Sub-Entries</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.5.1 <a
+href="#sec:hierarchical" id="QQ2-1-47">Hierarchical Categories</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.5.2 <a
+href="#sec:homographs" id="QQ2-1-48">Homographs</a></span>
+
+
+<br /> &#x00A0;<span class="sectionToc" >4.6 <a
+href="#sec:loadglsentries" id="QQ2-1-49">Loading Entries From a File</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.7 <a
+href="#sec:moveentry" id="QQ2-1-50">Moving Entries to Another Glossary</a></span>
+<br /> &#x00A0;<span class="sectionToc" >4.8 <a
+href="#sec:docdefs" id="QQ2-1-51">Drawbacks With Defining Entries in the Document Environment</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.8.1 <a
+href="#sec:techissues" id="QQ2-1-52">Technical Issues</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >4.8.2 <a
+href="#sec:goodpractice" id="QQ2-1-53">Good Practice Issues</a></span>
+<br /> <span class="chapterToc" >5 <a
+href="#sec:numberlists" id="QQ2-1-54">Number lists</a></span>
+<br /> &#x00A0;<span class="sectionToc" >5.1 <a
+href="#sec:encap" id="QQ2-1-55">Encap Values</a></span>
+<br /> &#x00A0;<span class="sectionToc" >5.2 <a
+href="#sec:locationsyntax" id="QQ2-1-56">Locations</a></span>
+<br /> &#x00A0;<span class="sectionToc" >5.3 <a
+href="#sec:ranges" id="QQ2-1-57">Range Formations</a></span>
+<br /> &#x00A0;<span class="sectionToc" >5.4 <a
+href="#sec:isthook" id="QQ2-1-58">Style Hook</a></span>
+<br /> <span class="chapterToc" >6 <a
+href="#sec:glslink" id="QQ2-1-59">Links to Glossary Entries</a></span>
+<br /> &#x00A0;<span class="sectionToc" >6.1 <a
+href="#sec:gls-like" id="QQ2-1-61">The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use Flag Queried)</a></span>
+<br /> &#x00A0;<span class="sectionToc" >6.2 <a
+href="#sec:glstext-like" id="QQ2-1-62">The <span
+class="cmtt-10">\glstext</span>-Like Commands (First Use Flag Not Queried)</a></span>
+<br /> &#x00A0;<span class="sectionToc" >6.3 <a
+href="#sec:glsdisplay" id="QQ2-1-63">Changing the format of the link text</a></span>
+<br /> &#x00A0;<span class="sectionToc" >6.4 <a
+href="#sec:disablehyperlinks" id="QQ2-1-64">Enabling and disabling hyperlinks to glossary entries</a></span>
+<br /> <span class="chapterToc" >7 <a
+href="#sec:glsadd" id="QQ2-1-65">Adding an Entry to the Glossary Without Generating Text</a></span>
+<br /> <span class="chapterToc" >8 <a
+href="#sec:crossref" id="QQ2-1-66">Cross-Referencing Entries</a></span>
+<br /> &#x00A0;<span class="sectionToc" >8.1 <a
+href="#sec:customxr" id="QQ2-1-67">Customising Cross-reference Text</a></span>
+<br /> <span class="chapterToc" >9 <a
+href="#sec:glsnolink" id="QQ2-1-68">Using Glossary Terms Without Links</a></span>
+<br /> <span class="chapterToc" >10 <a
+href="#sec:printglossary" id="QQ2-1-69">Displaying a glossary</a></span>
+<br /> <span class="chapterToc" >11 <a
+href="#sec:xindy" id="QQ2-1-70">Xindy (Option 3)</a></span>
+<br /> &#x00A0;<span class="sectionToc" >11.1 <a
+href="#sec:langenc" id="QQ2-1-71">Language and Encodings</a></span>
+<br /> &#x00A0;<span class="sectionToc" >11.2 <a
+href="#sec:xindyloc" id="QQ2-1-72">Locations and Number lists</a></span>
+<br /> &#x00A0;<span class="sectionToc" >11.3 <a
+href="#sec:groups" id="QQ2-1-73">Glossary Groups</a></span>
+<br /> <span class="chapterToc" >12 <a
+href="#sec:newglossary" id="QQ2-1-74">Defining New Glossaries</a></span>
+<br /> <span class="chapterToc" >13 <a
+href="#sec:acronyms" id="QQ2-1-75">Acronyms and Other Abbreviations</a></span>
+<br /> &#x00A0;<span class="sectionToc" >13.1 <a
+href="#sec:setacronymstyle" id="QQ2-1-77">Changing the Abbreviation Style</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >13.1.1 <a
+href="#sec:predefinedacrstyles" id="QQ2-1-78">Predefined Acronym Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >13.1.2 <a
+href="#sec:customacronym" id="QQ2-1-79">Defining A Custom Acronym Style</a></span>
+<br /> &#x00A0;<span class="sectionToc" >13.2 <a
+href="#sec:disploa" id="QQ2-1-80">Displaying the List of Acronyms</a></span>
+<br /> &#x00A0;<span class="sectionToc" >13.3 <a
+href="#sec:oldacronym" id="QQ2-1-81">Upgrading From the glossary Package</a></span>
+<br /> <span class="chapterToc" >14 <a
+href="#sec:glsunset" id="QQ2-1-83">Unsetting and Resetting Entry Flags</a></span>
+<br /> &#x00A0;<span class="sectionToc" >14.1 <a
+href="#sec:enableentrycount" id="QQ2-1-84">Counting the Number of Times an Entry has been Used (First Use Flag Unset)</a></span>
+<br /> <span class="chapterToc" >15 <a
+href="#sec:styles" id="QQ2-1-85">Glossary Styles</a></span>
+<br /> &#x00A0;<span class="sectionToc" >15.1 <a
+href="#sec:predefinedstyles" id="QQ2-1-86">Predefined Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.1 <a
+href="#sec:liststyles" id="QQ2-1-88">List Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.2 <a
+href="#sec:longstyles" id="QQ2-1-89">Longtable Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.3 <a
+href="#sec:longraggedstyles" id="QQ2-1-90">Longtable Styles (Ragged Right)</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.4 <a
+href="#sec:longbooktabsstyles" id="QQ2-1-91">Longtable Styles (<span
+class="cmss-10">booktabs</span>)</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.5 <a
+href="#sec:superstyles" id="QQ2-1-92">Supertabular Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.6 <a
+href="#sec:superraggedstyles" id="QQ2-1-93">Supertabular Styles (Ragged Right)</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.7 <a
+href="#sec:treestyles" id="QQ2-1-94">Tree-Like Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.8 <a
+href="#sec:mcolstyles" id="QQ2-1-95">Multicols Style</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >15.1.9 <a
+href="#sec:inline" id="QQ2-1-97">In-Line Style</a></span>
+<br /> &#x00A0;<span class="sectionToc" >15.2 <a
+href="#sec:newglossarystyle" id="QQ2-1-98">Defining your own glossary style</a></span>
+<br /> <span class="chapterToc" >16 <a
+href="#sec:utilities" id="QQ2-1-99">Utilities</a></span>
+
+
+<br /> &#x00A0;<span class="sectionToc" >16.1 <a
+href="#sec:loops" id="QQ2-1-100">Loops</a></span>
+<br /> &#x00A0;<span class="sectionToc" >16.2 <a
+href="#sec:conditionals" id="QQ2-1-101">Conditionals</a></span>
+<br /> &#x00A0;<span class="sectionToc" >16.3 <a
+href="#sec:fetchset" id="QQ2-1-102">Fetching and Updating the Value of a Field</a></span>
+<br /> <span class="chapterToc" >17 <a
+href="#sec:prefix" id="QQ2-1-103">Prefixes or Determiners</a></span>
+<br /> <span class="chapterToc" >18 <a
+href="#sec:accsupp" id="QQ2-1-104">Accessibility Support</a></span>
+<br /> <span class="chapterToc" >19 <a
+href="#sec:trouble" id="QQ2-1-105">Troubleshooting</a></span>
+ </div>
+
+
+
+
+
+
+ <h2 class="likechapterHead"><a
+ id="x1-2000"></a>List of Tables</h2>
+ <div class="tableofcontents"><span class="lotToc" >1.1&#x00A0;<a
+href="#tab:options">Glossary Options: Pros and Cons</a></span><br /><span class="lotToc" >1.2&#x00A0;<a
+href="#tab:predefinednames">Customised Text</a></span><br /><span class="lotToc" >1.3&#x00A0;<a
+href="#tab:makeglossariesCmds">Commands
+and package options that have no effect when using xindy or makeindex
+explicitly</a></span><br /><span class="lotToc" >4.1&#x00A0;<a
+href="#tab:fieldmap">Key to Field Mappings</a></span><br /><span class="lotToc" >6.1&#x00A0;<a
+href="#tab:hyperxx">Predefined Hyperlinked Location
+Formats</a></span><br /><span class="lotToc" >13.1&#x00A0;<a
+href="#tab:shortcuts">Synonyms provided by the package option <span
+class="cmss-10">shortcuts</span></a></span><br /><span class="lotToc" >13.2&#x00A0;<a
+href="#tab:xspace">The
+effect of using xspace</a></span><br /><span class="lotToc" >15.1&#x00A0;<a
+href="#tab:styles">Glossary Styles</a></span><br /><span class="lotToc" >15.2&#x00A0;<a
+href="#tab:mcols">Multicolumn Styles</a></span><br />
+ </div>
+
+
+
+
+<!--l. 1--><p class="indent" > <a
+ id="likesection.1"></a><a
+ id="Q1-1-3"></a>
+
+
+</p>
+ <h2 class="likechapterHead"><a
+ id="x1-3000"></a>Glossary</h2>
+<!--l. 1--><p class="noindent" ><span
+class="cmti-10">This glossary style was setup using:</span> </p>
+<table
+cellpadding="0" border="0" cellspacing="0"
+class="tabbing"><tr
+style="vertical-align:baseline;" class="tabbing"><td style="width:94;"
+class="tabbing"><span
+class="cmtt-10">\usepackage[</span></td><td
+class="tabbing"><span
+class="cmtt-10">xindy,</span>
+</td></tr></table>
+<!--l. 1--><p class="indent" > </p><table
+cellpadding="0" border="0" cellspacing="0"
+class="tabbing"><tr
+style="vertical-align:baseline;" class="tabbing"><td style="width:94;"
+class="tabbing"> </td><td
+class="tabbing"><span
+class="cmtt-10">nonumberlist,</span></td></tr></table>
+<!--l. 1--><p class="indent" > </p><table
+cellpadding="0" border="0" cellspacing="0"
+class="tabbing"><tr
+style="vertical-align:baseline;" class="tabbing"><td style="width:94;"
+class="tabbing"></td><td
+class="tabbing"><span
+class="cmtt-10">toc,</span></td></tr></table>
+<!--l. 1--><p class="indent" > </p><table
+cellpadding="0" border="0" cellspacing="0"
+class="tabbing"><tr
+style="vertical-align:baseline;" class="tabbing"><td style="width:94;"
+class="tabbing"></td><td
+class="tabbing"><span
+class="cmtt-10">nopostdot,</span></td></tr></table>
+<!--l. 1--><p class="indent" > </p><table
+cellpadding="0" border="0" cellspacing="0"
+class="tabbing"><tr
+style="vertical-align:baseline;" class="tabbing"><td style="width:94;"
+class="tabbing"></td><td
+class="tabbing"><span
+class="cmtt-10">style=altlist,</span></td></tr></table>
+<!--l. 1--><p class="indent" > </p><table
+cellpadding="0" border="0" cellspacing="0"
+class="tabbing"><tr
+style="vertical-align:baseline;" class="tabbing"><td style="width:94;"
+class="tabbing"></td><td
+class="tabbing"><span
+class="cmtt-10">nogroupskip]</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">glossaries</span><span
+class="cmsy-10">}</span></td></tr></table>
+<!--l. 1--><p class="indent" >
+ </p><dl class="description"><dt class="description">
+<a
+ id="glo:bib2gls"></a><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3001"></a> </dt><dd
+class="description"><br
+class="newline" />An <a
+href="#glo:indexingapp">indexing application</a> that combines two functions in one: (1) fetches entry
+ definition from a <span
+class="cmtt-10">.bib </span>file based on information provided in the <span
+class="cmtt-10">.aux </span>file (similar
+ to <span
+class="cmtt-10">bibtex</span>); (2) hierarchically sorts and collates location lists (similar to <span
+class="cmtt-10">makeindex</span>
+ and <span
+class="cmtt-10">xindy</span>). This application is designed for use with <span
+class="cmss-10">glossaries-extra </span>and can&#8217;t be
+ used with just the base <span
+class="cmss-10">glossaries </span>package. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:cli"></a><span
+class="cmbx-10">Command Line Interface (CLI)</span> </dt><dd
+class="description"><br
+class="newline" />An application that doesn&#8217;t have a graphical user interface. That is, an application
+ that doesn&#8217;t have any windows, buttons or menus and can be run in <a
+href="http://www.dickimaw-books.com/latex/novices/html/terminal.html" >a command
+ prompt or terminal</a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:entrylocation"></a><span
+class="cmbx-10">Entry location</span><a
+ id="dx1-3002"></a> </dt><dd
+class="description"><br
+class="newline" />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. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:exlatinalph"></a><span
+class="cmbx-10">Extended Latin Alphabet</span><a
+ id="dx1-3003"></a> </dt><dd
+class="description"><br
+class="newline" />An alphabet consisting of <a
+href="#glo:latinchar">Latin character<a
+ id="dx1-3004"></a>s</a> and <a
+href="#glo:exlatinchar">extended Latin character<a
+ id="dx1-3005"></a>s</a>. <br
+class="newline" />
+
+
+ </dd><dt class="description">
+<a
+ id="glo:exlatinchar"></a><span
+class="cmbx-10">Extended Latin Character</span><a
+ id="dx1-3006"></a> </dt><dd
+class="description"><br
+class="newline" />A character that&#8217;s created by combining <a
+href="#glo:latinchar">Latin character<a
+ id="dx1-3007"></a>s</a> to form ligatures (e.g.&#x00A0;&aelig;)
+ or by applying diacritical marks to a&#x00A0;Latin character<a
+ id="dx1-3008"></a> or characters (e.g.&#x00A0;&aacute; or &oslash;).
+ See also <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-3009"></a></a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:firstuse"></a><span
+class="cmbx-10">First use</span><a
+ id="dx1-3010"></a> </dt><dd
+class="description"><br
+class="newline" />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-3011"></a>, <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-3012"></a>, <span
+class="cmtt-10">\GLS</span><a
+ id="dx1-3013"></a>, <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-3014"></a>, <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-3015"></a>,
+ <span
+class="cmtt-10">\GLSpl</span><a
+ id="dx1-3016"></a> or <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-3017"></a>. (See <a
+href="#glo:firstuseflag">first use flag</a> &amp; <a
+href="#glo:firstusetext">first use text</a>.) <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:firstuseflag"></a><span
+class="cmbx-10">First use flag</span><a
+ id="dx1-3018"></a> </dt><dd
+class="description"><br
+class="newline" />A conditional that determines whether or not the entry has been used according
+ to the rules of <a
+href="#glo:firstuse">first use</a>. Commands to unset or reset this conditional are described
+ in <a
+href="#sec:glsunset"><span
+class="tcrm-1000">&sect;</span>14 </a><a
+href="#sec:glsunset">Unsetting and Resetting Entry Flags<!--tex4ht:ref: sec:glsunset --></a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:firstusetext"></a><span
+class="cmbx-10">First use text</span><a
+ id="dx1-3019"></a> </dt><dd
+class="description"><br
+class="newline" />The text that is displayed on <a
+href="#glo:firstuse">first use</a>, which is governed by the <span
+class="cmss-10">first</span><a
+ id="dx1-3020"></a> and
+ <span
+class="cmss-10">firstplural</span><a
+ id="dx1-3021"></a> keys of <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-3022"></a>. (May be overridden by <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-3023"></a> or by
+ <span
+class="cmtt-10">\defglsentry</span><a
+ id="dx1-3024"></a>.) <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:glossaries-extra"></a><span
+class="cmssbx-10">glossaries-extra</span> </dt><dd
+class="description"><br
+class="newline" />A separate package that extends the <span
+class="cmss-10">glossaries </span>package, providing new features
+ or improving existing features. If you want to use <span
+class="cmss-10">glossaries-extra</span>, you must have
+ both the <span
+class="cmss-10">glossaries </span>package and the <span
+class="cmss-10">glossaries-extra </span>package installed. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:indexingapp"></a><span
+class="cmbx-10">Indexing application</span> </dt><dd
+class="description"><br
+class="newline" />An application (piece of software) separate from <span class="TEX">T<span
+class="E">E</span>X</span>/<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;that collates and
+ sorts information that has an associated page reference. Generally the information
+ is an index entry but in this case the information is a glossary entry. There are
+ two main indexing applications that are used with <span class="TEX">T<span
+class="E">E</span>X</span>: <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-3025"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-3026"></a></a>.
+ These are both <a
+href="#glo:cli">command line interface (CLI)</a> applications. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:latinalph"></a><span
+class="cmbx-10">Latin Alphabet</span><a
+ id="dx1-3027"></a> </dt><dd
+class="description"><br
+class="newline" />The alphabet consisting of <a
+href="#glo:latinchar">Latin character<a
+ id="dx1-3028"></a>s</a>. See also <a
+href="#glo:exlatinalph">extended Latin alphabet</a>. <br
+class="newline" />
+
+
+ </dd><dt class="description">
+<a
+ id="glo:latinchar"></a><span
+class="cmbx-10">Latin Character</span><a
+ id="dx1-3029"></a> </dt><dd
+class="description"><br
+class="newline" />One of the letters <span
+class="cmtt-10">a</span>, &#x2026;, <span
+class="cmtt-10">z</span>, <span
+class="cmtt-10">A</span>, &#x2026;, <span
+class="cmtt-10">Z</span>. See also <a
+href="#glo:exlatinchar">extended Latin character<a
+ id="dx1-3030"></a></a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:linktext"></a><span
+class="cmbx-10">Link text</span><a
+ id="dx1-3031"></a> </dt><dd
+class="description"><br
+class="newline" />The text produced by commands such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-3032"></a>. It may or may not be a hyperlink
+ to the glossary. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:makeglossaries"></a><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-3033"></a> </dt><dd
+class="description"><br
+class="newline" />A custom designed Perl script interface to <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-3034"></a></a> and <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-3035"></a></a> provided
+ with the <span
+class="cmss-10">glossaries </span>package. <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions on Windows convert the original
+ <span
+class="cmtt-10">makeglossaries </span>script into an executable <span
+class="cmtt-10">makeglossaries.exe </span>for convenience
+ (but Perl is still required). <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:makeglossariesgui"></a><span
+class="cmtt-10">makeglossariesgui</span><a
+ id="dx1-3036"></a> </dt><dd
+class="description"><br
+class="newline" />A Java GUI alternative to <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-3037"></a></a> that also provides diagnostic tools.
+ Available separately on <a
+href="http://ctan.org/pkg/makeglossariesgui" >CTAN</a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:makeglossaries-lite.lua"></a><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-3038"></a> </dt><dd
+class="description"><br
+class="newline" />A custom designed Lua script interface to <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-3039"></a></a> and <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-3040"></a></a> 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 actually
+ distributed with the file name <span
+class="cmtt-10">makeglossaries-lite.lua</span>, but <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;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. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:makeindex"></a><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-3041"></a> </dt><dd
+class="description"><br
+class="newline" />An <a
+href="#glo:indexingapp">indexing application</a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:nonlatinalph"></a><span
+class="cmbx-10">Non-Latin Alphabet</span><a
+ id="dx1-3042"></a> </dt><dd
+class="description"><br
+class="newline" />An alphabet consisting of <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-3043"></a>s</a>. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:nonlatinchar"></a><span
+class="cmbx-10">Non-Latin Character</span><a
+ id="dx1-3044"></a> </dt><dd
+class="description"><br
+class="newline" />An <a
+href="#glo:exlatinchar">extended Latin character<a
+ id="dx1-3045"></a></a> or a&#x00A0;character that isn&#8217;t a&#x00A0;<a
+href="#glo:latinchar">Latin character<a
+ id="dx1-3046"></a></a>. <br
+class="newline" />
+
+
+ </dd><dt class="description">
+<a
+ id="glo:numberlist"></a><span
+class="cmbx-10">Number list</span><a
+ id="dx1-3047"></a> </dt><dd
+class="description"><br
+class="newline" />A list of <a
+href="#glo:entrylocation">entry locations</a> (also called a location list). The number list can be
+ suppressed using the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-3048"></a> package option. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:sanitize"></a><span
+class="cmbx-10">Sanitize</span><a
+ id="dx1-3049"></a> </dt><dd
+class="description"><br
+class="newline" />Converts command names into character sequences. That is, a command called,
+ say, <span
+class="cmtt-10">\foo</span>, is converted into the sequence of characters: <span
+class="cmtt-10">\</span>, <span
+class="cmtt-10">f</span>, <span
+class="cmtt-10">o</span>, <span
+class="cmtt-10">o</span>. Depending on
+ the font, the backslash character may appear as a dash when used in the main
+ document text, so <span
+class="cmtt-10">\foo </span>will appear as: &#8212;foo.
+ <!--l. 304--><p class="noindent" >Earlier versions of <span
+class="cmss-10">glossaries </span>used this technique to write information to the files
+ used by the indexing applications to prevent problems caused by fragile commands.
+ Now, this is only used for the <span
+class="cmss-10">sort</span><a
+ id="dx1-3050"></a> key. <br
+class="newline" />
+ </p></dd><dt class="description">
+<a
+ id="glo:latexexlatinchar"></a><span
+class="cmbx-10">Standard </span><span class="LATEX"><span
+class="cmbx-10">L</span><span class="A"><span
+class="cmbx-10">A</span></span><span class="TEX"><span
+class="cmbx-10">T</span><span
+class="E"><span
+class="cmbx-10">E</span></span><span
+class="cmbx-10">X</span></span></span><span
+class="cmbx-10">&#x00A0;Extended Latin Character</span><a
+ id="dx1-3051"></a> </dt><dd
+class="description"><br
+class="newline" />An <a
+href="#glo:exlatinchar">extended Latin character<a
+ id="dx1-3052"></a></a> that can be created by a&#x00A0;core <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;command,
+ such as <span
+class="cmtt-10">\o </span>(&oslash;) or <span
+class="cmtt-10">\&#8217;e </span>(&eacute;). That is, the character can be produced without the
+ need to load a&#x00A0;particular package. <br
+class="newline" />
+ </dd><dt class="description">
+<a
+ id="glo:xindy"></a><span
+class="cmtt-10">xindy</span><a
+ id="dx1-3053"></a> </dt><dd
+class="description"><br
+class="newline" />A flexible <a
+href="#glo:indexingapp">indexing application</a> with multilingual support written in Perl. <br
+class="newline" /></dd></dl>
+
+
+<!--l. 626--><p class="indent" > <div class="chapter"><h2 class="chapterHead">1. <a
+ id="sec:intro"></a>Introduction</h2>
+</p><!--l. 629--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package is provided to assist generating lists of terms, symbols or
+abbreviations. (For convenience, these lists are all referred to as glossaries in this manual.)
+The package has a certain amount of flexibility, allowing the user to customize
+the format of the glossary and define multiple glossaries. It also supports glossary
+styles that include symbols (in addition to a name and description) for glossary
+entries. There is provision for loading a database of glossary terms. Only those terms
+indexed<span class="footnote-mark"><a
+href="#fn1x1" id="fn1x1-bk"><sup class="textsuperscript">1.1</sup></a></span><a
+ id="x1-4001f1"></a>&#x00A0;in
+the document will be added to the glossary.
+</p><!--l. 643--><p class="indent" > The <span
+class="cmss-10">glossaries-extra </span>package, which is distributed as a separated bundle, extends the
+capabilities of the <span
+class="cmss-10">glossaries </span>package. The simplest document can be created with
+<span
+class="cmss-10">glossaries-extra </span>(which internally loads the <span
+class="cmss-10">glossaries </span>package):
+
+
+</p>
+ <div class="verbatim" id="verbatim-1">
+\documentclass{article}
+&#x00A0;<br />\usepackage[
+&#x00A0;<br />&#x00A0;sort=none,%&#x00A0;no&#x00A0;sorting&#x00A0;or&#x00A0;indexing&#x00A0;required
+&#x00A0;<br />&#x00A0;abbreviations,%&#x00A0;create&#x00A0;list&#x00A0;of&#x00A0;abbreviations
+&#x00A0;<br />&#x00A0;symbols,%&#x00A0;create&#x00A0;list&#x00A0;of&#x00A0;symbols
+&#x00A0;<br />&#x00A0;postdot&#x00A0;%&#x00A0;append&#x00A0;a&#x00A0;full&#x00A0;stop&#x00A0;after&#x00A0;the&#x00A0;descriptions
+&#x00A0;<br />]{glossaries-extra}
+&#x00A0;<br />\newglossaryentry&#x00A0;%&#x00A0;provided&#x00A0;by&#x00A0;glossaries.sty
+&#x00A0;<br />&#x00A0;{cafe}%&#x00A0;label
+&#x00A0;<br />&#x00A0;{%&#x00A0;definition:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={caf\'e},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={small&#x00A0;restaurant&#x00A0;selling&#x00A0;refreshments}
+&#x00A0;<br />&#x00A0;}
+&#x00A0;<br />\newabbreviation&#x00A0;%&#x00A0;provided&#x00A0;by&#x00A0;glossaries-extra.sty
+&#x00A0;<br />&#x00A0;{html}%&#x00A0;label
+&#x00A0;<br />&#x00A0;{HTML}%&#x00A0;short&#x00A0;form
+&#x00A0;<br />&#x00A0;{hypertext&#x00A0;markup&#x00A0;language}%&#x00A0;long&#x00A0;form
+&#x00A0;<br />\glsxtrnewsymbol&#x00A0;%&#x00A0;provided&#x00A0;by&#x00A0;glossaries-extra.sty&#x00A0;'symbols'&#x00A0;option
+&#x00A0;<br />&#x00A0;[description={Archimedes'&#x00A0;constant}]%&#x00A0;options
+&#x00A0;<br />&#x00A0;{pi}%&#x00A0;label
+&#x00A0;<br />&#x00A0;{\ensuremath{\pi}}%&#x00A0;symbol
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />First&#x00A0;use:&#x00A0;\gls{cafe},&#x00A0;\gls{html},&#x00A0;\gls{pi}.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\gls{cafe},&#x00A0;\gls{html},&#x00A0;\gls{pi}.
+&#x00A0;<br />\printunsrtglossaries&#x00A0;%&#x00A0;list&#x00A0;all&#x00A0;defined&#x00A0;entries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 681--><p class="nopar" >
+</p><!--l. 684--><p class="indent" > <span
+class="cmbx-10">The </span><span
+class="cmssbx-10">glossaries </span><span
+class="cmbx-10">package replaces the </span><span
+class="cmssbx-10">glossary</span><a
+ id="dx1-4005"></a> <span
+class="cmbx-10">package which is now obsolete.</span>
+Please see the document <a
+href="glossary2glossaries.html" >&#8220;Upgrading from the glossary package to the glossaries package&#8221;</a> for
+assistance in upgrading.
+</p><!--l. 688--><p class="indent" > One of the strengths of this package is its flexibility, however the drawback of this is the
+necessity of having a large manual that covers all the various settings. If you are
+daunted by the size of the manual, try starting off with the much shorter <a
+href="glossariesbegin.html" >guide for
+beginners</a>.
+</p><!--l. 694--><p class="indent" > <div class="important" title="Important Note"> There&#8217;s a&#x00A0;common misconception that you have to have Perl installed in order to use
+the <span
+class="cmss-10">glossaries </span>package. Perl is <span
+class="cmti-10">not </span>a&#x00A0;requirement but it does increase the available
+options, particularly if you use an <a
+href="#glo:exlatinalph">extended Latin alphabet</a> or a&#x00A0;<a
+href="#glo:nonlatinalph">non-Latin alphabet</a>.
+</div>
+
+
+</p><!--l. 699--><p class="noindent" >
+</p><!--l. 701--><p class="indent" > This document uses the <span
+class="cmss-10">glossaries </span>package. For example, when viewing the PDF version of
+this document in a hyperlinked-enabled PDF viewer (such as Adobe Reader or
+Okular) if you click on the word &#8220;<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-4006"></a></a>&#8221; you&#8217;ll be taken to the entry in the glossary
+where there&#8217;s a brief description of the term &#8220;<span
+class="cmtt-10">xindy</span><a
+ id="dx1-4007"></a>&#8221;. This is the way the <span
+class="cmss-10">glossaries</span>
+mechanism works. An <a
+href="#glo:indexingapp">indexing application</a> is used to generated the sorted list of
+terms. The <a
+href="#glo:indexingapp">indexing applications</a> are <a
+href="#glo:cli">command line interface (CLI)</a> tools, which
+means they can be run directly from a command prompt or terminal, or can be
+integrated into some text editors, or you can use a build tool such as <span
+class="cmtt-10">arara</span><a
+ id="dx1-4008"></a> to run
+them.
+</p><!--l. 713--><p class="indent" > The remainder of this introductory section covers the following: </p>
+ <ul class="itemize1">
+ <li class="itemize"><a
+href="#sec:indexingoptions"><span
+class="tcrm-1000">&sect;</span>1.1 </a><a
+href="#sec:indexingoptions">Indexing Options<!--tex4ht:ref: sec:indexingoptions --></a> lists the available indexing options.
+ </li>
+ <li class="itemize"><a
+href="#sec:samples"><span
+class="tcrm-1000">&sect;</span>1.2 </a><a
+href="#sec:samples">Sample Documents<!--tex4ht:ref: sec:samples --></a> lists the sample documents provided with this package.
+ </li>
+ <li class="itemize"><a
+href="#sec:lipsum"><span
+class="tcrm-1000">&sect;</span>1.3 </a><a
+href="#sec:lipsum">Dummy Entries for Testing<!--tex4ht:ref: sec:lipsum --></a> lists the dummy glossary files that may be used
+ for testing.
+ </li>
+ <li class="itemize"><a
+href="#sec:languages"><span
+class="tcrm-1000">&sect;</span>1.4 </a><a
+href="#sec:languages">Multi-Lingual Support<!--tex4ht:ref: sec:languages --></a> provides information for users who wish to write in a
+ language other than English.
+ </li>
+ <li class="itemize"><a
+href="#sec:makeglossaries"><span
+class="tcrm-1000">&sect;</span>1.5 </a><a
+href="#sec:makeglossaries">Generating the Associated Glossary Files<!--tex4ht:ref: sec:makeglossaries --></a> describes how to use an <a
+href="#glo:indexingapp">indexing
+ application</a> to create the sorted glossaries for your document (Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>).
+ </li></ul>
+<!--l. 733--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.1 </span> <a
+ id="sec:indexingoptions"></a>Indexing Options</h3>
+<!--l. 736--><p class="noindent" >The basic idea behind the <span
+class="cmss-10">glossaries </span>package is that you first define your entries (terms,
+symbols or abbreviations). Then you can reference these within your document (like <span
+class="cmtt-10">\cite </span>or
+<span
+class="cmtt-10">\ref</span>). You can also, optionally, display a&#x00A0;list of the entries you have referenced in your
+document (the glossary). This last part, displaying the glossary, is the part that most new
+users find difficult. There are three options available with the base <span
+class="cmss-10">glossaries </span>package and two
+further options with the extension package <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>. An overview of these options is
+given in <a
+href="#tab:options">table&#x00A0;1.1</a>.
+</p><!--l. 748--><p class="indent" > If you are developing a class or package that loads <span
+class="cmss-10">glossaries</span>, I recommend that you
+don&#8217;t force the user into a particular indexing method by adding an unconditional
+<span
+class="cmtt-10">\makeglossaries </span>into your class or package code. Aside from forcing the user into a
+particular indexing method, it means that they&#8217;re unable to use any commands that must
+come before <span
+class="cmtt-10">\makeglossaries </span>(such as <span
+class="cmtt-10">\newglossary</span>) and they can&#8217;t switch off the indexing
+whilst working on a draft document.
+</p><!--l. 757--><p class="indent" > For a comparison of the various methods when used with large entry sets or when used
+with symbols such as <span
+class="cmtt-10">\alpha</span>, see the <a
+href="http://www.dickimaw-books.com/gallery/glossaries-performance.shtml" ><span
+class="cmss-10">glossaries </span>performance page</a>.
+
+
+</p>
+ <div class="table">
+
+
+<!--l. 761--><p class="indent" > <a
+ id="tab:options"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;1.1: </span><span
+class="content">Glossary Options: Pros and Cons</span></div><!--tex4ht:label?: x1-50011 -->
+
+
+<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" /><col
+id="TBL-2-3" /><col
+id="TBL-2-4" /><col
+id="TBL-2-5" /><col
+id="TBL-2-6" /></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. 769--><p class="noindent" > </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-2"
+class="td11"> <a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-3"
+class="td11"> <a
+href="#option2"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;2</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-4"
+class="td11"> <a
+href="#option3"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;3</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-5"
+class="td11"> <a
+href="#option4"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;4</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-6"
+class="td10"> <a
+href="#option5"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;5</span></a></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. 771--><p class="noindent" ><span
+class="cmr-9">Requires</span>
+<a
+href="#glo:glossaries-extra"><span
+class="cmss-9">glossaries-extra</span></a><span
+class="cmr-9">?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-2"
+class="td11"> <span id="textcolor1"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-3"
+class="td11"> <span id="textcolor2"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-4"
+class="td11"> <span id="textcolor3"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-5"
+class="td11"> <span id="textcolor4"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-6"
+class="td10"> <span id="textcolor5"><span
+class="pzdr-">&#x2714;</span></span> </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. 773--><p class="noindent" ><span
+class="cmr-9">Requires</span>
+<span
+class="cmr-9">an</span>
+<span
+class="cmr-9">external</span>
+<span
+class="cmr-9">application?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-2"
+class="td11"> <span id="textcolor6"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-3"
+class="td11"> <span id="textcolor7"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-4"
+class="td11"> <span id="textcolor8"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-5"
+class="td11"> <span id="textcolor9"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-6"
+class="td10"> <span id="textcolor10"><span
+class="pzdr-">&#x2718;</span></span> </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. 775--><p class="noindent" ><span
+class="cmr-9">Requires</span>
+<span
+class="cmr-9">Perl?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-2"
+class="td11"> <span id="textcolor11"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-3"
+class="td11"> <span id="textcolor12"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-4"
+class="td11"> <span id="textcolor13"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-5"
+class="td11"> <span id="textcolor14"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-6"
+class="td10"> <span id="textcolor15"><span
+class="pzdr-">&#x2718;</span></span> </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. 777--><p class="noindent" ><span
+class="cmr-9">Requires</span>
+<span
+class="cmr-9">Java?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-2"
+class="td11"> <span id="textcolor16"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-3"
+class="td11"> <span id="textcolor17"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-4"
+class="td11"> <span id="textcolor18"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-5"
+class="td11"> <span id="textcolor19"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-6"
+class="td10"> <span id="textcolor20"><span
+class="pzdr-">&#x2718;</span></span> </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. 779--><p class="noindent" ><span
+class="cmr-9">Can</span>
+<span
+class="cmr-9">sort</span>
+<a
+href="#glo:exlatinalph"><span
+class="cmr-9">extended</span>
+<span
+class="cmr-9">Latin</span>
+<span
+class="cmr-9">alphabets</span></a>
+<span
+class="cmr-9">or</span>
+<a
+href="#glo:nonlatinalph"><span
+class="cmr-9">non-Latin</span>
+<span
+class="cmr-9">alphabets</span></a><span
+class="cmr-9">?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-2"
+class="td11"> <span id="textcolor21"><span
+class="pzdr-">&#x2718;</span></span><sup class="textsuperscript"><span
+class="tcrm-0900">*</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-3"
+class="td11"> <span id="textcolor22"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-4"
+class="td11"> <span id="textcolor23"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-5"
+class="td11"> <span id="textcolor24"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-6"
+class="td10"> N/A </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. 782--><p class="noindent" ><span
+class="cmr-9">Efficient</span>
+<span
+class="cmr-9">sort</span>
+<span
+class="cmr-9">algorithm?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-2"
+class="td11"> <span id="textcolor25"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-3"
+class="td11"> <span id="textcolor26"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-4"
+class="td11"> <span id="textcolor27"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-5"
+class="td11"> <span id="textcolor28"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-6"
+class="td10"> N/A </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. 784--><p class="noindent" ><span
+class="cmr-9">Can</span>
+<span
+class="cmr-9">use</span>
+<span
+class="cmr-9">a</span>
+<span
+class="cmr-9">different</span>
+<span
+class="cmr-9">sort</span>
+<span
+class="cmr-9">method</span>
+<span
+class="cmr-9">for</span>
+<span
+class="cmr-9">each</span>
+<span
+class="cmr-9">glossary?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-2"
+class="td11"> <span id="textcolor29"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-3"
+class="td11"> <span id="textcolor30"><span
+class="pzdr-">&#x2718;</span></span><sup class="textsuperscript"><span
+class="tcrm-0900">&#8224;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-4"
+class="td11"> <span id="textcolor31"><span
+class="pzdr-">&#x2718;</span></span><sup class="textsuperscript"><span
+class="tcrm-0900">&#8224;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-5"
+class="td11"> <span id="textcolor32"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-6"
+class="td10"> N/A </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. 788--><p class="noindent" ><span
+class="cmr-9">Any</span>
+<span
+class="cmr-9">problematic</span>
+<span
+class="cmr-9">sort</span>
+<span
+class="cmr-9">values?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-2"
+class="td11"> <span id="textcolor33"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-3"
+class="td11"> <span id="textcolor34"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-4"
+class="td11"> <span id="textcolor35"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-5"
+class="td11"> <span id="textcolor36"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-6"
+class="td10"> <span id="textcolor37"><span
+class="pzdr-">&#x2718;</span></span><sup class="textsuperscript"><span
+class="tcrm-0900">&#8225;</span></sup> </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. 790--><p class="noindent" ><span
+class="cmr-9">Are</span>
+<span
+class="cmr-9">entries</span>
+<span
+class="cmr-9">with</span>
+<span
+class="cmr-9">identical</span>
+<span
+class="cmr-9">sort</span>
+<span
+class="cmr-9">values</span>
+<span
+class="cmr-9">treated</span>
+<span
+class="cmr-9">as</span>
+<span
+class="cmr-9">separate</span>
+<span
+class="cmr-9">unique</span>
+<span
+class="cmr-9">entries?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-2"
+class="td11"> <span id="textcolor38"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-3"
+class="td11"> <span id="textcolor39"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-4"
+class="td11"> <span id="textcolor40"><span
+class="pzdr-">&#x2718;</span></span><sup class="textsuperscript"><span
+class="tcrm-0900">&sect;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-5"
+class="td11"> <span id="textcolor41"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-6"
+class="td10"> <span id="textcolor42"><span
+class="pzdr-">&#x2714;</span></span> </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. 793--><p class="noindent" ><span
+class="cmr-9">Can</span>
+<span
+class="cmr-9">automatically</span>
+<span
+class="cmr-9">form</span>
+<span
+class="cmr-9">ranges</span>
+<span
+class="cmr-9">in</span>
+<span
+class="cmr-9">the</span>
+<span
+class="cmr-9">location</span>
+<span
+class="cmr-9">lists?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-2"
+class="td11"> <span id="textcolor43"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-3"
+class="td11"> <span id="textcolor44"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-4"
+class="td11"> <span id="textcolor45"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-5"
+class="td11"> <span id="textcolor46"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-6"
+class="td10"> <span id="textcolor47"><span
+class="pzdr-">&#x2718;</span></span> </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. 795--><p class="noindent" ><span
+class="cmr-9">Can</span>
+<span
+class="cmr-9">have</span>
+<span
+class="cmr-9">non-standard</span>
+<span
+class="cmr-9">locations</span>
+<span
+class="cmr-9">in</span>
+<span
+class="cmr-9">the</span>
+<span
+class="cmr-9">location</span>
+<span
+class="cmr-9">lists?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-12-2"
+class="td11"> <span id="textcolor48"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-12-3"
+class="td11"> <span id="textcolor49"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-12-4"
+class="td11"> <span id="textcolor50"><span
+class="pzdr-">&#x2714;</span></span><sup class="textsuperscript"><span
+class="msam-10x-x-90">&#x2662;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-12-5"
+class="td11"> <span id="textcolor51"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-12-6"
+class="td10"> <span id="textcolor52"><span
+class="pzdr-">&#x2714;</span></span><sup class="textsuperscript"><span
+class="tcrm-0900">&#182;</span></sup> </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. 800--><p class="noindent" ><span
+class="cmr-9">Maximum</span>
+<span
+class="cmr-9">hierarchical</span>
+<span
+class="cmr-9">depth</span>
+<span
+class="cmr-9">(style-dependent)</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-13-2"
+class="td11"> <span
+class="cmsy-10">&#x221E;</span><sup class="textsuperscript"><span
+class="cmr-9">#</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-13-3"
+class="td11"> 3 </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-13-4"
+class="td11"> <span
+class="cmsy-10">&#x221E; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-13-5"
+class="td11"> <span
+class="cmsy-10">&#x221E; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-13-6"
+class="td10"> <span
+class="cmsy-10">&#x221E; </span></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. 802--><p class="noindent" ><span
+class="cmtt-9">\glsdisplaynumberlist</span><a
+ id="dx1-5002"></a>
+<span
+class="cmr-9">reliable?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-14-2"
+class="td11"> <span id="textcolor53"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-14-3"
+class="td11"> <span id="textcolor54"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-14-4"
+class="td11"> <span id="textcolor55"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-14-5"
+class="td11"> <span id="textcolor56"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-14-6"
+class="td10"> <span id="textcolor57"><span
+class="pzdr-">&#x2718;</span></span> </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. 804--><p class="noindent" ><span
+class="cmtt-9">\newglossaryentry</span><a
+ id="dx1-5003"></a>
+<span
+class="cmr-9">allowed</span>
+<span
+class="cmr-9">in</span>
+<span
+class="cmss-9">document</span><a
+ id="dx1-5004"></a><a
+ id="dx1-5005"></a>
+<span
+class="cmr-9">environment?</span>
+<span
+class="cmr-9">(Not</span>
+<span
+class="cmr-9">recommended.)</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-15-2"
+class="td11"> <span
+class="pzdr-">&#x2718; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-15-3"
+class="td11"> <span
+class="pzdr-">&#x2714; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-15-4"
+class="td11"> <span
+class="pzdr-">&#x2714; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-15-5"
+class="td11"> <span
+class="pzdr-">&#x2718;</span><sup class="textsuperscript"><span
+class="tcrm-0900">&#x203B;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-15-6"
+class="td10"> <span
+class="pzdr-">&#x2714;</span><sup class="textsuperscript">&#x2051;</sup> </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. 807--><p class="noindent" ><span
+class="cmr-9">Requires</span>
+<span
+class="cmr-9">additional</span>
+<span
+class="cmr-9">write</span>
+<span
+class="cmr-9">registers?</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-16-2"
+class="td11"> <span id="textcolor58"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-16-3"
+class="td11"> <span id="textcolor59"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-16-4"
+class="td11"> <span id="textcolor60"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-16-5"
+class="td11"> <span id="textcolor61"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-16-6"
+class="td10"> <span id="textcolor62"><span
+class="pzdr-">&#x2718;</span></span><sup class="textsuperscript"><span
+class="cmmi-9">&#x22C6;</span></sup> </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. 809--><p class="noindent" ><span
+class="cmr-9">Default</span>
+<span
+class="cmr-9">value</span>
+<span
+class="cmr-9">of</span>
+<span
+class="cmss-9">sanitizesort</span><a
+ id="dx1-5006"></a>
+<span
+class="cmr-9">package</span>
+<span
+class="cmr-9">option</span> </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-17-2"
+class="td11"> <span
+class="cmtt-10">false </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-17-3"
+class="td11"> <span
+class="cmtt-10">true </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-17-4"
+class="td11"> <span
+class="cmtt-10">true </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-17-5"
+class="td11"> <span
+class="cmtt-10">true</span><sup class="textsuperscript"><span
+class="pzdr-x-x-90">&#x273E;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-17-6"
+class="td10"> <span
+class="cmtt-10">true</span><sup class="textsuperscript"><span
+class="pzdr-x-x-90">&#x273E;</span></sup> </td>
+</tr></table>
+
+</div>
+<!--l. 817--><p class="noindent" >________________________________________________________________________
+</p><!--l. 819--><p class="noindent" ><sup class="textsuperscript"><span
+class="tcrm-0900">*</span></sup> <span
+class="cmr-8">Strips standard </span><span class="LATEX"><span
+class="cmr-8">L</span><span class="A"><span
+class="cmr-8">A</span></span><span class="TEX"><span
+class="cmr-8">T</span><span
+class="E"><span
+class="cmr-8">E</span></span><span
+class="cmr-8">X</span></span></span><span
+class="cmr-8">&#x00A0;accents (that is, accents generated by core </span><span class="LATEX"><span
+class="cmr-8">L</span><span class="A"><span
+class="cmr-8">A</span></span><span class="TEX"><span
+class="cmr-8">T</span><span
+class="E"><span
+class="cmr-8">E</span></span><span
+class="cmr-8">X</span></span></span><span
+class="cmr-8">&#x00A0;commands) so, for</span>
+<span
+class="cmr-8">example, </span><span
+class="cmtt-8">\AA</span><a
+ id="dx1-5007"></a> <span
+class="cmr-8">is treated the same as A.</span>
+</p><!--l. 822--><p class="noindent" ><sup class="textsuperscript"><span
+class="tcrm-0900">&#8224;</span></sup> <span
+class="cmr-8">Only with the hybrid method provided with </span><span
+class="cmss-8">glossaries-extra</span><a
+ id="dx1-5008"></a><span
+class="cmr-8">.</span>
+</p><!--l. 823--><p class="noindent" ><sup class="textsuperscript"><span
+class="tcrm-0900">&#8225;</span></sup> <span
+class="cmr-8">Provided </span><span
+class="cmss-8">sort=none</span><a
+ id="dx1-5009"></a> <span
+class="cmr-8">is used.</span>
+</p><!--l. 824--><p class="noindent" ><sup class="textsuperscript"><span
+class="tcrm-0900">&sect;</span></sup> <span
+class="cmr-8">Entries with the same sort value are merged.</span>
+</p><!--l. 825--><p class="noindent" ><sup class="textsuperscript"><span
+class="msam-10x-x-90">&#x2662;</span> </sup> <span
+class="cmr-8">Requires some setting up.</span>
+</p><!--l. 826--><p class="noindent" ><sup class="textsuperscript"><span
+class="tcrm-0900">&#182;</span></sup> <span
+class="cmr-8">The locations must be set explicitly through the custom </span><span
+class="cmss-8">location</span><a
+ id="dx1-5010"></a> <span
+class="cmr-8">field provided by </span><span
+class="cmss-8">glossaries-extra</span><span
+class="cmr-8">.</span>
+</p><!--l. 829--><p class="noindent" ><sup class="textsuperscript"><span
+class="cmr-9">#</span></sup> <span
+class="cmr-8">Unlimited but unreliable.</span>
+</p><!--l. 830--><p class="noindent" ><sup class="textsuperscript"><span
+class="tcrm-0900">&#x203B;</span></sup> <span
+class="cmr-8">Entries are defined in </span><span
+class="cmtt-8">.bib </span><span
+class="cmr-8">format. </span><span
+class="cmtt-8">\newglossaryentry </span><span
+class="cmr-8">should not be used explicitly.</span>
+</p><!--l. 832--><p class="noindent" ><sup class="textsuperscript">&#x2051;</sup> <span
+class="cmr-8">Provided </span><span
+class="cmss-8">docdefs=true </span><span
+class="cmr-8">or </span><span
+class="cmss-8">docdefs=restricted </span><span
+class="cmr-8">but not recommended.</span>
+</p><!--l. 834--><p class="noindent" ><sup class="textsuperscript"><span
+class="cmmi-9">&#x22C6;</span> </sup> <span
+class="cmr-8">Provided </span><span
+class="cmss-8">docdefs=false </span><span
+class="cmr-8">or </span><span
+class="cmss-8">docdefs=restricted</span><span
+class="cmr-8">.</span>
+</p><!--l. 836--><p class="noindent" ><sup class="textsuperscript"><span
+class="pzdr-x-x-90">&#x273E;</span></sup> <span
+class="cmr-8">Irrelevant with </span><span
+class="cmss-8">sort=none</span><a
+ id="dx1-5011"></a><span
+class="cmr-8">. (The </span><span
+class="cmss-8">record=only </span><span
+class="cmr-8">option automatically switches this on.)</span>
+
+
+</p>
+ </div><hr class="endfloat" />
+ </div>
+<a
+ id="x1-5012r1"></a>
+ <h4 class="likesubsectionHead"><a
+ id="x1-60001"></a><a
+ id="option1"></a>Option&#x00A0;1 (<span class="TEX">T<span
+class="E">E</span>X</span>)</h4>
+<!--l. 843--><p class="noindent" >This option doesn&#8217;t require an external <a
+href="#glo:indexingapp">indexing application</a> but, with the default
+alphabetic sorting, it&#8217;s very slow with severe limitations. If you want a sorted list, it
+doesn&#8217;t work well for <a
+href="#glo:exlatinalph">extended Latin alphabets</a> or <a
+href="#glo:nonlatinalph">non-Latin alphabets</a>. However, if
+you use the <span
+class="cmss-10">sanitizesort=false</span><a
+ id="dx1-6001"></a> package option (the default for Option&#x00A0;1) then the
+<a
+href="#glo:latexexlatinchar">standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;accent commands</a> will be ignored, so if an entry&#8217;s name is set to
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{\&#8217;e}lite</span></span></span> then the sort value will default to <span
+class="cmtt-10">elite </span>if <span
+class="cmss-10">sanitizesort=false</span><a
+ id="dx1-6002"></a> is used and
+will default to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\&#8217;elite</span></span></span> if <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-6003"></a> is used. If you have any other kinds of
+commands that don&#8217;t expand to ASCII characters, such as <span
+class="cmtt-10">\alpha </span>or <span
+class="cmtt-10">\si</span>, then you
+must use <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-6004"></a> or change the sort method (<span
+class="cmss-10">sort=use</span><a
+ id="dx1-6005"></a> or <span
+class="cmss-10">sort=def</span><a
+ id="dx1-6006"></a>) in the
+package options or explicitly set the <span
+class="cmss-10">sort</span><a
+ id="dx1-6007"></a> key when you define the relevant entries. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-2">
+\newglossaryentry{alpha}{name={\ensuremath{\alpha}},
+&#x00A0;<br />&#x00A0;sort={alpha},description={...}}
+</div>
+<!--l. 862--><p class="nopar" >
+</p><!--l. 864--><p class="indent" > This option works best with the <span
+class="cmss-10">sort=def</span><a
+ id="dx1-6008"></a> or <span
+class="cmss-10">sort=use</span><a
+ id="dx1-6009"></a> setting. For any other setting, be
+prepared for a long document build time, especially if you have a lot of entries defined. <span
+class="cmbx-10">This</span>
+<span
+class="cmbx-10">option is intended as a last resort for alphabetical sorting. </span>This option allows a
+mixture of sort methods. (For example, sorting by word order for one glossary and order of
+use for another.) This option is not suitable for hierarchical glossaries and does not form
+ranges in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-6010"></a>s</a>. If you really can&#8217;t use an <a
+href="#glo:indexingapp">indexing application</a> consider using
+<a
+href="#option5">Option&#x00A0;5</a> instead.
+</p><!--l. 875--><p class="indent" >
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-6012x1">Add
+
+
+ <div class="verbatim" id="verbatim-3">
+ \makenoidxglossaries
+</div>
+ <!--l. 879--><p class="nopar" > to your preamble (before you start defining your entries, as described in <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining
+ Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a>).
+ </p></li>
+ <li
+ class="enumerate" id="x1-6014x2">Put
+
+
+ <div class="verbatim" id="verbatim-4">
+ \printnoidxglossary
+</div>
+ <!--l. 886--><p class="nopar" > where you want your list of entries to appear (described in <a
+href="#sec:printglossary"><span
+class="tcrm-1000">&sect;</span>10 </a><a
+href="#sec:printglossary">Displaying a glossary<!--tex4ht:ref: sec:printglossary --></a>).
+ Alternatively, to display all glossaries use the iterative command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-5">
+ \printnoidxglossaries
+</div>
+ <!--l. 892--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-6016x3">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;twice on your document. (As you would do to make a&#x00A0;table of contents
+ appear.) For example, click twice on the &#8220;typeset&#8221; or &#8220;build&#8221; or &#8220;PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#8221; button
+ in your editor.</li></ol>
+<!--l. 899--><p class="indent" > Complete example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-6">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\makenoidxglossaries&#x00A0;%&#x00A0;use&#x00A0;TeX&#x00A0;to&#x00A0;sort
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},
+&#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{sample}.
+&#x00A0;<br />\printnoidxglossary
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 910--><p class="nopar" >
+<a
+ id="x1-6017r2"></a>
+</p><!--l. 912--><p class="noindent" >
+</p>
+ <h4 class="likesubsectionHead"><a
+ id="x1-70002"></a><a
+ id="option2"></a>Option&#x00A0;2 (<span
+class="cmtt-10">makeindex</span>)</h4>
+<!--l. 914--><p class="noindent" >This option uses a&#x00A0;<a
+href="#glo:cli">CLI</a> application called <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7001"></a></a> to sort the entries. This application
+comes with all modern <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions, but it&#8217;s hard-coded for the non-extended <a
+href="#glo:latinalph">Latin
+alphabet<a
+ id="dx1-7002"></a></a>. It can&#8217;t correctly sort accent commands (such as <span
+class="cmtt-10">\&#8217; </span>or <span
+class="cmtt-10">\c</span>) and fails with UTF-8
+characters, especially for any sort values that start with a UTF-8 character (as it separates
+the octets resulting in an invalid file encoding). This process involves making <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;write
+the glossary information to a temporary file which <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7003"></a></a> reads. Then <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7004"></a></a> writes
+a&#x00A0;new file containing the code to typeset the glossary. Then <span
+class="cmtt-10">\printglossary </span>reads this file in
+on the next run.
+</p><!--l. 926--><p class="indent" > This option works best if you want to sort entries according to the English alphabet and
+you don&#8217;t want to install Perl (or Java or you don&#8217;t want to use <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>). This method
+can also work with the restricted shell escape since <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7005"></a></a> is considered a trusted
+application. (So you should be able to use the <span
+class="cmss-10">automake</span><a
+ id="dx1-7006"></a> package option provided the shell
+escape hasn&#8217;t been completely disabled.)
+</p><!--l. 934--><p class="indent" > This method can form ranges in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-7007"></a></a> but only accepts limited number formats:
+<span
+class="cmtt-10">\arabic</span>, <span
+class="cmtt-10">\roman</span>, <span
+class="cmtt-10">\Roman</span>, <span
+class="cmtt-10">\alph </span>and <span
+class="cmtt-10">\Alph</span>.
+</p><!--l. 938--><p class="indent" > This option does not allow a mixture of sort methods. All glossaries must be sorted
+according to the same method: word/letter ordering or order of use or order of definition. If
+you need word ordering for one glossary and letter ordering for another you&#8217;ll have to
+explicitly call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7008"></a></a> for each glossary type. (The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7009"></a> package allows a hybrid
+mix of Options&#x00A0;<a
+href="#option1">1</a> and&#x00A0;<a
+href="#option2">2</a> to provide word/letter ordering with <a
+href="#option2">Option&#x00A0;2</a> and order of
+use/definition with <a
+href="#option1">Option&#x00A0;1</a>. See the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7010"></a> documentation for further
+details.)
+</p><!--l. 949--><p class="indent" >
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-7012x1">If you want to use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7013"></a>&#8217;s</a> <span
+class="cmtt-10">-g</span><a
+ id="dx1-7014"></a> option you must change the quote character using
+
+
+ <span
+class="cmtt-10">\GlsSetQuote</span><a
+ id="dx1-7015"></a>. For example:
+
+
+ <div class="verbatim" id="verbatim-7">
+ \GlsSetQuote{+}
+</div>
+ <!--l. 954--><p class="nopar" > This must be used before <span
+class="cmtt-10">\makeglossaries</span>. Note that if you are using <span
+class="cmss-10">babel</span><a
+ id="dx1-7016"></a>, the
+ shorthands aren&#8217;t enabled until the start of the document, so you won&#8217;t be able to use
+ the shorthands in definitions made in the preamble.
+ </p></li>
+ <li
+ class="enumerate" id="x1-7018x2">Add
+
+
+ <div class="verbatim" id="verbatim-8">
+ \makeglossaries
+</div>
+ <!--l. 963--><p class="nopar" > to your preamble (before you start defining your entries, as described in <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining
+ Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a>).
+ </p></li>
+ <li
+ class="enumerate" id="x1-7020x3">Put
+
+
+ <div class="verbatim" id="verbatim-9">
+ \printglossary
+</div>
+ <!--l. 971--><p class="nopar" > where you want your list of entries to appear (described in <a
+href="#sec:printglossary"><span
+class="tcrm-1000">&sect;</span>10 </a><a
+href="#sec:printglossary">Displaying a glossary<!--tex4ht:ref: sec:printglossary --></a>).
+ Alternatively, to display all glossaries use the iterative command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-10">
+ \printglossaries
+</div>
+ <!--l. 977--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-7022x4">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document. This creates files with the extensions <span
+class="cmtt-10">.glo </span>and <span
+class="cmtt-10">.ist</span>
+ (for example, if your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document is called <span
+class="cmtt-10">myDoc.tex</span>, then you&#8217;ll have two
+ extra files called <span
+class="cmtt-10">myDoc.glo </span>and <span
+class="cmtt-10">myDoc.ist</span>). If you look at your document
+ at this point, you won&#8217;t see the glossary as it hasn&#8217;t been created yet. (If
+ you use <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7023"></a> you&#8217;ll see the section heading and some boilerplate
+ text.)
+ </li>
+ <li
+ class="enumerate" id="x1-7025x5">Run <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7026"></a></a> with the <span
+class="cmtt-10">.glo </span>file as the input file and the <span
+class="cmtt-10">.ist </span>file as the style so
+ that it creates an output file with the extension <span
+class="cmtt-10">.gls</span>. If you have access to a
+ terminal or a command prompt (for example, the MSDOS command prompt for
+ Windows users or the bash console for Unix-like users) then you need to run the
+ command:
+
+
+ <div class="verbatim" id="verbatim-11">
+ makeindex&#x00A0;-s&#x00A0;myDoc.ist&#x00A0;-o&#x00A0;myDoc.gls&#x00A0;myDoc.glo
+</div>
+ <!--l. 996--><p class="nopar" > (Replace <span
+class="cmtt-10">myDoc </span>with the base name of your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document file. Avoid spaces in the
+ file name if possible.) If you don&#8217;t know how to use the command prompt,
+ then you can probably access <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7027"></a></a> via your text editor, but each editor
+ has a different method of doing this, so I&#x00A0;can&#8217;t give a&#x00A0;general description.
+ You will have to check your editor&#8217;s manual. The simplest approach is to use
+ <span
+class="cmtt-10">arara</span><a
+ id="dx1-7028"></a> and add the following comment lines to the start of your document:
+ </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;pdflatex</span>
+ <br /><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;makeglossaries</span>
+ <br /><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;pdflatex</span>
+</div>
+ </div> (Replace <span
+class="cmtt-10">makeglossaries </span>with <span
+class="cmtt-10">makeglossaries-lite </span>if you don&#8217;t have Perl
+ installed.)
+ <!--l. 1013--><p class="noindent" >The default sort is word order (&#8220;sea lion&#8221; comes before &#8220;seal&#8221;). If you want letter
+ ordering you need to add the <span
+class="cmtt-10">-l</span><a
+ id="dx1-7029"></a> switch:
+
+
+</p>
+ <div class="verbatim" id="verbatim-12">
+ makeindex&#x00A0;-l&#x00A0;-s&#x00A0;myDoc.ist&#x00A0;-o&#x00A0;myDoc.gls&#x00A0;myDoc.glo
+</div>
+ <!--l. 1018--><p class="nopar" > (See <a
+href="#sec:makeindexapp"><span
+class="tcrm-1000">&sect;</span>1.5.4 </a><a
+href="#sec:makeindexapp">Using <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7030"></a></a> explicitly (Option 2)<!--tex4ht:ref: sec:makeindexapp --></a> for further details on using
+ <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7031"></a> explicitly.) If you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-7032"></a></a> or <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-7033"></a></a>
+ then use the <span
+class="cmss-10">order=letter</span><a
+ id="dx1-7034"></a> package option and the <span
+class="cmtt-10">-l</span><a
+ id="dx1-7035"></a> option will be added
+ automatically.
+ </p></li>
+ <li
+ class="enumerate" id="x1-7037x6">Once you have successfully completed the previous step, you can now run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on
+ your document again. You&#8217;ll need to repeat the process if you have used the <span
+class="cmss-10">toc</span><a
+ id="dx1-7038"></a> option
+ (unless you&#8217;re using <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7039"></a>) to ensure the section heading is added
+ to the table of contents. You&#8217;ll also need to repeat the process if you have
+ any cross-references which can&#8217;t be indexed until the glossary file has been
+ created.</li></ol>
+<!--l. 1034--><p class="indent" > Complete example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-13">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\makeglossaries&#x00A0;%&#x00A0;open&#x00A0;glossary&#x00A0;files
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{sample}.
+&#x00A0;<br />\printglossary
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 1045--><p class="nopar" >
+<a
+ id="x1-7040r3"></a>
+</p><!--l. 1047--><p class="noindent" >
+</p>
+ <h4 class="likesubsectionHead"><a
+ id="x1-80003"></a><a
+ id="option3"></a>Option&#x00A0;3 (<span
+class="cmtt-10">xindy</span>)</h4>
+<!--l. 1049--><p class="noindent" >This option uses a&#x00A0;<a
+href="#glo:cli">CLI</a> application called <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8001"></a></a> to sort the entries. This application is more
+flexible than <span
+class="cmtt-10">makeindex </span>and is able to sort <a
+href="#glo:exlatinalph">extended Latin alphabets</a> or <a
+href="#glo:nonlatinalph">non-Latin alphabets</a>,
+however it does still have some limitations.
+</p><!--l. 1054--><p class="indent" > The <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8002"></a></a> application comes with both <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>, but since <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8003"></a></a> is a
+Perl script, you will also need to install Perl, if you don&#8217;t already have it. In a&#x00A0;similar way to
+<a
+href="#option2">Option&#x00A0;2</a>, this option involves making <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;write the glossary information to
+a&#x00A0;temporary file which <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8004"></a></a> reads. Then <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8005"></a></a> writes a&#x00A0;new file containing the
+code to typeset the glossary. Then <span
+class="cmtt-10">\printglossary </span>reads this file in on the next
+run.
+</p><!--l. 1062--><p class="indent" > This is the best option with just the base <span
+class="cmss-10">glossaries </span>package if you want to sort according
+to a&#x00A0;language other than English or if you want non-standard location lists, but it can require
+some setting up (see <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option 3)<!--tex4ht:ref: sec:xindy --></a>). There are some problems with certain sort
+values: </p>
+ <ul class="itemize1">
+ <li class="itemize">entries with the same sort value are merged by <span
+class="cmtt-10">xindy</span><a
+ id="dx1-8006"></a> into a single glossary line
+ so you must make sure that each entry has a unique sort value;
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8007"></a> forbids empty sort values;
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8008"></a> automatically strips control sequences, the math-shift character <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">$</span></span></span> and
+ braces <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{}</span></span></span> from the sort value, which is usually desired but this can cause the sort
+ value to collapse to an empty string which <span
+class="cmtt-10">xindy</span><a
+ id="dx1-8009"></a> forbids.</li></ul>
+<!--l. 1077--><p class="noindent" >In these problematic cases, you must set the <span
+class="cmss-10">sort</span><a
+ id="dx1-8010"></a> field explicitly. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-14">
+\newglossaryentry{alpha}{name={\ensuremath{\alpha}},
+&#x00A0;<br />&#x00A0;sort={alpha},description={...}}
+</div>
+<!--l. 1082--><p class="nopar" >
+</p><!--l. 1084--><p class="indent" > All glossaries must be sorted according to the same method (word/letter ordering, order
+of use, or order of definition). (The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-8011"></a> package allows a hybrid mix
+of Options&#x00A0;<a
+href="#option1">1</a> and&#x00A0;<a
+href="#option3">3</a> to provide word/letter ordering with <a
+href="#option3">Option&#x00A0;3</a> and order of
+use/definition with <a
+href="#option1">Option&#x00A0;1</a>. See the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-8012"></a> documentation for further
+details.)
+</p><!--l. 1091--><p class="indent" >
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-8014x1">Add the <span
+class="cmss-10">xindy</span><a
+ id="dx1-8015"></a> option to the <span
+class="cmss-10">glossaries </span>package option list:
+
+
+ <div class="verbatim" id="verbatim-15">
+ \usepackage[xindy]{glossaries}
+</div>
+ <!--l. 1096--><p class="nopar" > If you are using a non-Latin script you&#8217;ll also need to either switch off the creation of
+ the number group:
+
+
+</p>
+ <div class="verbatim" id="verbatim-16">
+ \usepackage[xindy={glsnumbers=false}]{glossaries}
+</div>
+ <!--l. 1101--><p class="nopar" > or use either <span
+class="cmtt-10">\GlsSetXdyFirstLetterAfterDigits{</span>&#x27E8;<span
+class="cmti-10">letter</span>&#x27E9;<span
+class="cmtt-10">} </span>or <span
+class="cmtt-10">\GlsSetXdyNumberGroupOrder</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">spec</span>&#x27E9;<span
+class="cmtt-10">} </span>to indicate where the number group should be placed (see <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option
+ 3)<!--tex4ht:ref: sec:xindy --></a>).
+ </p></li>
+ <li
+ class="enumerate" id="x1-8017x2">Add <span
+class="cmtt-10">\makeglossaries </span>to your preamble (before you start defining your entries, as
+ described in <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a>).
+ </li>
+ <li
+ class="enumerate" id="x1-8019x3">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document. This creates files with the extensions <span
+class="cmtt-10">.glo </span>and <span
+class="cmtt-10">.xdy</span>
+ (for example, if your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document is called <span
+class="cmtt-10">myDoc.tex</span>, then you&#8217;ll have two extra
+ files called <span
+class="cmtt-10">myDoc.glo </span>and <span
+class="cmtt-10">myDoc.xdy</span>). If you look at your document at this point, you
+ won&#8217;t see the glossary as it hasn&#8217;t been created yet. (If you&#8217;re using the extension
+ package <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-8020"></a>, you&#8217;ll see the section header and some boilerplate
+ text.)
+ </li>
+ <li
+ class="enumerate" id="x1-8022x4">Run <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8023"></a></a> with the <span
+class="cmtt-10">.glo </span>file as the input file and the <span
+class="cmtt-10">.xdy </span>file as a&#x00A0;module so that it
+ creates an output file with the extension <span
+class="cmtt-10">.gls</span>. You also need to set the language name
+ and input encoding. If you have access to a terminal or a command prompt
+ (for example, the MSDOS command prompt for Windows users or the bash
+ console for Unix-like users) then you need to run the command (all on one
+ line):
+
+
+ <div class="verbatim" id="verbatim-17">
+ xindy&#x00A0;-L&#x00A0;english&#x00A0;-C&#x00A0;utf8&#x00A0;-I&#x00A0;xindy&#x00A0;-M&#x00A0;myDoc
+ &#x00A0;<br />-t&#x00A0;myDoc.glg&#x00A0;-o&#x00A0;myDoc.gls&#x00A0;myDoc.glo
+</div>
+ <!--l. 1129--><p class="nopar" > (Replace <span
+class="cmtt-10">myDoc </span>with the base name of your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document file. Avoid spaces in the
+ file name. If necessary, also replace <span
+class="cmtt-10">english </span>with the name of your language and <span
+class="cmtt-10">utf8</span>
+ with your input encoding, for example, <span
+class="cmtt-10">-L</span><a
+ id="dx1-8024"></a> <span
+class="cmtt-10">german -C</span><a
+ id="dx1-8025"></a> <span
+class="cmtt-10">din5007-utf8</span>.) Note that it&#8217;s
+ much simpler to use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-8026"></a></a> instead:
+
+
+</p>
+ <div class="verbatim" id="verbatim-18">
+ makeglossaries&#x00A0;myDoc
+</div>
+ <!--l. 1138--><p class="nopar" > (Remember that <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8027"></a></a> is a Perl script so if you can use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8028"></a></a> then you can also use
+ <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-8029"></a></a>, and if you don&#8217;t want to use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-8030"></a></a> because you don&#8217;t want
+ to install Perl, then you can&#8217;t use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8031"></a></a> either.)
+ </p><!--l. 1144--><p class="noindent" >If you don&#8217;t know how to use the command prompt, then you can probably
+ access <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8032"></a></a> or <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-8033"></a></a> via your text editor, but each editor has a
+ different method of doing this, so I&#x00A0;can&#8217;t give a&#x00A0;general description. You
+ will have to check your editor&#8217;s manual. Again, a convenient method is to
+ use <span
+class="cmtt-10">arara </span>and add the follow comment lines to the start of your document:
+ </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;pdflatex</span>
+ <br /><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;makeglossaries</span>
+ <br /><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;pdflatex</span>
+</div>
+ </div>
+ <!--l. 1156--><p class="noindent" >The default sort is word order (&#8220;sea lion&#8221; comes before &#8220;seal&#8221;). If you want letter
+ ordering you need to add the <span
+class="cmss-10">order=letter</span><a
+ id="dx1-8034"></a> package option:
+
+
+</p>
+ <div class="verbatim" id="verbatim-19">
+ \usepackage[xindy,order=letter]{glossaries}
+</div>
+ <!--l. 1161--><p class="nopar" > (and return to the previous step). This option is picked up by <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-8035"></a></a>. If you
+ are explicitly using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8036"></a></a> then you&#8217;ll need to add <span
+class="cmtt-10">-M ord/letorder </span>to the options list.
+ See <a
+href="#sec:xindyapp"><span
+class="tcrm-1000">&sect;</span>1.5.3 </a><a
+href="#sec:xindyapp">Using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-8037"></a></a> explicitly (Option 3)<!--tex4ht:ref: sec:xindyapp --></a> for further details on using <span
+class="cmtt-10">xindy</span><a
+ id="dx1-8038"></a>
+ explicitly.
+ </p></li>
+ <li
+ class="enumerate" id="x1-8040x5">Once you have successfully completed the previous step, you can now run
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document again. As with the previous option, you may need to
+ repeat the process to ensure the table of contents and cross-references are
+ resolved.
+ </li></ol>
+<!--l. 1175--><p class="indent" > Complete example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-20">
+\documentclass{article}
+&#x00A0;<br />\usepackage[xindy]{glossaries}
+&#x00A0;<br />\makeglossaries&#x00A0;%&#x00A0;open&#x00A0;glossary&#x00A0;files
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{sample}.
+&#x00A0;<br />\printglossary
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 1186--><p class="nopar" >
+<a
+ id="x1-8041r4"></a>
+</p><!--l. 1188--><p class="noindent" >
+</p>
+ <h4 class="likesubsectionHead"><a
+ id="x1-90004"></a><a
+ id="option4"></a>Option&#x00A0;4 (<span
+class="cmtt-10">bib2gls</span>)</h4>
+<!--l. 1190--><p class="noindent" >This option is only available with the extension package <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>. This method uses
+<a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-9001"></a></a> to both fetch entry definitions from <span
+class="cmtt-10">.bib </span>files and to hierarchically sort and
+collate.
+</p><!--l. 1195--><p class="indent" > All entries must be provided in one or more <span
+class="cmtt-10">.bib </span>files. (See the <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-9002"></a></a> user manual for
+the required format.) The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-9003"></a> package needs to be loaded with the <span
+class="cmss-10">record </span>package
+option
+
+
+</p>
+ <div class="verbatim" id="verbatim-21">
+\usepackage[record]{glossaries-extra}
+</div>
+<!--l. 1201--><p class="nopar" > or (equivalently)
+
+
+</p>
+ <div class="verbatim" id="verbatim-22">
+\usepackage[record=only]{glossaries-extra}
+</div>
+<!--l. 1205--><p class="nopar" > (It&#8217;s possible to use a hybrid of this method and Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> with <span
+class="cmss-10">record=alsoindex </span>but in
+general there is little need for this and it complicates the build process.)
+</p><!--l. 1210--><p class="indent" > Each resource set is loaded with <span
+class="cmtt-10">\GlsXtrLoadResources[</span>&#x27E8;<span
+class="cmti-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-23">
+\GlsXtrLoadResources
+&#x00A0;<br />[%&#x00A0;definitions&#x00A0;in&#x00A0;entries1.bib&#x00A0;and&#x00A0;entries2.bib:
+&#x00A0;<br />&#x00A0;src={entries1,entries2},
+&#x00A0;<br />&#x00A0;sort={de-CH-1996}%&#x00A0;sort&#x00A0;according&#x00A0;to&#x00A0;this&#x00A0;locale
+&#x00A0;<br />]
+</div>
+<!--l. 1218--><p class="nopar" > You can have multiple resource commands.
+</p><!--l. 1221--><p class="indent" > The glossary is displayed using
+
+
+</p>
+ <div class="verbatim" id="verbatim-24">
+\printunsrtglossary
+</div>
+<!--l. 1224--><p class="nopar" > Alternatively all glossaries can be displayed using the iterative command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-25">
+\printunsrtglossaries
+</div>
+<!--l. 1229--><p class="nopar" > The document is build using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-26">
+pdflatex&#x00A0;myDoc
+&#x00A0;<br />bib2gls&#x00A0;myDoc
+&#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+<!--l. 1235--><p class="nopar" > If letter groups are required, you need the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--group</span></span></span> switch:
+
+
+</p>
+ <div class="verbatim" id="verbatim-27">
+bib2gls&#x00A0;--group&#x00A0;myDoc
+</div>
+<!--l. 1239--><p class="nopar" > Unlike Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>, this method doesn&#8217;t create a file containing the typeset glossary but
+simply determines which entries are needed for the document, their associated locations and
+(if required) their associated letter group. This option allows a mixture of sort methods.
+(For example, sorting by word order for one glossary and order of use for another
+or even sorting one block of the glossary differently to another block in the same
+glossary.)
+</p><!--l. 1249--><p class="indent" > This method supports Unicode and (with at least Java&#x00A0;8) uses the Common
+Locale Data Repository, which provides more extensive language support than
+<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-9004"></a></a>.<span class="footnote-mark"><a
+href="#fn2x1" id="fn2x1-bk"><sup class="textsuperscript">1.2</sup></a></span><a
+ id="x1-9005f2"></a>&#x00A0;The
+locations in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-9007"></a></a> may be in any format. If <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-9008"></a></a> can deduce a numerical value it
+will attempt to form ranges otherwise it will simply list the locations.
+</p><!--l. 1258--><p class="indent" > Complete example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-28">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record]{glossaries-extra}
+&#x00A0;<br />\GlsXtrLoadResources[src={entries}]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{sample}.
+&#x00A0;<br />\printunsrtglossary
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 1267--><p class="nopar" > where <span
+class="cmtt-10">entries.bib </span>contains
+
+
+</p>
+ <div class="verbatim" id="verbatim-29">
+@entry{sample,
+&#x00A0;<br />&#x00A0;name={sample},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}
+&#x00A0;<br />}
+</div>
+<!--l. 1274--><p class="nopar" > See the <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-9009"></a></a> user manual for further details.
+<a
+ id="x1-9010r5"></a>
+</p><!--l. 1277--><p class="noindent" >
+</p>
+ <h4 class="likesubsectionHead"><a
+ id="x1-100005"></a><a
+ id="option5"></a>Option&#x00A0;5 (no sorting)</h4>
+<!--l. 1279--><p class="noindent" >This option is only available with the extension package <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>. No <a
+href="#glo:indexingapp">indexing
+application</a> is required. This method is best used with the package option <span
+class="cmss-10">sort=none</span><a
+ id="dx1-10001"></a>.
+
+
+</p>
+ <div class="verbatim" id="verbatim-30">
+\usepackage[sort=none]{glossaries-extra}
+</div>
+<!--l. 1284--><p class="nopar" > There&#8217;s no &#8220;activation&#8221; command (such as <span
+class="cmtt-10">\makeglossaries </span>for Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>).
+</p><!--l. 1288--><p class="indent" > All entries must be defined before the glossary is displayed (preferably in the preamble) in
+the required order, and child entries must be defined immediately after their parent entry if
+they must be kept together in the glossary
+</p><!--l. 1293--><p class="indent" > The glossary is displayed using
+
+
+</p>
+ <div class="verbatim" id="verbatim-31">
+\printunsrtglossary
+</div>
+<!--l. 1296--><p class="nopar" > Alternatively all glossaries can be displayed using the iterative command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-32">
+\printunsrtglossaries
+</div>
+<!--l. 1301--><p class="nopar" > This will display <span
+class="cmti-10">all </span>defined entries, regardless of whether or not they have been used in the
+document. The <a
+href="#glo:numberlist">number list<a
+ id="dx1-10002"></a>s</a> have to be set explicitly otherwise they won&#8217;t appear. Note
+that this uses the same command for displaying the glossary as <a
+href="#option4">Option&#x00A0;4</a>. This is
+because <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-10003"></a></a> takes advantage of this method by defining the wanted entries
+in the required order and setting the locations (and letter group information, if
+required).
+</p><!--l. 1310--><p class="indent" > This just requires a single <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;call
+
+
+</p>
+ <div class="verbatim" id="verbatim-33">
+pdflatex&#x00A0;myDoc
+</div>
+<!--l. 1313--><p class="nopar" > unless the glossary needs to appear in the table of contents, in which case a second run is
+required.
+
+
+</p>
+ <div class="verbatim" id="verbatim-34">
+pdflatex&#x00A0;myDoc
+&#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+<!--l. 1319--><p class="nopar" > (Naturally if the document also contains citations, and so on, then additional steps are
+required. Similarly for all the other options above.)
+</p><!--l. 1324--><p class="indent" > Complete example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-35">
+\documentclass{article}
+&#x00A0;<br />\usepackage[sort=none]{glossaries-extra}
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{sample}.
+&#x00A0;<br />\printunsrtglossary
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 1334--><p class="nopar" > See the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-10004"></a> documentation for further details.
+</p><!--l. 1338--><p class="noindent" >
+</p>
+<!--l. 1338--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.2 </span> <a
+ id="sec:samples"></a>Sample Documents</h3>
+<!--l. 1341--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>package is provided with some sample documents that illustrate the
+various functions. These should be located in the <span
+class="cmtt-10">samples </span>subdirectory (folder)
+of the <span
+class="cmss-10">glossaries </span>documentation directory. This location varies according to your
+operating system and <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distribution. You can use <span
+class="cmtt-10">texdoc </span>to locate the main
+glossaries documentation. For example, in a <a
+href="http://www.dickimaw-books.com/latex/novices/html/terminal.html" >terminal or command prompt</a>, type:
+<spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">texdoc -l glossaries</span></span>
+</p><!--l. 1351--><p class="indent" > <spacer type=vertical size=10>
+This should display a list of all the files in the glossaries documentation directory with
+their full pathnames. (The GUI version of <span
+class="cmtt-10">texdoc </span>may also provide you with the
+information.)
+</p><!--l. 1356--><p class="indent" > If you can&#8217;t find the sample files on your computer, they are also available from your nearest
+CTAN mirror at <a
+href="http://mirror.ctan.org/macros/latex/contrib/glossaries/samples/" class="url" ><span
+class="cmtt-10">http://mirror.ctan.org/macros/latex/contrib/glossaries/samples/</span></a>.
+</p><!--l. 1360--><p class="indent" > The sample documents are listed
+below<span class="footnote-mark"><a
+href="#fn3x1" id="fn3x1-bk"><sup class="textsuperscript">1.3</sup></a></span><a
+ id="x1-11001f3"></a> If
+you prefer to use UTF-8 aware engines (<span
+class="cmtt-10">xelatex </span>or <span
+class="cmtt-10">lualatex</span>) remember that you&#8217;ll need to
+switch from <span
+class="cmss-10">fontenc </span>&amp; <span
+class="cmss-10">inputenc </span>to <span
+class="cmss-10">fontspec </span>where appropriate. The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package
+provides some additional sample files.
+ </p><dl class="description"><dt class="description">
+<span
+class="cmtt-10">minimalgls.tex</span> </dt><dd
+class="description"><a
+ id="x1-11002r1"></a> This document is a minimal working example. You can test your
+ installation using this file. To create the complete document you will need to do the
+ following steps:
+ <ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-11004x1">Run <span
+class="cmtt-10">minimalgls.tex </span>through <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;either by typing <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex minimalgls</span></span>
+
+
+ <!--l. 1379--><p class="noindent" ><spacer type=vertical size=10>
+ in a terminal or by using the relevant button or menu item in your text editor or
+ front-end. This will create the required associated files but you will not see the
+ glossary. If you use PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;you will also get warnings about non-existent
+ references that look something like:
+
+
+</p>
+ <div class="verbatim" id="verbatim-36">
+ pdfTeX&#x00A0;warning&#x00A0;(dest):&#x00A0;name{glo:aca}&#x00A0;has&#x00A0;been
+ &#x00A0;<br />referenced&#x00A0;but&#x00A0;does&#x00A0;not&#x00A0;exist,
+ &#x00A0;<br />replaced&#x00A0;by&#x00A0;a&#x00A0;fixed&#x00A0;one
+</div>
+ <!--l. 1389--><p class="nopar" > These warnings may be ignored on the first run.
+ </p><!--l. 1392--><p class="noindent" >If you get a <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">Missing</span><span
+class="cmtt-10">&#x00A0;\begin{document}</span></span></span> error, then it&#8217;s most likely that
+ your version of <span
+class="cmss-10">xkeyval</span><a
+ id="dx1-11005"></a> is out of date. Check the log file for a warning
+ of that nature. If this is the case, you will need to update the <span
+class="cmss-10">xkeyval</span>
+ package.
+ </p></li>
+ <li
+ class="enumerate" id="x1-11007x2">If you have Perl installed, run <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11008"></a></a> on the document (<a
+href="#sec:makeglossaries"><span
+class="tcrm-1000">&sect;</span>1.5 </a><a
+href="#sec:makeglossaries">Generating
+ the Associated Glossary Files<!--tex4ht:ref: sec:makeglossaries --></a>). This can be done on a terminal by typing
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries minimalgls</span></span>
+ <!--l. 1402--><p class="noindent" ><spacer type=vertical size=10>
+ otherwise do <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries-lite minimalgls</span></span>
+ </p><!--l. 1406--><p class="noindent" ><spacer type=vertical size=10>
+ If for some reason you want to call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11009"></a></a> explicitly, you can do this in a
+ terminal by typing (all on one line): <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex -s minimalgls.ist -t minimalgls.glg -o minimalgls.gls</span>
+ <span
+class="cmtt-10">minimalgls.glo</span></span>
+ </p><!--l. 1411--><p class="noindent" ><spacer type=vertical size=10>
+ (See <a
+href="#sec:makeindexapp"><span
+class="tcrm-1000">&sect;</span>1.5.4 </a><a
+href="#sec:makeindexapp">Using <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11010"></a></a> explicitly (Option 2)<!--tex4ht:ref: sec:makeindexapp --></a> for further details on using
+ <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11011"></a> explicitly.)
+ </p><!--l. 1415--><p class="noindent" >Note that if the file name contains spaces, you will need to use the double-quote
+ character to delimit the name.
+ </p></li>
+ <li
+ class="enumerate" id="x1-11013x3">Run <span
+class="cmtt-10">minimalgls.tex </span>through <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;again (as step&#x00A0;1)</li></ol>
+ <!--l. 1420--><p class="noindent" >You should now have a complete document. The number following each entry in the
+ glossary is the location number. By default, this is the page number where the entry
+ was referenced.
+ </p><!--l. 1424--><p class="noindent" >There are three other files that can be used as a <a
+href="http://www.dickimaw-books.com/latex/minexample/" >minimal working example</a>:
+ <span
+class="cmtt-10">mwe-gls.tex</span>, <span
+class="cmtt-10">mwe-acr.tex </span>and <span
+class="cmtt-10">mwe-acr-desc.tex</span>.
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-noidxapp.tex</span> </dt><dd
+class="description"><a
+ id="x1-11014r2"></a> This document illustrates how to use the <span
+class="cmss-10">glossaries </span>package without
+ an external <a
+href="#glo:indexingapp">indexing application</a> (<a
+href="#option1">Option&#x00A0;1</a>). To create the complete document, you
+ need to do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-noidxapp</span>
+
+
+ <br /><span
+class="cmtt-10">latex sample-noidxapp</span></span>
+ <!--l. 1435--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-noidxapp-utf8.tex</span> </dt><dd
+class="description"><a
+ id="x1-11015r3"></a> As the previous example, except that it uses the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-11016"></a>
+ package. To create the complete document, you need to do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-noidxapp-utf8</span>
+ <br /><span
+class="cmtt-10">latex sample-noidxapp-utf8</span></span>
+ <!--l. 1443--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample4col.tex</span> </dt><dd
+class="description"><a
+ id="x1-11017r4"></a> This document illustrates a four column glossary where the entries have a
+ symbol in addition to the name and description. To create the complete document, you
+ need to do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample4col</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample4col</span>
+ <br /><span
+class="cmtt-10">latex sample4col</span></span>
+ <!--l. 1453--><p class="noindent" ><spacer type=vertical size=10>
+ or <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample4col</span>
+ <br /><span
+class="cmtt-10">makeglossaries-lite sample4col</span>
+ <br /><span
+class="cmtt-10">latex sample4col</span></span>
+ </p><!--l. 1459--><p class="noindent" ><spacer type=vertical size=10>
+ The vertical gap between entries is the gap created at the start of each group. This can
+ be suppressed using the <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-11018"></a> package option.
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleAcr.tex</span> </dt><dd
+class="description"><a
+ id="x1-11019r5"></a> This document has some sample abbreviations. It also adds the glossary to
+ the table of contents, so an extra run through <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is required to ensure the
+ document is up to date: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleAcr</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleAcr</span>
+ <br /><span
+class="cmtt-10">latex sampleAcr</span>
+ <br /><span
+class="cmtt-10">latex sampleAcr</span></span>
+ <!--l. 1473--><p class="noindent" ><spacer type=vertical size=10>
+ (or use <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11020"></a></a>).
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleAcrDesc.tex</span> </dt><dd
+class="description"><a
+ id="x1-11021r6"></a> This is similar to the previous example, except that the abbreviations
+ have an associated description. As with the previous example, the glossary is
+
+
+ added to the table of contents, so an extra run through <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is required:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleAcrDesc</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleAcrDesc</span>
+ <br /><span
+class="cmtt-10">latex sampleAcrDesc</span>
+ <br /><span
+class="cmtt-10">latex sampleAcrDesc</span></span>
+ <!--l. 1485--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleDesc.tex</span> </dt><dd
+class="description"><a
+ id="x1-11022r7"></a> This is similar to the previous example, except that it defines the
+ abbreviations using <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-11023"></a> instead of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-11024"></a>. As with the previous
+ example, the glossary is added to the table of contents, so an extra run through
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is required: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleDesc</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleDesc</span>
+ <br /><span
+class="cmtt-10">latex sampleDesc</span>
+ <br /><span
+class="cmtt-10">latex sampleDesc</span></span>
+ <!--l. 1497--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleCustomAcr.tex</span> </dt><dd
+class="description"><a
+ id="x1-11025r8"></a> This document has some sample abbreviations with a custom
+ acronym style. It also adds the glossary to the table of contents, so an extra run through
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is required: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleCustomAcr</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleCustomAcr</span>
+ <br /><span
+class="cmtt-10">latex sampleCustomAcr</span>
+ <br /><span
+class="cmtt-10">latex sampleCustomAcr</span></span>
+ <!--l. 1507--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleFnAcrDesc.tex</span> </dt><dd
+class="description"><a
+ id="x1-11026r9"></a> This is similar to <a
+href="#x1-11021r6"><span
+class="cmtt-10">sampleAcrDesc.tex</span></a>, except that it uses the
+ <span
+class="cmss-10">footnote-sc-desc</span><a
+ id="dx1-11027"></a> style. As with the previous example, the glossary is added to the table
+ of contents, so an extra run through <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is required: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleFnAcrDesc</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleFnAcrDesc</span>
+ <br /><span
+class="cmtt-10">latex sampleFnAcrDesc</span>
+ <br /><span
+class="cmtt-10">latex sampleFnAcrDesc</span></span>
+ <!--l. 1518--><p class="noindent" ><spacer type=vertical size=10>
+
+
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-FnDesc.tex</span> </dt><dd
+class="description"><a
+ id="x1-11028r10"></a> This example defines a custom display format that puts the description
+ in a footnote on first use. <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-FnDesc</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-FnDesc</span>
+ <br /><span
+class="cmtt-10">latex sample-FnDesc</span></span>
+ <!--l. 1527--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-custom-acronym.tex</span> </dt><dd
+class="description"><a
+ id="x1-11029r11"></a> This document illustrates how to define your own acronym
+ style if the predefined styles don&#8217;t suit your requirements. <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-custom-acronym</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-custom-acronym</span>
+ <br /><span
+class="cmtt-10">latex sample-custom-acronym</span></span>
+ <!--l. 1536--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-crossref.tex</span> </dt><dd
+class="description"><a
+ id="x1-11030r12"></a> This document illustrates how to cross-reference entries in the
+ glossary. <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-crossref</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-crossref</span>
+ <br /><span
+class="cmtt-10">latex sample-crossref</span></span>
+ <!--l. 1545--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-dot-abbr.tex</span> </dt><dd
+class="description"><a
+ id="x1-11031r13"></a> This document illustrates how to use the post link hook to adjust the
+ space factor after abbreviations. <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-dot-abbr</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampledot-abbrf</span>
+ <br /><span
+class="cmtt-10">latex sample-dot-abbr</span></span>
+ <!--l. 1553--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleDB.tex</span> </dt><dd
+class="description"><a
+ id="x1-11032r14"></a> This document illustrates how to load external files containing the glossary
+ definitions. It also illustrates how to define a new glossary type. This document has the
+ <a
+href="#glo:numberlist">number list<a
+ id="dx1-11033"></a></a> suppressed and uses <span
+class="cmtt-10">\glsaddall</span><a
+ id="dx1-11034"></a> to add all the entries to the
+ glossaries without referencing each one explicitly. To create the document do:
+ <spacer type=vertical size=10><span class="obeylines-h">
+
+
+ <br /><span
+class="cmtt-10">latex sampleDB</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleDB</span>
+ <br /><span
+class="cmtt-10">latex sampleDB</span></span>
+ <!--l. 1565--><p class="noindent" ><spacer type=vertical size=10>
+ or <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleDB</span>
+ <br /><span
+class="cmtt-10">makeglossaries-lite sampleDB</span>
+ <br /><span
+class="cmtt-10">latex sampleDB</span></span>
+ </p><!--l. 1571--><p class="noindent" ><spacer type=vertical size=10>
+ The glossary definitions are stored in the accompanying files <span
+class="cmtt-10">database1.tex </span>and
+ <span
+class="cmtt-10">database2.tex</span>. If for some reason you want to call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11035"></a></a> explicitly you must have
+ a separate call for each glossary:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-11037x1">
+ Create
+ the
+ main
+ glossary
+ (all
+ on
+ one
+ line):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex</span>
+ <span
+class="cmtt-10">-s</span>
+ <span
+class="cmtt-10">sampleDB.ist</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">sampleDB.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">sampleDB.gls</span>
+ <span
+class="cmtt-10">sampleDB.glo</span></span>
+ <!--l. 1580--><p class="noindent" ><spacer type=vertical size=10>
+ </p></li>
+ <li
+ class="enumerate" id="x1-11039x2">
+ Create
+ the
+ secondary
+ glossary
+ (all
+ on
+
+
+ one
+ line):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex</span>
+ <span
+class="cmtt-10">-s</span>
+ <span
+class="cmtt-10">sampleDB.ist</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">sampleDB.nlg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">sampleDB.not</span>
+ <span
+class="cmtt-10">sampleDB.ntn</span></span>
+ <!--l. 1584--><p class="noindent" ><spacer type=vertical size=10>
+ Note that both <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11040"></a></a> and <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11041"></a></a> do this all in one call,
+ so they not only make it easier because you don&#8217;t need to supply all the switches
+ and remember all the extensions but they also call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11042"></a></a> the appropriate
+ number of times.</p></li></ol>
+ </dd><dt class="description">
+<span
+class="cmtt-10">sampleEq.tex</span> </dt><dd
+class="description"><a
+ id="x1-11043r15"></a> This document illustrates how to change the location to something other
+ than the page number. In this case, the <span
+class="cmtt-10">equation </span>counter is used since all glossary
+ entries appear inside an <span
+class="cmss-10">equation</span><a
+ id="dx1-11044"></a><a
+ id="dx1-11045"></a> environment. To create the document do:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleEq</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleEq</span>
+ <br /><span
+class="cmtt-10">latex sampleEq</span></span>
+ <!--l. 1600--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleEqPg.tex</span> </dt><dd
+class="description"><a
+ id="x1-11046r16"></a> This is similar to the previous example, but the <a
+href="#glo:numberlist">number list<a
+ id="dx1-11047"></a>s</a>
+ are a mixture of page numbers and equation numbers. This example adds
+ the glossary to the table of contents, so an extra <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run is required:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleEqPg</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleEqPg</span>
+ <br /><span
+class="cmtt-10">latex sampleEqPg</span>
+ <br /><span
+class="cmtt-10">latex sampleEqPg</span></span>
+ <!--l. 1612--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleSec.tex</span> </dt><dd
+class="description"><a
+ id="x1-11048r17"></a> This document also illustrates how to change the location to something
+ other than the page number. In this case, the <span
+class="cmtt-10">section </span>counter is used. This example
+ adds the glossary to the table of contents, so an extra <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run is required:
+ <spacer type=vertical size=10><span class="obeylines-h">
+
+
+ <br /><span
+class="cmtt-10">latex sampleSec</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleSec</span>
+ <br /><span
+class="cmtt-10">latex sampleSec</span>
+ <br /><span
+class="cmtt-10">latex sampleSec</span></span>
+ <!--l. 1624--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleNtn.tex</span> </dt><dd
+class="description"><a
+ id="x1-11049r18"></a> This document illustrates how to create an additional glossary type. This
+ example adds the glossary to the table of contents, so an extra <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run is required:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleNtn</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleNtn</span>
+ <br /><span
+class="cmtt-10">latex sampleNtn</span>
+ <br /><span
+class="cmtt-10">latex sampleNtn</span></span>
+ <!--l. 1635--><p class="noindent" ><spacer type=vertical size=10>
+ Note that if you want to call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11050"></a></a> explicitly instead of using <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11051"></a></a> or
+ <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11052"></a></a> then you need to call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11053"></a></a> twice:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-11055x1">
+ Create
+ the
+ main
+ glossary
+ (all
+ on
+ one
+ line):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex</span>
+ <span
+class="cmtt-10">-s</span>
+ <span
+class="cmtt-10">sampleNtn.ist</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">sampleNtn.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">sampleNtn.gls</span>
+ <span
+class="cmtt-10">sampleNtn.glo</span></span>
+ <!--l. 1643--><p class="noindent" ><spacer type=vertical size=10>
+ </p></li>
+
+
+ <li
+ class="enumerate" id="x1-11057x2">
+ Create
+ the
+ secondary
+ glossary
+ (all
+ on
+ one
+ line):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex</span>
+ <span
+class="cmtt-10">-s</span>
+ <span
+class="cmtt-10">sampleNtn.ist</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">sampleNtn.nlg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">sampleNtn.not</span>
+ <span
+class="cmtt-10">sampleNtn.ntn</span></span>
+ <!--l. 1647--><p class="noindent" ><spacer type=vertical size=10>
+ </p></li></ol>
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample.tex</span> </dt><dd
+class="description"><a
+ id="x1-11058r19"></a> This document illustrates some of the basics, including how to create child
+ entries that use the same name as the parent entry. This example adds the glossary to
+ the table of contents and it also uses <span
+class="cmtt-10">\glsrefentry</span><a
+ id="dx1-11059"></a>, so an extra <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run is
+ required: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample</span>
+ <br /><span
+class="cmtt-10">latex sample</span>
+ <br /><span
+class="cmtt-10">latex sample</span></span>
+ <!--l. 1660--><p class="noindent" ><spacer type=vertical size=10>
+ You can see the difference between word and letter ordering if you substitute
+ <span
+class="cmss-10">order=word</span><a
+ id="dx1-11060"></a> with <span
+class="cmss-10">order=letter</span><a
+ id="dx1-11061"></a>. (Note that this will only have an effect if you use
+ <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11062"></a></a> or <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11063"></a></a>. If you use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11064"></a></a> explicitly, you will
+ need to use the <span
+class="cmtt-10">-l</span><a
+ id="dx1-11065"></a> switch to indicate letter ordering.)
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-inline.tex</span> </dt><dd
+class="description"><a
+ id="x1-11066r20"></a> This document is like <span
+class="cmtt-10">sample.tex</span>, above, but uses the <span
+class="cmss-10">inline</span><a
+ id="dx1-11067"></a> glossary
+ style to put the glossary in a footnote.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sampletree.tex</span> </dt><dd
+class="description"><a
+ id="x1-11068r21"></a> This document illustrates a hierarchical glossary structure where child
+ entries have different names to their corresponding parent entry. To create the
+ document do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampletree</span>
+
+
+ <br /><span
+class="cmtt-10">makeglossaries sampletree</span>
+ <br /><span
+class="cmtt-10">latex sampletree</span></span>
+ <!--l. 1680--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-dual.tex</span> </dt><dd
+class="description"><a
+ id="x1-11069r22"></a> This document illustrates how to define an entry that both appears in
+ the list of acronyms and in the main glossary. To create the document do:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-dual</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-dual</span>
+ <br /><span
+class="cmtt-10">latex sample-dual</span></span>
+ <!--l. 1689--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-langdict.tex</span> </dt><dd
+class="description"><a
+ id="x1-11070r23"></a> This document illustrates how to use the glossaries package to create
+ English to French and French to English dictionaries. To create the document do:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-langdict</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-langdict</span>
+ <br /><span
+class="cmtt-10">latex sample-langdict</span></span>
+ <!--l. 1699--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">samplexdy.tex</span> </dt><dd
+class="description"><a
+ id="x1-11071r24"></a> This document illustrates how to use the <span
+class="cmss-10">glossaries </span>package with <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11072"></a></a>
+ instead of <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11073"></a></a>. The document uses UTF8 encoding (with the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-11074"></a> package).
+ The encoding is picked up by <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11075"></a></a>. By default, this document will
+ create a <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11076"></a></a> style file called <span
+class="cmtt-10">samplexdy.xdy</span>, but if you uncomment the
+ lines
+
+
+ <div class="verbatim" id="verbatim-37">
+ \setStyleFile{samplexdy-mc}
+ &#x00A0;<br />\noist
+ &#x00A0;<br />\GlsSetXdyLanguage{}
+</div>
+ <!--l. 1712--><p class="nopar" > it will set the style file to <span
+class="cmtt-10">samplexdy-mc.xdy </span>instead. This provides an additional letter
+ group for entries starting with &#8220;Mc&#8221; or &#8220;Mac&#8221;. If you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11077"></a></a> or
+ <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11078"></a></a>, you don&#8217;t need to supply any additional information. If you
+ don&#8217;t use <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11079"></a>, you will need to specify the required information. Note that
+ if you set the style file to <span
+class="cmtt-10">samplexdy-mc.xdy </span>you must also specify <span
+class="cmtt-10">\noist</span><a
+ id="dx1-11080"></a>, otherwise
+ the <span
+class="cmss-10">glossaries </span>package will overwrite <span
+class="cmtt-10">samplexdy-mc.xdy </span>and you will lose the &#8220;Mc&#8221;
+ letter group.
+ </p><!--l. 1725--><p class="noindent" >To create the document do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex samplexdy</span>
+ <br /><span
+class="cmtt-10">makeglossaries samplexdy</span>
+ <br /><span
+class="cmtt-10">latex samplexdy</span></span>
+ </p><!--l. 1730--><p class="noindent" ><spacer type=vertical size=10>
+ If you don&#8217;t have Perl installed then you can&#8217;t use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11081"></a></a>, but you also can&#8217;t
+ use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11082"></a></a>! However, if for some reason you want to call <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11083"></a></a> explicitly instead of using
+ <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11084"></a></a> (or <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11085"></a></a>): </p>
+ <ul class="itemize1">
+ <li class="itemize">
+ if
+ you
+ are
+ using
+ the
+ default
+ style
+ file
+ <span
+class="cmtt-10">samplexdy.xdy</span>,
+ then
+ do
+ (no
+ line
+ breaks):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-L</span>
+ <span
+class="cmtt-10">english</span>
+
+
+ <span
+class="cmtt-10">-C</span>
+ <span
+class="cmtt-10">utf8</span>
+ <span
+class="cmtt-10">-I</span>
+ <span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-M</span>
+ <span
+class="cmtt-10">samplexdy</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">samplexdy.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">samplexdy.gls</span>
+ <span
+class="cmtt-10">samplexdy.glo</span></span>
+ <!--l. 1741--><p class="noindent" ><spacer type=vertical size=10>
+ </p></li>
+ <li class="itemize">
+ if
+ you
+ are
+ using
+ <span
+class="cmtt-10">samplexdy-mc.xdy</span>,
+ then
+ do
+ (no
+ line
+ breaks):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-I</span>
+ <span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-M</span>
+ <span
+class="cmtt-10">samplexdy-mc</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">samplexdy.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">samplexdy.gls</span>
+ <span
+class="cmtt-10">samplexdy.glo</span></span>
+ <!--l. 1746--><p class="noindent" ><spacer type=vertical size=10>
+ </p></li></ul>
+ </dd><dt class="description">
+<span
+class="cmtt-10">samplexdy2.tex</span> </dt><dd
+class="description"><a
+ id="x1-11086r25"></a> This document illustrates how to use the <span
+class="cmss-10">glossaries </span>package where the
+ location numbers don&#8217;t follow a standard format. This example will only work with
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11087"></a></a>. To create the document do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">pdflatex samplexdy2</span>
+
+
+ <br /><span
+class="cmtt-10">makeglossaries samplexdy2</span>
+ <br /><span
+class="cmtt-10">pdflatex samplexdy2</span></span>
+ <!--l. 1757--><p class="noindent" ><spacer type=vertical size=10>
+ The
+ explicit
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11088"></a></a>
+ call
+ is:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-L</span>
+ <span
+class="cmtt-10">english</span>
+ <span
+class="cmtt-10">-C</span>
+ <span
+class="cmtt-10">utf8</span>
+ <span
+class="cmtt-10">-I</span>
+ <span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-M</span>
+ <span
+class="cmtt-10">samplexdy2</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">samplexdy2.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">samplexdy2.gls</span>
+ <span
+class="cmtt-10">samplexdy2.glo</span></span>
+ </p><!--l. 1761--><p class="noindent" ><spacer type=vertical size=10>
+ See <a
+href="#sec:xindyloc"><span
+class="tcrm-1000">&sect;</span>11.2 </a><a
+href="#sec:xindyloc">Locations and Number lists<!--tex4ht:ref: sec:xindyloc --></a> for further details.
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">samplexdy3.tex</span> </dt><dd
+class="description"><a
+ id="x1-11089r26"></a> This document is like <a
+href="#x1-11071r24"><span
+class="cmtt-10">samplexdy.tex</span></a> but uses the command
+ <span
+class="cmtt-10">\Numberstring </span>from the <span
+class="cmss-10">fmtcount</span><a
+ id="dx1-11090"></a> package to format the page numbers.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sampleutf8.tex</span> </dt><dd
+class="description"><a
+ id="x1-11091r27"></a> This is another example that uses <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11092"></a></a>. Unlike <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11093"></a></a>, <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11094"></a></a> can
+ cope with <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-11095"></a>s</a>. This document uses UTF8 encoding. To create the
+ document do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleutf8</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleutf8</span>
+ <br /><span
+class="cmtt-10">latex sampleutf8</span></span>
+ <!--l. 1776--><p class="noindent" ><spacer type=vertical size=10>
+ The
+ explicit
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-11096"></a></a>
+ call
+
+
+ is
+ (no
+ line
+ breaks):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-L</span>
+ <span
+class="cmtt-10">english</span>
+ <span
+class="cmtt-10">-C</span>
+ <span
+class="cmtt-10">utf8</span>
+ <span
+class="cmtt-10">-I</span>
+ <span
+class="cmtt-10">xindy</span>
+ <span
+class="cmtt-10">-M</span>
+ <span
+class="cmtt-10">sampleutf8</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">sampleutf8.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">sampleutf8.gls</span>
+ <span
+class="cmtt-10">sampleutf8.glo</span></span>
+ </p><!--l. 1781--><p class="noindent" ><spacer type=vertical size=10>
+ </p><!--l. 1783--><p class="noindent" >If you remove the <span
+class="cmss-10">xindy</span><a
+ id="dx1-11097"></a> option from <span
+class="cmtt-10">sampleutf8.tex </span>and do: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleutf8</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleutf8</span>
+ <br /><span
+class="cmtt-10">latex sampleutf8</span></span>
+ </p><!--l. 1789--><p class="noindent" ><spacer type=vertical size=10>
+ or <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleutf8</span>
+ <br /><span
+class="cmtt-10">makeglossaries-lite sampleutf8</span>
+ <br /><span
+class="cmtt-10">latex sampleutf8</span></span>
+ </p><!--l. 1795--><p class="noindent" ><spacer type=vertical size=10>
+ you
+ will
+ see
+ that
+ the
+ entries
+ that
+ start
+ with
+ an
+ <a
+href="#glo:exlatinchar">extended
+
+
+ Latin
+ character<a
+ id="dx1-11098"></a></a>
+ now
+ appear
+ in
+ the
+ symbols
+ group,
+ and
+ the
+ word
+ &#8220;man&#339;uvre&#8221;
+ is
+ now
+ after
+ &#8220;manor&#8221;
+ instead
+ of
+ before
+ it.
+ If
+ you
+ want
+ to
+ explicitly
+ call
+ <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-11099"></a></a>
+ (no
+ line
+ breaks):
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex</span>
+ <span
+class="cmtt-10">-s</span>
+ <span
+class="cmtt-10">sampleutf8.ist</span>
+ <span
+class="cmtt-10">-t</span>
+ <span
+class="cmtt-10">sampleutf8.glg</span>
+ <span
+class="cmtt-10">-o</span>
+ <span
+class="cmtt-10">sampleutf8.gls</span>
+ <span
+class="cmtt-10">sampleutf8.glo</span></span>
+ </p><!--l. 1802--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-index.tex</span> </dt><dd
+class="description"><a
+ id="x1-11100r28"></a> This document uses the <span
+class="cmss-10">glossaries </span>package to create both a glossary and
+ an index. This requires two <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-11101"></a></a> (or <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-11102"></a></a>) calls to ensure
+ the document is up to date: <spacer type=vertical size=10><span class="obeylines-h">
+
+
+ <br /><span
+class="cmtt-10">latex sample-index</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-index</span>
+ <br /><span
+class="cmtt-10">latex sample-index</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-index</span>
+ <br /><span
+class="cmtt-10">latex sample-index</span></span>
+ <!--l. 1815--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-newkeys.tex</span> </dt><dd
+class="description"><a
+ id="x1-11103r29"></a> This document illustrates how add custom keys (using <span
+class="cmtt-10">\glsaddkey</span>).
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-storage-abbr.tex</span> </dt><dd
+class="description"><a
+ id="x1-11104r30"></a> This document illustrates how add custom storage keys (using
+ <span
+class="cmtt-10">\glsaddstoragekey</span>).
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-storage-abbr-desc.tex</span> </dt><dd
+class="description"><a
+ id="x1-11105r31"></a> An extension of the previous example where the user
+ needs to provide a&#x00A0;description.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-chap-hyperfirst.tex</span> </dt><dd
+class="description"><a
+ id="x1-11106r32"></a> This document illustrates how to add a&#x00A0;custom key using
+ <span
+class="cmtt-10">\glsaddstoragekey </span>and hook into the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;mechanism used to
+ determine whether or not to hyperlink an entry.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-font-abbr.tex</span> </dt><dd
+class="description"><a
+ id="x1-11107r33"></a> This document illustrates how to different fonts for abbreviations
+ within the style.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-numberlist.tex</span> </dt><dd
+class="description"><a
+ id="x1-11108r34"></a> This document illustrates how to reference the <a
+href="#glo:numberlist">number list<a
+ id="dx1-11109"></a></a> in the
+ document text. This requires an additional <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-numberlist</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-numberlist</span>
+ <br /><span
+class="cmtt-10">latex sample-numberlist</span>
+ <br /><span
+class="cmtt-10">latex sample-numberlist</span></span>
+ <!--l. 1842--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">samplePeople.tex</span> </dt><dd
+class="description"><a
+ id="x1-11110r35"></a> This document illustrates how you can hook into the standard sort
+ mechanism to adjust the way the sort key is set. This requires an additional run to
+ ensure the table of contents is up-to-date: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex samplePeople</span>
+ <br /><span
+class="cmtt-10">makeglossaries samplePeople</span>
+ <br /><span
+class="cmtt-10">latex samplePeople</span>
+
+
+ <br /><span
+class="cmtt-10">latex samplePeople</span></span>
+ <!--l. 1853--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleSort.tex</span> </dt><dd
+class="description"><a
+ id="x1-11111r36"></a> This is another document that illustrates how to hook into the standard
+ sort mechanism. An additional run is required to ensure the table of contents is
+ up-to-date: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sampleSort</span>
+ <br /><span
+class="cmtt-10">makeglossaries sampleSort</span>
+ <br /><span
+class="cmtt-10">latex sampleSort</span>
+ <br /><span
+class="cmtt-10">latex sampleSort</span></span>
+ <!--l. 1863--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sample-nomathhyper.tex</span> </dt><dd
+class="description"><a
+ id="x1-11112r37"></a> This document illustrates how to selectively enable and disable
+ entry hyperlinks in <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-11113"></a>.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-entryfmt.tex</span> </dt><dd
+class="description"><a
+ id="x1-11114r38"></a> This document illustrates how to change the way an entry is
+ displayed in the text.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-prefix.tex</span> </dt><dd
+class="description"><a
+ id="x1-11115r39"></a> This document illustrates the use of the <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-11116"></a> package.
+ An additional run is required to ensure the table of contents is up-to-date:
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex sample-prefix</span>
+ <br /><span
+class="cmtt-10">makeglossaries sample-prefix</span>
+ <br /><span
+class="cmtt-10">latex sample-prefix</span>
+ <br /><span
+class="cmtt-10">latex sample-prefix</span></span>
+ <!--l. 1879--><p class="noindent" ><spacer type=vertical size=10>
+ </p></dd><dt class="description">
+<span
+class="cmtt-10">sampleaccsupp.tex</span> </dt><dd
+class="description"><a
+ id="x1-11117r40"></a> This document uses the experimental <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-11118"></a> package. The
+ symbol is set to the replacement text. Note that some PDF viewers don&#8217;t use the
+ accessibility support. Information about the <span
+class="cmss-10">glossaries-accsupp </span>package can be found in
+ <a
+href="#sec:accsupp"><span
+class="tcrm-1000">&sect;</span>18 </a><a
+href="#sec:accsupp">Accessibility Support<!--tex4ht:ref: sec:accsupp --></a>.
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-ignored.tex</span> </dt><dd
+class="description"><a
+ id="x1-11119r41"></a> This document defines an ignored glossary for common terms that
+ don&#8217;t need a definition.
+
+
+ </dd><dt class="description">
+<span
+class="cmtt-10">sample-entrycount.tex</span> </dt><dd
+class="description"><a
+ id="x1-11120r42"></a> This document uses <span
+class="cmtt-10">\glsenableentrycount</span><a
+ id="dx1-11121"></a> and <span
+class="cmtt-10">\cgls</span><a
+ id="dx1-11122"></a> (described
+ in <a
+href="#sec:enableentrycount"><span
+class="tcrm-1000">&sect;</span>14.1 </a><a
+href="#sec:enableentrycount">Counting the Number of Times an Entry has been Used (First Use
+ Flag Unset)<!--tex4ht:ref: sec:enableentrycount --></a>) so that acronyms only used once don&#8217;t appear in the list of
+ acronyms.</dd></dl>
+<!--l. 1897--><p class="noindent" >
+</p>
+<!--l. 1897--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.3 </span> <a
+ id="sec:lipsum"></a>Dummy Entries for Testing</h3>
+<!--l. 1900--><p class="noindent" >In addition to the sample files described above, <span
+class="cmss-10">glossaries</span><a
+ id="dx1-12001"></a> also provides some files containing
+lorum ipsum dummy entries. These are provided for testing purposes and are on <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s path
+(in <span
+class="cmtt-10">tex/latex/glossaries/test-entries</span>) so they can be included via <span
+class="cmtt-10">\input</span><a
+ id="dx1-12002"></a> or
+<span
+class="cmtt-10">\loadglsentries</span><a
+ id="dx1-12003"></a>. The files are as follows:
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">example-glossaries-brief.tex</span> </dt><dd
+class="description">These entries all have brief descriptions. For example:
+
+
+ <div class="verbatim" id="verbatim-38">
+ \newglossaryentry{lorem}{name={lorem},description={ipsum}}
+</div>
+ <!--l. 1910--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-long.tex</span> </dt><dd
+class="description">These entries all have long descriptions. For example:
+
+
+ <div class="verbatim" id="verbatim-39">
+ \newglossaryentry{loremipsum}{name={lorem&#x00A0;ipsum},
+ &#x00A0;<br />description={dolor&#x00A0;sit&#x00A0;amet,&#x00A0;consectetuer&#x00A0;adipiscing
+ &#x00A0;<br />elit.&#x00A0;Ut&#x00A0;purus&#x00A0;elit,&#x00A0;vestibulum&#x00A0;ut,&#x00A0;placerat&#x00A0;ac,
+ &#x00A0;<br />adipiscing&#x00A0;vitae,&#x00A0;felis.&#x00A0;Curabitur&#x00A0;dictum&#x00A0;gravida
+ &#x00A0;<br />mauris.}}
+</div>
+ <!--l. 1920--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-multipar.tex</span> </dt><dd
+class="description">These entries all have multi-paragraph descriptions.
+ </dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-symbols.tex</span> </dt><dd
+class="description">These entries all use the <span
+class="cmss-10">symbol</span><a
+ id="dx1-12004"></a> key. For example:
+
+
+ <div class="verbatim" id="verbatim-40">
+ \newglossaryentry{alpha}{name={alpha},
+ &#x00A0;<br />symbol={\ensuremath{\alpha}},
+ &#x00A0;<br />description={Quisque&#x00A0;ullamcorper&#x00A0;placerat&#x00A0;ipsum.}}
+</div>
+ <!--l. 1931--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-symbolnames.tex</span> </dt><dd
+class="description">Similar to the previous file but the <span
+class="cmss-10">symbol</span><a
+ id="dx1-12005"></a> key isn&#8217;t
+ used. Instead the symbol is stored in the <span
+class="cmss-10">name</span><a
+ id="dx1-12006"></a> key. For example:
+
+
+ <div class="verbatim" id="verbatim-41">
+ \newglossaryentry{sym.alpha}{sort={alpha},
+ &#x00A0;<br />name={\ensuremath{\alpha}},
+ &#x00A0;<br />description={Quisque&#x00A0;ullamcorper&#x00A0;placerat&#x00A0;ipsum.}}
+</div>
+ <!--l. 1940--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-images.tex</span> </dt><dd
+class="description">These entries use the <span
+class="cmss-10">user1</span><a
+ id="dx1-12007"></a> key to store the name of an
+ image file. (The images are provided by the <span
+class="cmss-10">mwe</span><a
+ id="dx1-12008"></a> package and should be on <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s
+ path.) One entry doesn&#8217;t have an associated image to help test for a&#x00A0;missing
+ key.
+ </dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-acronym.tex</span> </dt><dd
+class="description">These entries are all abbreviations. For example:
+
+
+ <div class="verbatim" id="verbatim-42">
+ \newacronym[type=\glsdefaulttype]{lid}{LID}{lorem&#x00A0;ipsum
+ &#x00A0;<br />dolor}
+</div>
+ <!--l. 1952--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-acronym-desc.tex</span> </dt><dd
+class="description">These entries are all abbreviations that use the
+ <span
+class="cmss-10">description</span><a
+ id="dx1-12009"></a> key. For example:
+
+
+ <div class="verbatim" id="verbatim-43">
+ \newacronym[type=\glsdefaulttype,
+ &#x00A0;<br />&#x00A0;&#x00A0;description={fringilla&#x00A0;a,&#x00A0;euismod&#x00A0;sodales,
+ &#x00A0;<br />&#x00A0;&#x00A0;sollicitudin&#x00A0;vel,&#x00A0;wisi}]{ndl}{NDL}{nam&#x00A0;dui&#x00A0;ligula}
+</div>
+ <!--l. 1961--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-acronyms-lang.tex</span> </dt><dd
+class="description">These entries are all abbreviations, where some of
+ them have a&#x00A0;translation supplied in the <span
+class="cmss-10">user1</span><a
+ id="dx1-12010"></a> key. For example:
+
+
+ <div class="verbatim" id="verbatim-44">
+ \newacronym[type=\glsdefaulttype,user1={love&#x00A0;itself}]
+ &#x00A0;<br />&#x00A0;{li}{LI}{lorem&#x00A0;ipsum}
+</div>
+ <!--l. 1970--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-parent.tex</span> </dt><dd
+class="description">These are hierarchical entries where the child entries use
+ the <span
+class="cmss-10">name</span><a
+ id="dx1-12011"></a> key. For example:
+
+
+ <div class="verbatim" id="verbatim-45">
+ \newglossaryentry{sedmattis}{name={sed&#x00A0;mattis},
+ &#x00A0;<br />description={erat&#x00A0;sit&#x00A0;amet}
+ &#x00A0;<br />\newglossaryentry{gravida}{parent={sedmattis},
+ &#x00A0;<br />&#x00A0;&#x00A0;name={gravida},description={malesuada}}
+</div>
+ <!--l. 1981--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-childnoname.tex</span> </dt><dd
+class="description">These are hierarchical entries where the child
+ entries don&#8217;t use the <span
+class="cmss-10">name</span><a
+ id="dx1-12012"></a> key. For example:
+
+
+ <div class="verbatim" id="verbatim-46">
+ \newglossaryentry{scelerisque}{name={scelerisque},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={at}}
+</div>
+ <!--l. 1989--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-cite.tex</span> </dt><dd
+class="description">These entries use the <span
+class="cmss-10">user1</span><a
+ id="dx1-12013"></a> key to store a citation
+ key (or comma-separated list of citation keys). The citations are defined in
+ <span
+class="cmtt-10">xampl.bib</span>, which should be available on all modern <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions. One
+ entry doesn&#8217;t have an associated citation to help test for a&#x00A0;missing key. For
+ example:
+
+
+ <div class="verbatim" id="verbatim-47">
+ \newglossaryentry{fusce}{name={fusce},
+ &#x00A0;<br />description={suscipit&#x00A0;cursus&#x00A0;sem},user1={article-minimal}}
+</div>
+ <!--l. 2001--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">example-glossaries-url.tex</span> </dt><dd
+class="description">These entries use the <span
+class="cmss-10">user1</span><a
+ id="dx1-12014"></a> key to store an URL associated
+ with the entry. For example:
+
+
+ <div class="verbatim" id="verbatim-48">
+ \newglossaryentry{aenean-url}{name={aenean},
+ &#x00A0;<br />&#x00A0;description={adipiscing&#x00A0;auctor&#x00A0;est},
+ &#x00A0;<br />&#x00A0;user1={http://uk.tug.org/}}
+</div>
+ <!--l. 2010--><p class="nopar" ></p></dd></dl>
+<!--l. 2013--><p class="indent" > The sample file <span
+class="cmtt-10">glossary-lipsum-examples.tex </span>in the <span
+class="cmtt-10">doc/latex/glossaries/samples</span>
+directory uses all these files. See also <a
+href="http://www.dickimaw-books.com/gallery/#glossaries" class="url" ><span
+class="cmtt-10">http://www.dickimaw-books.com/gallery/#glossaries</span></a>.
+The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-12015"></a> package provides additional test files.
+</p><!--l. 2019--><p class="noindent" >
+</p>
+<!--l. 2019--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.4 </span> <a
+ id="sec:languages"></a>Multi-Lingual Support</h3>
+<!--l. 2022--><p class="noindent" >As from version 1.17, the <span
+class="cmss-10">glossaries </span>package can be used with <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-13001"></a></a> as well as <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13002"></a></a>. If
+you are writing in a language that uses an <a
+href="#glo:exlatinalph">extended Latin alphabet</a> or <a
+href="#glo:nonlatinalph">non-Latin alphabet</a> it&#8217;s
+best to use <a
+href="#option3">Option&#x00A0;3</a> (<span
+class="cmtt-10">xindy</span><a
+ id="dx1-13003"></a>) or <a
+href="#option4">Option&#x00A0;4</a> (<a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-13004"></a></a>) as <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13005"></a> (<a
+href="#option2">Option&#x00A0;2</a>) is hard-coded
+for the non-extended <a
+href="#glo:latinalph">Latin alphabet<a
+ id="dx1-13006"></a></a> and <a
+href="#option1">Option&#x00A0;1</a> can performed limited ASCII
+comparisons.
+</p><!--l. 2030--><p class="indent" > This means that with Options&#x00A0;<a
+href="#option3">3</a> or&#x00A0;<a
+href="#option4">4</a> you are not restricted to the A, &#x2026;, Z letter
+groups. If you want to use <span
+class="cmtt-10">xindy</span><a
+ id="dx1-13007"></a>, remember to use the <span
+class="cmss-10">xindy</span><a
+ id="dx1-13008"></a> package option. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-49">
+\documentclass[frenchb]{article}
+&#x00A0;<br />\usepackage[utf8]{inputenc}
+&#x00A0;<br />\usepackage[T1]{fontenc}
+&#x00A0;<br />\usepackage{babel}
+&#x00A0;<br />\usepackage[xindy]{glossaries}
+</div>
+<!--l. 2039--><p class="nopar" > If you want to use <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-13009"></a>, you need to use the <span
+class="cmss-10">record</span><a
+ id="dx1-13010"></a> option with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-13011"></a>
+and supply the definitions in <span
+class="cmtt-10">.bib </span>files. (See the <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-13012"></a></a> user manual for further
+details.)
+</p><!--l. 2045--><p class="indent" > <div class="important" title="Important Note"> Note that although a&#x00A0;<a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-13013"></a></a>, such as &eacute;, looks like a plain character
+in your <span
+class="cmtt-10">.tex</span><a
+ id="dx1-13014"></a> file, with standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;it&#8217;s actually a&#x00A0;macro and can therefore
+cause expansion problems. You may need to switch off the field expansions with
+<span
+class="cmtt-10">\glsnoexpandfields</span>. This issue doesn&#8217;t occur with XeLaTeX&#x00A0;or Lua<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>.
+</div>
+</p><!--l. 2051--><p class="noindent" >
+</p><!--l. 2053--><p class="indent" > With <span
+class="cmss-10">inputenc</span><a
+ id="dx1-13015"></a>, if you use a&#x00A0;<a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-13016"></a></a> (or other expandable) character at the
+start of an entry name, you must place it in a group, or it will cause a problem for
+commands that convert the first letter to upper case (e.g.&#x00A0;<span
+class="cmtt-10">\Gls</span><a
+ id="dx1-13017"></a>). For example:
+</p><div class="alltt">
+<div class="obeylines-v">
+<span class="verb"><span
+class="cmtt-10">\newglossaryentry}{elite}{name={{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}lite},</span></span>
+<br /><span
+class="cmtt-10">description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;or</span><span
+class="cmtt-10">&#x00A0;class}}</span></span>
+</div>
+</div> (With newer versions of <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-13018"></a> and <span
+class="cmss-10">datatool-base</span><a
+ id="dx1-13019"></a> you may be able to omit this grouping.)
+For further details, see the &#8220;UTF-8&#8221; section in the <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-13020"></a> user manual.
+<!--l. 2066--><p class="indent" > If you are using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-13021"></a></a> or <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-13022"></a></a>, the application needs to know the encoding of the
+<span
+class="cmtt-10">.tex</span><a
+ id="dx1-13023"></a> file. This information is added to the <span
+class="cmtt-10">.aux</span><a
+ id="dx1-13024"></a> file and can be picked up by <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-13025"></a></a>
+and <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-13026"></a></a>. If you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-13027"></a></a> explicitly instead of via <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-13028"></a>, you may need to
+specify the encoding using the <span
+class="cmtt-10">-C</span><a
+ id="dx1-13029"></a> option. Read the <span
+class="cmtt-10">xindy</span><a
+ id="dx1-13030"></a> manual for further details of this
+option.
+</p><!--l. 2075--><p class="indent" > As from v4.24, if you are writing in German (for example, using the <span
+class="cmss-10">ngerman</span><a
+ id="dx1-13031"></a>
+package<span class="footnote-mark"><a
+href="#fn4x1" id="fn4x1-bk"><sup class="textsuperscript">1.4</sup></a></span><a
+ id="x1-13032f4"></a>
+or <span
+class="cmss-10">babel</span><a
+ id="dx1-13033"></a> with the <span
+class="cmss-10">ngerman</span><a
+ id="dx1-13034"></a> package option), and you want to use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13035"></a>&#8217;s</a> <span
+class="cmtt-10">-g</span><a
+ id="dx1-13036"></a> option, you&#8217;ll
+need to change <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13037"></a>&#8217;s</a> quote character using:
+</p><!--l. 2079--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetQuote</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-13038"></a> <span
+class="cmtt-10">\GlsSetQuote{</span>&#x27E8;<span
+class="cmitt-10">character</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2081--><p class="noindent" >
+Note that &#x27E8;<span
+class="cmti-10">character</span>&#x27E9; may not be one of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">?</span></span></span> (question mark), <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">|</span></span></span> (pipe) or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">!</span></span></span> (exclamation mark).
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-50">
+\GlsSetQuote{+}
+</div>
+<!--l. 2087--><p class="nopar" > This must be done before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-13039"></a> and any entry definitions. It&#8217;s only applicable
+for <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13040"></a>. This option in conjunction with <span
+class="cmss-10">ngerman</span><a
+ id="dx1-13041"></a> will also cause <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-13042"></a> to
+use the <span
+class="cmtt-10">-g</span><a
+ id="dx1-13043"></a> switch when invoking <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13044"></a>.
+</p><!--l. 2094--><p class="indent" > <div class="important" title="Important Note"> Be careful of <span
+class="cmss-10">babel</span><a
+ id="dx1-13045"></a>&#8217;s shorthands. These aren&#8217;t switched on until the start of the
+document, so any entries defined in the preamble won&#8217;t be able to use those shorthands.
+However, if you define the entries in the document and any of those shorthands happen to be
+special characters for <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13046"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-13047"></a></a> (such as the double-quote) then this will interfere
+with code that tries to escape any of those characters that occur in the <span
+class="cmss-10">sort</span><a
+ id="dx1-13048"></a> key.
+</div>
+</p><!--l. 2103--><p class="noindent" >
+</p><!--l. 2105--><p class="indent" > In general, it&#8217;s best not to use <span
+class="cmss-10">babel</span><a
+ id="dx1-13049"></a>&#8217;s shorthands in entry definitions. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-51">
+\documentclass{article}
+&#x00A0;<br />\usepackage[ngerman]{babel}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\GlsSetQuote{+}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newglossaryentry{rna}{name={ribonukleins\"aure},
+&#x00A0;<br />&#x00A0;&#x00A0;sort={ribonukleins"aure},
+&#x00A0;<br />&#x00A0;&#x00A0;description={eine&#x00A0;Nukleins\"aure}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{rna}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2126--><p class="nopar" >
+</p><!--l. 2128--><p class="indent" > The <span
+class="cmss-10">ngerman</span><a
+ id="dx1-13050"></a> package has the shorthands on in the preamble, so they can be used if
+<span
+class="cmtt-10">\GlsSetQuote </span>has changed the <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-13051"></a></a> quote character. Example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-52">
+\documentclass{article}
+&#x00A0;<br />\usepackage[ngerman]{babel}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\GlsSetQuote{+}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newglossaryentry{rna}{name={ribonukleins"aure},
+&#x00A0;<br />&#x00A0;&#x00A0;description={eine&#x00A0;Nukleins"aure}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{rna}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2149--><p class="nopar" >
+</p><!--l. 2151--><p class="noindent" >
+</p>
+<!--l. 2151--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">1.4.1 </span> <a
+ id="sec:fixednames"></a>Changing the Fixed Names</h4>
+<!--l. 2154--><p class="noindent" >The fixed names are produced using the commands listed in <a
+href="#tab:predefinednames">table&#x00A0;1.2</a>. If you aren&#8217;t using a
+language package such as <span
+class="cmss-10">babel</span><a
+ id="dx1-14001"></a> or <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-14002"></a> that uses caption hooks, you can just redefine
+these commands as appropriate. If you are using <span
+class="cmss-10">babel</span><a
+ id="dx1-14003"></a> or <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-14004"></a>, you need to use their
+caption hooks to change the defaults. See <a
+href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords" >changing the words babel uses</a> or read the <span
+class="cmss-10">babel</span><a
+ id="dx1-14005"></a> or
+<span
+class="cmss-10">polyglossia</span><a
+ id="dx1-14006"></a> documentation. If you have loaded <span
+class="cmss-10">babel</span><a
+ id="dx1-14007"></a>, then <span
+class="cmss-10">glossaries</span><a
+ id="dx1-14008"></a> will attempt to load
+<span
+class="cmss-10">translator</span><a
+ id="dx1-14009"></a>, unless you have used the <span
+class="cmss-10">notranslate</span><a
+ id="dx1-14010"></a>, <span
+class="cmss-10">translate=false</span><a
+ id="dx1-14011"></a> or <span
+class="cmss-10">translate=babel</span><a
+ id="dx1-14012"></a> package
+options. If the <span
+class="cmss-10">translator</span><a
+ id="dx1-14013"></a> package is loaded, the translations are provided by dictionary files
+(for example, <span
+class="cmtt-10">glossaries-dictionary-English.dict</span>). See the <span
+class="cmss-10">translator</span><a
+ id="dx1-14014"></a> package for advice
+on changing translations provided by <span
+class="cmss-10">translator</span><a
+ id="dx1-14015"></a> dictionaries. If you can&#8217;t work out
+how to modify these dictionary definitions, try switching to <span
+class="cmss-10">babel</span><a
+ id="dx1-14016"></a>&#8217;s interface using
+<span
+class="cmss-10">translate=babel</span><a
+ id="dx1-14017"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-53">
+\documentclass[english,french]{article}
+&#x00A0;<br />\usepackage{babel}
+&#x00A0;<br />\usepackage[translate=babel]{glossaries}
+</div>
+<!--l. 2175--><p class="nopar" > and then use <span
+class="cmss-10">babel</span><a
+ id="dx1-14018"></a>&#8217;s caption hook mechanism. Note that if you pass the language options
+directly to <span
+class="cmss-10">babel</span><a
+ id="dx1-14019"></a> rather that using the document class options or otherwise passing the same
+options to <span
+class="cmss-10">translator</span><a
+ id="dx1-14020"></a>, then <span
+class="cmss-10">translator</span><a
+ id="dx1-14021"></a> won&#8217;t pick up the language and no dictionaries will be
+loaded and <span
+class="cmss-10">babel</span><a
+ id="dx1-14022"></a>&#8217;s caption hooks will be used instead.
+</p>
+ <div class="table">
+
+
+<!--l. 2183--><p class="indent" > <a
+ id="tab:predefinednames"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;1.2: </span><span
+class="content">Customised Text</span></div><!--tex4ht:label?: x1-140232 -->
+
+
+<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="td01"><span
+class="cmbx-10">Command Name </span></td><td style="white-space:wrap; text-align:left;" id="TBL-3-1-2"
+class="td11"> <!--l. 2189--><p class="noindent" ><span
+class="cmbx-10">Translator</span>
+ <span
+class="cmbx-10">Key</span>
+ <span
+class="cmbx-10">Word</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-1-3"
+class="td10"> <!--l. 2190--><p class="noindent" ><span
+class="cmbx-10">Purpose</span> </p></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="td01"><span
+class="cmtt-10">\glossaryname</span><a
+ id="dx1-14024"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-2-2"
+class="td11"> <!--l. 2191--><p class="noindent" ><span
+class="cmtt-10">Glossary</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-2-3"
+class="td10"> <!--l. 2191--><p class="noindent" >Title
+ of
+ the
+ main
+ glossary. </p></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="td01"><span
+class="cmtt-10">\acronymname</span><a
+ id="dx1-14025"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-3-2"
+class="td11"> <!--l. 2192--><p class="noindent" ><span
+class="cmtt-10">Acronyms</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-3-3"
+class="td10"> <!--l. 2192--><p class="noindent" >Title
+ of
+ the
+ list
+ of
+ acronyms
+ (when
+ used
+ with
+ package
+ option
+ <span
+class="cmss-10">acronym</span><a
+ id="dx1-14026"></a>). </p></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="td01"><span
+class="cmtt-10">\entryname</span><a
+ id="dx1-14027"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-4-2"
+class="td11"> <!--l. 2194--><p class="noindent" ><span
+class="cmtt-10">Notation</span>
+ <span
+class="cmtt-10">(glossaries)</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-4-3"
+class="td10"> <!--l. 2195--><p class="noindent" >Header
+ for
+ first
+ column
+ in
+ the
+ glossary
+ (for
+ 2,
+ 3
+ or
+ 4
+ column
+ glossaries
+ that
+ support
+ headers). </p></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="td01"><span
+class="cmtt-10">\descriptionname</span><a
+ id="dx1-14028"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-5-2"
+class="td11"> <!--l. 2197--><p class="noindent" ><span
+class="cmtt-10">Description</span>
+ <span
+class="cmtt-10">(glossaries)</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-5-3"
+class="td10"> <!--l. 2198--><p class="noindent" >Header
+ for
+ second
+ column
+ in
+ the
+ glossary
+ (for
+ 2,
+ 3
+ or
+ 4
+ column
+ glossaries
+ that
+ support
+ headers). </p></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="td01"><span
+class="cmtt-10">\symbolname</span><a
+ id="dx1-14029"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-6-2"
+class="td11"> <!--l. 2200--><p class="noindent" ><span
+class="cmtt-10">Symbol</span>
+ <span
+class="cmtt-10">(glossaries)</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-6-3"
+class="td10"> <!--l. 2200--><p class="noindent" >Header
+ for
+ symbol
+ column
+ in
+ the
+ glossary
+ for
+ glossary
+ styles
+ that
+ support
+ this
+ option. </p></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="td01"><span
+class="cmtt-10">\pagelistname</span><a
+ id="dx1-14030"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-7-2"
+class="td11"> <!--l. 2202--><p class="noindent" ><span
+class="cmtt-10">Page</span>
+ <span
+class="cmtt-10">List</span>
+ <span
+class="cmtt-10">(glossaries)</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-7-3"
+class="td10"> <!--l. 2203--><p class="noindent" >Header
+ for
+ page
+ list
+ column
+ in
+ the
+ glossary
+ for
+ glossaries
+ that
+ support
+ this
+ option. </p></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="td01"><span
+class="cmtt-10">\glssymbolsgroupname</span><a
+ id="dx1-14031"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-8-2"
+class="td11"> <!--l. 2205--><p class="noindent" ><span
+class="cmtt-10">Symbols</span>
+ <span
+class="cmtt-10">(glossaries)</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-8-3"
+class="td10"> <!--l. 2206--><p class="noindent" >Header
+ for
+ symbols
+ section
+ of
+ the
+ glossary
+ for
+ glossary
+ styles
+ that
+ support
+ this
+ option. </p></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="td01"><span
+class="cmtt-10">\glsnumbersgroupname</span><a
+ id="dx1-14032"></a> </td><td style="white-space:wrap; text-align:left;" id="TBL-3-9-2"
+class="td11"> <!--l. 2208--><p class="noindent" ><span
+class="cmtt-10">Numbers</span>
+ <span
+class="cmtt-10">(glossaries)</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-3-9-3"
+class="td10"> <!--l. 2208--><p class="noindent" >Header
+ for
+ numbers
+ section
+ of
+ the
+ glossary
+ for
+ glossary
+ styles
+ that
+ support
+ this
+ option. </p></td>
+</tr></table>
+
+</div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 2214--><p class="indent" > As from version 4.12, multilingual support is provided by separate language modules that
+need to be installed in addition to installing the <span
+class="cmss-10">glossaries </span>package. You only need to install
+the modules for the languages that you require. If the language module has an
+unmaintained status, you can volunteer to take over the maintenance by contacting me at
+<a
+href="http://www.dickimaw-books.com/contact.html" class="url" ><span
+class="cmtt-10">http://www.dickimaw-books.com/contact.html</span></a>. The <span
+class="cmss-10">translator</span><a
+ id="dx1-14033"></a> dictionary files for <span
+class="cmss-10">glossaries</span>
+are now provided by the appropriate language module. For further details about
+information specific to a given language, please see the documentation for that language
+module.
+</p><!--l. 2226--><p class="indent" > Examples of use: </p>
+ <ul class="itemize1">
+ <li class="itemize">Using <span
+class="cmss-10">babel</span><a
+ id="dx1-14034"></a> and <span
+class="cmss-10">translator</span><a
+ id="dx1-14035"></a>:
+
+
+ <div class="verbatim" id="verbatim-54">
+ \documentclass[english,french]{article}
+ &#x00A0;<br />\usepackage{babel}
+ &#x00A0;<br />\usepackage{glossaries}
+</div>
+ <!--l. 2233--><p class="nopar" > (<span
+class="cmss-10">translator</span><a
+ id="dx1-14036"></a> is automatically loaded).
+ </p></li>
+ <li class="itemize">Using <span
+class="cmss-10">babel</span><a
+ id="dx1-14037"></a>:
+
+
+ <div class="verbatim" id="verbatim-55">
+ \documentclass[english,french]{article}
+ &#x00A0;<br />\usepackage{babel}
+ &#x00A0;<br />\usepackage[translate=babel]{glossaries}
+</div>
+ <!--l. 2241--><p class="nopar" > (<span
+class="cmss-10">translator</span><a
+ id="dx1-14038"></a> isn&#8217;t loaded).
+ </p></li>
+ <li class="itemize">Using <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-14039"></a>:
+
+
+ <div class="verbatim" id="verbatim-56">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage{polyglossia}
+ &#x00A0;<br />\setmainlanguage{english}
+ &#x00A0;<br />\usepackage{glossaries}
+</div>
+ <!--l. 2250--><p class="nopar" >
+</p>
+ </li></ul>
+<!--l. 2254--><p class="indent" > Due to the varied nature of glossaries, it&#8217;s likely that the predefined translations may not
+be appropriate. If you are using the <span
+class="cmss-10">babel</span><a
+ id="dx1-14040"></a> package and the <span
+class="cmss-10">glossaries </span>package option
+<span
+class="cmss-10">translate=babel</span><a
+ id="dx1-14041"></a>, you need to be familiar with the advice given in <a
+href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords" >changing the words
+babel uses</a>. If you are using the <span
+class="cmss-10">translator</span><a
+ id="dx1-14042"></a> package, then you can provide your own
+dictionary with the necessary modifications (using <span
+class="cmtt-10">\deftranslation</span>) and load it using
+<span
+class="cmtt-10">\usedictionary</span>. If you simply want to change the title of a glossary, you can use the
+<span
+class="cmss-10">title</span><a
+ id="dx1-14043"></a> key in commands like <span
+class="cmtt-10">\printglossary </span>(but not the iterative commands like
+<span
+class="cmtt-10">\printglossaries</span>).
+</p><!--l. 2266--><p class="indent" > <div class="important" title="Important Note"> Note that the <span
+class="cmss-10">translator</span><a
+ id="dx1-14044"></a> dictionaries are loaded at the beginning of the document, so it
+won&#8217;t have any effect if you put <span
+class="cmtt-10">\deftranslation </span>in the preamble. It should be put in your
+personal dictionary instead (as in the example below). See the <span
+class="cmss-10">translator</span><a
+ id="dx1-14045"></a> documentation for
+further details. (Now with <span
+class="cmss-10">beamer</span><a
+ id="dx1-14046"></a> documentation.) </div>
+</p><!--l. 2273--><p class="noindent" >
+</p><!--l. 2275--><p class="indent" > Your custom dictionary doesn&#8217;t have to be just a translation from English to another
+language. You may prefer to have a dictionary for a particular type of document. For
+example, suppose your institution&#8217;s in-house reports have to have the glossary labelled as
+&#8220;Nomenclature&#8221; and the page list should be labelled &#8220;Location&#8221;, then you can create a file
+called, say,
+
+
+</p>
+ <div class="verbatim" id="verbatim-57">
+myinstitute-glossaries-dictionary-English.dict
+</div>
+<!--l. 2283--><p class="nopar" > that contains the following:
+
+
+</p>
+ <div class="verbatim" id="verbatim-58">
+\ProvidesDictionary{myinstitute-glossaries-dictionary}{English}
+&#x00A0;<br />\deftranslation{Glossary}{Nomenclature}
+&#x00A0;<br />\deftranslation{Page&#x00A0;List&#x00A0;(glossaries)}{Location}
+</div>
+<!--l. 2289--><p class="nopar" > You can now load it using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-59">
+\usedictionary{myinstitute-glossaries-dictionary}
+</div>
+<!--l. 2293--><p class="nopar" > (Make sure that <span
+class="cmtt-10">myinstitute-glossaries-dictionary-English.dict </span>can be
+found by <span class="TEX">T<span
+class="E">E</span>X</span>.) If you want to share your custom dictionary, you can upload it to
+<a
+href="http://www.ctan.org/" >CTAN</a>.
+</p><!--l. 2298--><p class="indent" > If you are using <span
+class="cmss-10">babel</span><a
+ id="dx1-14047"></a> and don&#8217;t want to use the <span
+class="cmss-10">translator</span><a
+ id="dx1-14048"></a> interface, you can use the
+package option <span
+class="cmss-10">translate=babel</span><a
+ id="dx1-14049"></a>. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-60">
+\documentclass[british]{article}
+&#x00A0;<br />\usepackage{babel}
+&#x00A0;<br />\usepackage[translate=babel]{glossaries}
+&#x00A0;<br />\addto\captionsbritish{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glossaryname}{List&#x00A0;of&#x00A0;Terms}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\acronymname}{List&#x00A0;of&#x00A0;Acronyms}%
+&#x00A0;<br />}
+</div>
+<!--l. 2311--><p class="nopar" >
+</p><!--l. 2313--><p class="indent" > Note that <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-14050"></a></a> and <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-14051"></a></a> provide much better multi-lingual support than <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-14052"></a></a>,
+so I&#x00A0;recommend that you use Options&#x00A0;<a
+href="#option3">3</a> or&#x00A0;<a
+href="#option4">4</a> if you have glossary entries that contain
+<a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-14053"></a>s</a>. See <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option 3)<!--tex4ht:ref: sec:xindy --></a> for further details on <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-14054"></a></a>, and see the
+<a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-14055"></a></a> user manual for further details of that application.
+</p>
+ <h5 class="subsubsectionHead"><a
+ id="pluralsuffix"></a>Creating a New Language Module</h5>
+<!--l. 2323--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>package now uses the <span
+class="cmss-10">tracklang</span><a
+ id="dx1-15001"></a> package to determine which language modules
+need to be loaded. If you want to create a new language module, you should first read the
+<span
+class="cmss-10">tracklang</span><a
+ id="dx1-15002"></a> documentation.
+</p><!--l. 2328--><p class="indent" > To create a new language module, you need to at least create two files: <span
+class="cmtt-10">glossaries-</span>&#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;<span
+class="cmtt-10">.ldf</span>
+and <span
+class="cmtt-10">glossaries-dictionary-</span>&#x27E8;<span
+class="cmti-10">Lang</span>&#x27E9;<span
+class="cmtt-10">.dict </span>where &#x27E8;<span
+class="cmti-10">lang</span>&#x27E9; is the root language name (for
+example, <span
+class="cmtt-10">english</span>) and &#x27E8;<span
+class="cmti-10">Lang</span>&#x27E9; is the language name used by <span
+class="cmss-10">translator</span><a
+ id="dx1-15003"></a> (for example,
+<span
+class="cmtt-10">English</span>).
+</p><!--l. 2335--><p class="indent" > Here&#8217;s an example of <span
+class="cmtt-10">glossaries-dictionary-English.dict</span>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-61">
+\ProvidesDictionary{glossaries-dictionary}{English}
+&#x00A0;<br />\providetranslation{Glossary}{Glossary}
+&#x00A0;<br />\providetranslation{Acronyms}{Acronyms}
+&#x00A0;<br />\providetranslation{Notation&#x00A0;(glossaries)}{Notation}
+&#x00A0;<br />\providetranslation{Description&#x00A0;(glossaries)}{Description}
+&#x00A0;<br />\providetranslation{Symbol&#x00A0;(glossaries)}{Symbol}
+&#x00A0;<br />\providetranslation{Page&#x00A0;List&#x00A0;(glossaries)}{Page&#x00A0;List}
+&#x00A0;<br />\providetranslation{Symbols&#x00A0;(glossaries)}{Symbols}
+&#x00A0;<br />\providetranslation{Numbers&#x00A0;(glossaries)}{Numbers}
+</div>
+<!--l. 2347--><p class="nopar" > You can use this as a template for your dictionary file. Change <span
+class="cmtt-10">English </span>to the <span
+class="cmss-10">translator</span><a
+ id="dx1-15004"></a> name
+for your language (so that it matches the file name <span
+class="cmtt-10">glossaries-dictionary-</span>&#x27E8;<span
+class="cmti-10">Lang</span>&#x27E9;<span
+class="cmtt-10">.dict</span>)
+and, for each <span
+class="cmtt-10">\providetranslation</span>, change the second argument to the appropriate
+translation.
+</p><!--l. 2355--><p class="indent" > Here&#8217;s an example of <span
+class="cmtt-10">glossaries-english.ldf</span>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-62">
+\ProvidesGlossariesLang{english}
+&#x00A0;<br />\glsifusedtranslatordict{English}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\addglossarytocaptions{\CurrentTrackedLanguage}%
+&#x00A0;<br />&#x00A0;&#x00A0;\addglossarytocaptions{\CurrentTrackedDialect}%
+&#x00A0;<br />}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\@ifpackageloaded{polyglossia}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newcommand*{\glossariescaptionsenglish}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glossaryname}{\textenglish{Glossary}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\acronymname}{\textenglish{Acronyms}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\entryname}{\textenglish{Notation}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\descriptionname}{\textenglish{Description}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\symbolname}{\textenglish{Symbol}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\pagelistname}{\textenglish{Page&#x00A0;List}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glssymbolsgroupname}{\textenglish{Symbols}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glsnumbersgroupname}{\textenglish{Numbers}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\newcommand*{\glossariescaptionsenglish}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glossaryname}{Glossary}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\acronymname}{Acronyms}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\entryname}{Notation}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\descriptionname}{Description}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\symbolname}{Symbol}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\pagelistname}{Page&#x00A0;List}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glssymbolsgroupname}{Symbols}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glsnumbersgroupname}{Numbers}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcsdef{captions\CurrentTrackedDialect}
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\csappto{captions\CurrentTrackedDialect}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossariescaptionsenglish
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifcsdef{captions\CurrentTrackedLanguage}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\csappto{captions\CurrentTrackedLanguage}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossariescaptionsenglish
+
+
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\glossariescaptionsenglish
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand*{\glspluralsuffix}{s}
+&#x00A0;<br />\renewcommand*{\glsacrpluralsuffix}{\glspluralsuffix}
+&#x00A0;<br />\renewcommand*{\glsupacrpluralsuffix}{\glstextup{\glspluralsuffix}}
+</div>
+<!--l. 2413--><p class="nopar" > This is a somewhat longer file, but again you can use it as a template. Replace <span
+class="cmtt-10">English </span>with
+the <span
+class="cmss-10">translator</span><a
+ id="dx1-15005"></a> language label &#x27E8;<span
+class="cmti-10">Lang</span>&#x27E9; used for the dictionary file and replace <span
+class="cmtt-10">english </span>with the
+root language name &#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;. Within the definition of <span
+class="cmtt-10">\glossariescaptions</span>&#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;, replace the
+English text (such as &#8220;Glossaries&#8221;) with the appropriate translation.
+</p><!--l. 2423--><p class="indent" > <span
+class="cmbx-10">Note: </span>the suffixes used to generate the plural forms when the plural hasn&#8217;t been specified
+are given by <span
+class="cmtt-10">\glspluralsuffix </span>(for general entries) and <span
+class="cmtt-10">\glsupacrpluralsuffix </span>for
+acronyms where the suffix needs to be set using <span
+class="cmtt-10">\glstextup </span>to counteract the effects of
+<span
+class="cmtt-10">\textsc </span>and <span
+class="cmtt-10">\glsacrpluralsuffix </span>for other acronym styles. There&#8217;s no guarantee when
+these commands will be expanded. They may be expanded on definition or they may be
+expanded on use, depending on the <span
+class="cmss-10">glossaries </span>configuration.
+</p><!--l. 2433--><p class="indent" > <div class="important" title="Important Note"> Therefore these plural suffix command definitions aren&#8217;t included in the caption
+mechanism as that&#8217;s typically not switched on until the start of the document. <span
+class="cmbx-10">This means</span>
+<span
+class="cmbx-10">that the suffix in effect will be for the last loaded language that redefined these</span>
+<span
+class="cmbx-10">commands. </span>It&#8217;s best to initialise these commands to the most common suffix required in
+your document and use the <span
+class="cmss-10">plural</span><a
+ id="dx1-15006"></a>, <span
+class="cmss-10">longplural</span><a
+ id="dx1-15007"></a>, <span
+class="cmss-10">shortplural</span><a
+ id="dx1-15008"></a> etc keys to override exceptions.
+</div>
+</p><!--l. 2442--><p class="noindent" >
+</p><!--l. 2444--><p class="indent" > If you want to add a regional variation, create a file called <span
+class="cmtt-10">glossaries-</span>&#x27E8;<span
+class="cmti-10">iso lang</span>&#x27E9;<span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">iso</span>
+<span
+class="cmti-10">country</span>&#x27E9;<span
+class="cmtt-10">.ldf</span>, where &#x27E8;<span
+class="cmti-10">iso lang</span>&#x27E9; is the ISO language code and &#x27E8;<span
+class="cmti-10">iso country</span>&#x27E9; is the ISO country
+code. For example, <span
+class="cmtt-10">glossaries-en-GB.ldf</span>. This file can load the root language file and
+make the appropriate changes, for example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-63">
+&#x00A0;\ProvidesGlossariesLang{en-GB}
+&#x00A0;<br />&#x00A0;\RequireGlossariesLang{english}
+&#x00A0;<br />&#x00A0;\glsifusedtranslatordict{British}
+&#x00A0;<br />&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\addglossarytocaptions{\CurrentTrackedLanguage}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\addglossarytocaptions{\CurrentTrackedDialect}%
+&#x00A0;<br />&#x00A0;}
+&#x00A0;<br />&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\@ifpackageloaded{polyglossia}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;Modify&#x00A0;\glossariescaptionsenglish&#x00A0;as&#x00A0;appropriate&#x00A0;for
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;polyglossia
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;Modify&#x00A0;\glossariescaptionsenglish&#x00A0;as&#x00A0;appropriate&#x00A0;for
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;non-polyglossia
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 2469--><p class="nopar" >
+</p><!--l. 2471--><p class="indent" > If the translations includes <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-15009"></a>s</a>, it&#8217;s necessary to provide code that&#8217;s
+independent of the input encoding. Remember that while some users may use UTF-8, others
+may use Latin-1 or any other supported encoding, but while users won&#8217;t appreciate
+you enforcing your preference on them, it&#8217;s useful to provide a UTF-8 version for
+XeLaTeX&#x00A0;users.
+</p><!--l. 2478--><p class="indent" > The <span
+class="cmtt-10">glossaries-irish.ldf </span>file provides this as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-64">
+\ProvidesGlossariesLang{irish}
+&#x00A0;<br />\glsifusedtranslatordict{Irish}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\addglossarytocaptions{\CurrentTrackedLanguage}%
+&#x00A0;<br />&#x00A0;&#x00A0;\addglossarytocaptions{\CurrentTrackedDialect}%
+&#x00A0;<br />}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifdefstring{\inputencodingname}{utf8}
+&#x00A0;<br />&#x00A0;&#x00A0;{\input{glossaries-irish-utf8.ldf}}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifdef{\XeTeXinputencoding}%&#x00A0;XeTeX&#x00A0;defaults&#x00A0;to&#x00A0;UTF-8
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\input{glossaries-irish-utf8.ldf}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\input{glossaries-irish-noenc.ldf}}
+&#x00A0;<br />&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcsdef{captions\CurrentTrackedDialect}
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\csappto{captions\CurrentTrackedDialect}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossariescaptionsirish
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifcsdef{captions\CurrentTrackedLanguage}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\csappto{captions\CurrentTrackedLanguage}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossariescaptionsirish
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\glossariescaptionsirish
+&#x00A0;<br />}
+</div>
+<!--l. 2515--><p class="nopar" > (Again you can use this as a template. Replace <span
+class="cmtt-10">irish </span>with your root language label and
+<span
+class="cmtt-10">Irish </span>with the <span
+class="cmss-10">translator</span><a
+ id="dx1-15010"></a> dictionary label.)
+</p><!--l. 2520--><p class="indent" > There are now two extra files: <span
+class="cmtt-10">glossaries-irish-noenc.ldf </span>and <span
+class="cmtt-10">glossaries-irish-utf8.ldf</span>.
+</p><!--l. 2523--><p class="indent" > These both define <span
+class="cmtt-10">\glossariescaptionsirish </span>but the <span
+class="cmtt-10">*-noenc.ldf </span>uses <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;accent
+commands:
+
+
+</p>
+ <div class="verbatim" id="verbatim-65">
+\@ifpackageloaded{polyglossia}%
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\newcommand*{\glossariescaptionsirish}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glossaryname}{\textirish{Gluais}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\acronymname}{\textirish{Acrainmneacha}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\entryname}{\textirish{Ciall}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\descriptionname}{\textirish{Tuairisc}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\symbolname}{\textirish{Comhartha}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glssymbolsgroupname}{\textirish{Comhartha\'{\i}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\pagelistname}{\textirish{Leathanaigh}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glsnumbersgroupname}{\textirish{Uimhreacha}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}%
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\newcommand*{\glossariescaptionsirish}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glossaryname}{Gluais}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\acronymname}{Acrainmneacha}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\entryname}{Ciall}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\descriptionname}{Tuairisc}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\symbolname}{Comhartha}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glssymbolsgroupname}{Comhartha\'{\i}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\pagelistname}{Leathanaigh}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glsnumbersgroupname}{Uimhreacha}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+</div>
+<!--l. 2551--><p class="nopar" > whereas the <span
+class="cmtt-10">*-utf8.ldf </span>replaces the accent commands with the appropriate UTF-8
+characters.
+</p><!--l. 2556--><p class="noindent" >
+</p>
+<!--l. 2556--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.5 </span> <a
+ id="sec:makeglossaries"></a>Generating the Associated Glossary Files</h3>
+<!--l. 2559--><p class="noindent" ><div class="important" title="Important Note"> This section is only applicable if you have chosen Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>. You can ignore this section
+if you have chosen any of the other options. If you want to alphabetically sort your entries
+always remember to use the <span
+class="cmss-10">sort</span><a
+ id="dx1-16001"></a> key if the <span
+class="cmss-10">name</span><a
+ id="dx1-16002"></a> contains any <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;commands.
+</div>
+</p><!--l. 2564--><p class="noindent" >
+</p><!--l. 2566--><p class="noindent" >If this section seriously confuses you, and you can&#8217;t work out how to run external
+tools like <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16003"></a></a> or <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16004"></a></a>, you can try using the <span
+class="cmss-10">automake</span><a
+ id="dx1-16005"></a> package
+option, described in <a
+href="#sec:pkgopts-sort"><span
+class="tcrm-1000">&sect;</span>2.4 </a><a
+href="#sec:pkgopts-sort">Sorting Options<!--tex4ht:ref: sec:pkgopts-sort --></a>, but you will need <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s shell escape
+enabled.
+
+
+</p><!--l. 2572--><p class="indent" > In order to generate a sorted glossary with compact <a
+href="#glo:numberlist">number list<a
+ id="dx1-16006"></a>s</a>, it is necessary to use an
+external <a
+href="#glo:indexingapp">indexing application</a> as an intermediate step (unless you have chosen <a
+href="#option1">Option&#x00A0;1</a>,
+which uses <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;to do the sorting or <a
+href="#option5">Option&#x00A0;5</a>, which doesn&#8217;t perform any sorting). It is this
+application that creates the file containing the code required to typeset the glossary. <span
+class="cmbx-10">If this</span>
+<span
+class="cmbx-10">step is omitted, the glossaries will not appear in your document. </span>The two
+indexing applications that are most commonly used with <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;are <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16007"></a></a> and
+<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16008"></a></a>. As from version 1.17, the <span
+class="cmss-10">glossaries </span>package can be used with either of these
+applications. Previous versions were designed to be used with <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16009"></a> only. With
+the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-16010"></a> package, you can also use <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-16011"></a></a> as the indexing application.
+(See the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-16012"></a> and <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-16013"></a></a> user manuals for further details.) Note that
+<span
+class="cmtt-10">xindy</span><a
+ id="dx1-16014"></a> and <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-16015"></a> have much better multi-lingual support than <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16016"></a>, so
+<span
+class="cmtt-10">xindy</span><a
+ id="dx1-16017"></a> or <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-16018"></a> are recommended if you&#8217;re not writing in English. Commands
+that only have an effect when <span
+class="cmtt-10">xindy</span><a
+ id="dx1-16019"></a> is used are described in <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option
+3)<!--tex4ht:ref: sec:xindy --></a>.
+</p><!--l. 2592--><p class="indent" > <div class="important" title="Important Note"> This is a multi-stage process, but there are methods of automating document compilation
+using applications such as <span
+class="cmtt-10">latexmk</span><a
+ id="dx1-16020"></a> and <span
+class="cmtt-10">arara</span><a
+ id="dx1-16021"></a>. With <span
+class="cmtt-10">arara</span><a
+ id="dx1-16022"></a> you can just add special
+comments to your document source: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;pdflatex</span>
+<br /><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;makeglossaries</span>
+<br /><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;arara:</span><span
+class="cmtt-10">&#x00A0;pdflatex</span>
+</div>
+</div> With <span
+class="cmtt-10">latexmk</span><a
+ id="dx1-16023"></a> you need to set up the required dependencies. </div>
+<!--l. 2603--><p class="noindent" >
+</p><!--l. 2605--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package comes with the Perl script <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16024"></a></a> which will run
+<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16025"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16026"></a></a> on all the glossary files using a customized style file (which is created by
+<span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-16027"></a>). See <a
+href="#sec:makeglossariesapp"><span
+class="tcrm-1000">&sect;</span>1.5.1 </a><a
+href="#sec:makeglossariesapp">Using the makeglossaries Perl Script<!--tex4ht:ref: sec:makeglossariesapp --></a> for further details. Perl is
+stable, cross-platform, open source software that is used by a number of <span class="TEX">T<span
+class="E">E</span>X</span>-related
+applications (including <span
+class="cmtt-10">xindy</span><a
+ id="dx1-16028"></a> and <span
+class="cmtt-10">latexmk</span><a
+ id="dx1-16029"></a>). Most Unix-like operating systems come with
+a&#x00A0;Perl interpreter. <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;Live also comes with a&#x00A0;Perl interpreter. MiK<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;doesn&#8217;t come
+with a&#x00A0;Perl interpreter so if you are a&#x00A0;Windows MiK<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;user you will need to install Perl if
+you want to use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16030"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16031"></a></a>. Further information is available at
+<a
+href="http://www.perl.org/about.html" class="url" ><span
+class="cmtt-10">http://www.perl.org/about.html</span></a> and <a
+href="http://tex.stackexchange.com/questions/158796/miktex-and-perl-scripts-and-one-python-script" >MiKTeX and Perl scripts (and one Python
+script)</a>.
+</p><!--l. 2621--><p class="indent" > The advantages of using <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16032"></a>: </p>
+ <ul class="itemize1">
+ <li class="itemize">It automatically detects whether to use <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16033"></a> or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-16034"></a> and sets the relevant
+ application switches.
+ </li>
+ <li class="itemize">One call of <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16035"></a> will run <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16036"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-16037"></a> for each glossary type.
+ </li>
+
+
+ <li class="itemize">If things go wrong, <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16038"></a></a> will scan the messages from <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16039"></a></a> or
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16040"></a></a> and attempt to diagnose the problem in relation to the <span
+class="cmss-10">glossaries </span>package.
+ This will hopefully provide more helpful messages in some cases. If it can&#8217;t diagnose
+ the problem, you will have to read the relevant transcript file and see if you can
+ work it out from the <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16041"></a> or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-16042"></a> messages.
+ </li>
+ <li class="itemize">If <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16043"></a></a> warns about multiple encap values, <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16044"></a></a> will detect this
+ and attempt to correct the problem.<span class="footnote-mark"><a
+href="#fn5x1" id="fn5x1-bk"><sup class="textsuperscript">1.5</sup></a></span><a
+ id="x1-16045f5"></a>
+ This correction is only provided by <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16047"></a></a> when <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16048"></a></a> is used since
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16049"></a></a> uses the order of the attributes list to determine which format should take
+ precedence. (See <span
+class="cmtt-10">\GlsAddXdyAttribute </span>in <a
+href="#sec:xindyloc"><span
+class="tcrm-1000">&sect;</span>11.2 </a><a
+href="#sec:xindyloc">Locations and Number lists<!--tex4ht:ref: sec:xindyloc --></a>.)
+ </li></ul>
+<!--l. 2647--><p class="indent" > As from version 4.16, the <span
+class="cmss-10">glossaries </span>package also comes with a&#x00A0;Lua script called
+<a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-16050"></a></a>. This is a <span
+class="cmti-10">trimmed-down </span>alternative to the <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16051"></a></a> Perl
+script. It doesn&#8217;t have some of the options that the Perl version has and it doesn&#8217;t attempt to
+diagnose any problems, but since modern <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions come with Lua<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;(and
+therefore have a&#x00A0;Lua interpreter) you don&#8217;t need to install anything else in order to use
+<a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-16052"></a></a> so it&#8217;s an alternative to <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16053"></a></a> if you want to use <a
+href="#option2">Option&#x00A0;2</a>
+(<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16054"></a></a>).
+</p><!--l. 2657--><p class="indent" > If things go wrong and you can&#8217;t work out why your glossaries aren&#8217;t being generated
+correctly, you can use <a
+href="#glo:makeglossariesgui"><span
+class="cmtt-10">makeglossariesgui</span><a
+ id="dx1-16055"></a></a> as a diagnostic tool. Once you&#8217;ve fixed the
+problem, you can then go back to using <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16056"></a></a> or <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-16057"></a></a>.
+</p><!--l. 2663--><p class="indent" > Whilst I strongly recommended that you use the <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16058"></a></a> Perl script or
+the <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-16059"></a></a> Lua script, it is possible to use the <span
+class="cmss-10">glossaries </span>package
+without using those applications. However, note that some commands and package
+options have no effect if you explicitly run <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16060"></a></a>/<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16061"></a></a>. These are listed in
+<a
+href="#tab:makeglossariesCmds">table&#x00A0;1.3</a>.
+</p><!--l. 2670--><p class="indent" > <div class="important" title="Important Note"> If you are choosing not to use <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16062"></a> because you don&#8217;t want to install Perl,
+you will only be able to use <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16063"></a> as <span
+class="cmtt-10">xindy</span><a
+ id="dx1-16064"></a> also requires Perl. (Other useful Perl
+scripts include <span
+class="cmtt-10">epstopdf </span>and <span
+class="cmtt-10">latexmk</span>, so it&#8217;s well-worth the effort to install Perl.)
+</div>
+</p><!--l. 2676--><p class="noindent" >
+</p><!--l. 2678--><p class="indent" > Note that if any of your entries use an entry that is not referenced outside
+the glossary, you will need to do an additional <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16065"></a></a>, <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16066"></a></a> or
+<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16067"></a></a> run, as appropriate. For example, suppose you have defined the following
+entries:<span class="footnote-mark"><a
+href="#fn6x1" id="fn6x1-bk"><sup class="textsuperscript">1.6</sup></a></span><a
+ id="x1-16068f6"></a>
+
+
+</p>
+ <div class="verbatim" id="verbatim-66">
+\newglossaryentry{citrusfruit}{name={citrus&#x00A0;fruit},
+&#x00A0;<br />description={fruit&#x00A0;of&#x00A0;any&#x00A0;citrus&#x00A0;tree.&#x00A0;(See&#x00A0;also
+&#x00A0;<br />\gls{orange})}}
+&#x00A0;<br />\newglossaryentry{orange}{name={orange},
+&#x00A0;<br />description={an&#x00A0;orange&#x00A0;coloured&#x00A0;fruit.}}
+</div>
+<!--l. 2691--><p class="nopar" > and suppose you have <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{citrusfruit}</span></span></span> in your document but don&#8217;t reference
+the <span
+class="cmtt-10">orange </span>entry, then the <span
+class="cmtt-10">orange </span>entry won&#8217;t appear in your glossary until you
+first create the glossary and then do another run of <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16070"></a></a>, <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16071"></a></a>
+or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16072"></a></a>. For example, if the document is called <span
+class="cmtt-10">myDoc.tex</span>, then you must do:
+<spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex myDoc</span>
+ <br /><span
+class="cmtt-10">makeglossaries myDoc</span>
+ <br /><span
+class="cmtt-10">latex myDoc</span>
+ <br /><span
+class="cmtt-10">makeglossaries myDoc</span>
+ <br /><span
+class="cmtt-10">latex myDoc</span></span>
+</p><!--l. 2705--><p class="indent" > <spacer type=vertical size=10>
+(Note that if you use <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>, this will be done automatically for you if
+the <span
+class="cmss-10">indexcrossrefs </span>feature is enabled. See the <span
+class="cmss-10">glossaries-extra </span>user guide for further
+details.)
+</p><!--l. 2711--><p class="indent" > Likewise, an additional <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16073"></a></a> and <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 if the
+document pages shift with re-runs. For example, if the page numbering is not reset after the
+table of contents, the insertion of the table of contents on the second <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run may push
+glossary entries across page boundaries, which means that the <a
+href="#glo:numberlist">number list<a
+ id="dx1-16074"></a>s</a> in the glossary
+may need updating.
+</p><!--l. 2719--><p class="indent" > The examples in this document assume that you are accessing <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-16075"></a></a>, <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16076"></a></a> or
+<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16077"></a></a> via a terminal. Windows users can use the MSDOS Prompt which is usually
+accessed via the <span
+class="cmss-10">Start-</span><span
+class="cmmi-10">&#x003E;</span><span
+class="cmss-10">All Programs </span>menu or <span
+class="cmss-10">Start-</span><span
+class="cmmi-10">&#x003E;</span><span
+class="cmss-10">All Programs-</span><span
+class="cmmi-10">&#x003E;</span><span
+class="cmss-10">Accessories</span>
+menu.
+</p><!--l. 2725--><p class="indent" > Alternatively, your text editor may have the facility to create a function that will call the
+required application. See <a
+href="https://www.dickimaw-books.com/latex/buildglossaries/" >Incorporating makeglossaries or makeglossaries-lite or bib2gls into
+the document build</a>.
+</p><!--l. 2731--><p class="indent" > If any problems occur, remember to check the transcript files (e.g.&#x00A0;<span
+class="cmtt-10">.glg</span><a
+ id="dx1-16078"></a> or <span
+class="cmtt-10">.alg</span><a
+ id="dx1-16079"></a>) for
+messages.
+</p>
+ <div class="table">
+
+
+<!--l. 2734--><p class="indent" > <a
+ id="tab:makeglossariesCmds"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;1.3: </span><span
+class="content">Commands and package options that have no effect when using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16081"></a></a> or
+<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16082"></a></a> explicitly</span></div><!--tex4ht:label?: x1-160803 -->
+<div class="tabular"> <table id="TBL-4" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-4-1g"><col
+id="TBL-4-1" /><col
+id="TBL-4-2" /><col
+id="TBL-4-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-4-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-1"
+class="td01"><span
+class="cmbx-10">Command or Package Option </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-2"
+class="td11"> <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-16083"></a></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-1-3"
+class="td10"> <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-16084"></a></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-1"
+class="td01"><span
+class="cmss-10">order=letter</span><a
+ id="dx1-16085"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-2"
+class="td11"> use <span
+class="cmtt-10">-l</span><a
+ id="dx1-16086"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-2-3"
+class="td10"> use <span
+class="cmtt-10">-M</span><a
+ id="dx1-16087"></a> <span
+class="cmtt-10">ord/letorder</span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-1"
+class="td01"><span
+class="cmss-10">order=word</span><a
+ id="dx1-16088"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-2"
+class="td11"> default </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-3-3"
+class="td10"> default </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-1"
+class="td01"><span
+class="cmss-10">xindy</span><a
+ id="dx1-16089"></a>=<span
+class="cmsy-10">{</span><span
+class="cmss-10">language=</span>&#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;<span
+class="cmss-10">,codename=</span>&#x27E8;<span
+class="cmti-10">code</span>&#x27E9;<span
+class="cmsy-10">} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-2"
+class="td11"> N/A </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-4-3"
+class="td10"> use <span
+class="cmtt-10">-L</span><a
+ id="dx1-16090"></a> &#x27E8;<span
+class="cmti-10">lang</span>&#x27E9; <span
+class="cmtt-10">-C</span><a
+ id="dx1-16091"></a> &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-1"
+class="td01"><span
+class="cmtt-10">\GlsSetXdyLanguage</span><a
+ id="dx1-16092"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;<span
+class="cmtt-10">} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-2"
+class="td11"> N/A </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-5-3"
+class="td10"> use <span
+class="cmtt-10">-L</span><a
+ id="dx1-16093"></a> &#x27E8;<span
+class="cmti-10">lang</span>&#x27E9; </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-4-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-1"
+class="td01"><span
+class="cmtt-10">\GlsSetXdyCodePage</span><a
+ id="dx1-16094"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-2"
+class="td11"> N/A </td><td style="white-space:nowrap; text-align:left;" id="TBL-4-6-3"
+class="td10"> use <span
+class="cmtt-10">-C</span><a
+ id="dx1-16095"></a> &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; </td></tr></table>
+</div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 2757--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">1.5.1 </span> <a
+ id="sec:makeglossariesapp"></a>Using the makeglossaries Perl Script</h4>
+<!--l. 2760--><p class="noindent" >The <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17001"></a></a> script picks up the relevant information from the auxiliary (<span
+class="cmtt-10">.aux</span><a
+ id="dx1-17002"></a>) file
+and will either call <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-17003"></a></a> or <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17004"></a></a>, depending on the supplied information. Therefore,
+you only need to pass the document&#8217;s name without the extension to <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17005"></a>. For
+example, if your document is called <span
+class="cmtt-10">myDoc.tex</span>, type the following in your terminal:
+<spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">latex myDoc</span>
+ <br /><span
+class="cmtt-10">makeglossaries myDoc</span>
+ <br /><span
+class="cmtt-10">latex myDoc</span></span>
+</p><!--l. 2771--><p class="indent" > <spacer type=vertical size=10>
+You may need to explicitly load <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17006"></a></a> into Perl: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">perl makeglossaries myDoc</span></span>
+</p><!--l. 2775--><p class="indent" > <spacer type=vertical size=10>
+</p><!--l. 2777--><p class="indent" > Windows users: <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;Live on Windows has its own internal Perl interpreter and provides
+<span
+class="cmtt-10">makeglossaries.exe </span>as a&#x00A0;convenient wrapper for the <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17007"></a></a> Perl script. MiKTeX also
+provides a&#x00A0;wrapper <span
+class="cmtt-10">makeglossaries.exe </span>but doesn&#8217;t provide a&#x00A0;Perl interpreter, which is still
+required even if you run MiKTeX&#8217;s <span
+class="cmtt-10">makeglossaries.exe</span>, so with MiKTeX you&#8217;ll need to install
+Perl.<span class="footnote-mark"><a
+href="#fn7x1" id="fn7x1-bk"><sup class="textsuperscript">1.7</sup></a></span><a
+ id="x1-17008f7"></a>
+There&#8217;s more information about this at <a
+href="http://tex.stackexchange.com/q/158796/19862" class="url" ><span
+class="cmtt-10">http://tex.stackexchange.com/q/158796/19862</span></a>
+on the TeX.SX site.
+</p><!--l. 2789--><p class="indent" > The <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17009"></a></a> script attempts to fork the <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17010"></a></a>/<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-17011"></a></a> process
+using <span
+class="cmtt-10">open() </span>on the piped redirection <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">2&#x003E;&amp;1</span><span
+class="cmtt-10">&#x00A0;|</span></span></span> and parses the processor output to
+help diagnose problems. If this method fails <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17012"></a></a> will print an &#8220;Unable
+to fork&#8221; warning and will retry without redirection. If you run <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17013"></a></a>
+on an operating system that doesn&#8217;t support this form of redirection, then you
+can use the <span
+class="cmtt-10">-Q</span><a
+ id="dx1-17014"></a> switch to suppress this warning or you can use the <span
+class="cmtt-10">-k</span><a
+ id="dx1-17015"></a> switch to
+make <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17016"></a></a> automatically use the fallback method without attempting
+the redirection. Without this redirection, the <span
+class="cmtt-10">-q</span><a
+ id="dx1-17017"></a> (quiet) switch doesn&#8217;t work as
+well.
+</p><!--l. 2801--><p class="indent" > You can specify in which directory the <span
+class="cmtt-10">.aux</span><a
+ id="dx1-17018"></a>, <span
+class="cmtt-10">.glo</span><a
+ id="dx1-17019"></a> etc files are located using the <span
+class="cmtt-10">-d </span>switch.
+For example: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">pdflatex -output-directory myTmpDir myDoc</span>
+ <br /><span
+class="cmtt-10">makeglossaries -d myTmpDir myDoc</span></span>
+</p><!--l. 2807--><p class="indent" > <spacer type=vertical size=10>
+Note that <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17020"></a> assumes by default that <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17021"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-17022"></a> is on your operating
+system&#8217;s path. If this isn&#8217;t the case, you can specify the full pathname using <span
+class="cmtt-10">-m</span><a
+ id="dx1-17023"></a>
+&#x27E8;<span
+class="cmti-10">path/to/makeindex</span>&#x27E9; for <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17024"></a> or <span
+class="cmtt-10">-x</span><a
+ id="dx1-17025"></a> &#x27E8;<span
+class="cmti-10">path/to/xindy</span>&#x27E9; for <span
+class="cmtt-10">xindy</span><a
+ id="dx1-17026"></a>.
+</p><!--l. 2814--><p class="indent" > As from <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17027"></a></a> v2.18, if you are using <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17028"></a></a>, there&#8217;s a check for
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17029"></a>&#8217;s multiple encap warning. This is where different encap values (location formats)
+are used on the same location for the same entry. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-67">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{sample},&#x00A0;\gls[format=textbf]{sample}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2830--><p class="nopar" > If you explicitly use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17030"></a></a>, this will cause a warning and the location list
+will be &#8220;1, <span
+class="cmbx-10">1</span>&#8221;. That is, the page number will be repeated with each format. As
+from v2.18, <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17031"></a></a> will check for this warning and, if found, will attempt
+to correct the problem by removing duplicate locations and retrying. There&#8217;s no
+similar check for <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-17032"></a></a> as <span
+class="cmtt-10">xindy</span><a
+ id="dx1-17033"></a> won&#8217;t produce any warning and will simply discard
+duplicates.
+</p><!--l. 2839--><p class="indent" > The <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17034"></a></a> script contains POD (Plain Old Documentation). If you want, you
+can create a man page for <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17035"></a> using <span
+class="cmtt-10">pod2man</span><a
+ id="dx1-17036"></a> and move the resulting file onto
+the man path. Alternatively do <span
+class="cmtt-10">makeglossaries --help </span>for a list of all options or
+<span
+class="cmtt-10">makeglossaries --version </span>for the version number.
+</p><!--l. 2846--><p class="indent" > <div class="important" title="Important Note"> When upgrading the <span
+class="cmss-10">glossaries </span>package, make sure you also upgrade your version of
+<a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17037"></a></a>. The current version is 4.41. </div>
+</p><!--l. 2850--><p class="noindent" >
+</p><!--l. 2852--><p class="noindent" >
+</p>
+<!--l. 2852--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">1.5.2 </span> <a
+ id="sec:makeglossarieslua"></a>Using the makeglossaries-lite Lua Script</h4>
+<!--l. 2855--><p class="noindent" >The Lua alternative to the <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-18001"></a></a> Perl script requires a&#x00A0;Lua interpreter, which
+should already be available if you have a&#x00A0;modern <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distribution that includes Lua<span class="TEX">T<span
+class="E">E</span>X</span>.
+Lua is a&#x00A0;light-weight, cross-platform scripting language, but because it&#8217;s light-weight it
+doesn&#8217;t have the full-functionality of heavy-weight scripting languages, such as Perl. The
+<a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-18002"></a></a> script is therefore limited by this and some of the options
+available to the <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-18003"></a></a> Perl script aren&#8217;t available here. (In particular the <span
+class="cmtt-10">-d</span><a
+ id="dx1-18004"></a>
+option.)
+</p><!--l. 2865--><p class="indent" > <div class="important" title="Important Note"> Note that <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;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, so you may not need to supply the extension. </div>
+</p><!--l. 2871--><p class="noindent" >
+
+
+</p><!--l. 2873--><p class="indent" > The <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-18005"></a></a> script can be invoked in the same way as <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-18006"></a></a>.
+For example, if your document is called <span
+class="cmtt-10">myDoc.tex</span>, then do <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries-lite.lua myDoc</span></span>
+</p><!--l. 2878--><p class="indent" > <spacer type=vertical size=10>
+or <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries-lite myDoc</span></span>
+</p><!--l. 2882--><p class="indent" > <spacer type=vertical size=10>
+</p><!--l. 2884--><p class="indent" > <span
+class="cmti-10">Some </span>of the options available with <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-18007"></a></a> are also available with
+<a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-18008"></a></a>. For a complete list of available options, do <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries-lite.lua --help</span></span>
+</p><!--l. 2889--><p class="indent" > <spacer type=vertical size=10>
+</p><!--l. 2893--><p class="noindent" >
+</p>
+<!--l. 2893--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">1.5.3 </span> <a
+ id="sec:xindyapp"></a>Using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> explicitly (Option 3)</h4>
+<!--l. 2896--><p class="noindent" ><a
+href="#glo:xindy"><span
+class="cmtt-10">Xindy</span><a
+ id="dx1-19001"></a></a> comes with <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;Live. It has also been added to Mik<span class="TEX">T<span
+class="E">E</span>X</span>, but if you don&#8217;t have it
+installed, see <a
+href="http://tex.stackexchange.com/questions/71167/how-to-use-xindy-with-miktex" >How to use Xindy with MikTeX</a> on <a
+href="http://www.stackexchange.com/" ><span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;on StackExchange</a>.
+</p><!--l. 2902--><p class="indent" > If you want to use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-19002"></a></a> to process the glossary files, you must make sure you have used
+the <span
+class="cmss-10">xindy</span><a
+ id="dx1-19003"></a> package option:
+
+
+</p>
+ <div class="verbatim" id="verbatim-68">
+\usepackage[xindy]{glossaries}
+</div>
+<!--l. 2907--><p class="nopar" > This is required regardless of whether you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-19004"></a></a> explicitly or whether it&#8217;s
+called implicitly via applications such as <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-19005"></a></a>. This causes the glossary
+entries to be written in raw <span
+class="cmtt-10">xindy</span><a
+ id="dx1-19006"></a> format, so you need to use <span
+class="cmtt-10">-I</span><a
+ id="dx1-19007"></a> <span
+class="cmtt-10">xindy </span><span
+class="cmti-10">not </span><span
+class="cmtt-10">-I</span><a
+ id="dx1-19008"></a>
+<span
+class="cmtt-10">tex</span>.
+</p><!--l. 2914--><p class="indent" > To run <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-19009"></a></a> type the following in your terminal (all on one line): <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy -L </span>&#x27E8;<span
+class="cmitt-10">language</span>&#x27E9; <span
+class="cmtt-10">-C </span>&#x27E8;<span
+class="cmitt-10">encoding</span>&#x27E9; <span
+class="cmtt-10">-I xindy -M </span>&#x27E8;<span
+class="cmitt-10">style</span>&#x27E9; <span
+class="cmtt-10">-t </span>&#x27E8;<span
+class="cmitt-10">base</span>&#x27E9;<span
+class="cmtt-10">.glg -o </span>&#x27E8;<span
+class="cmitt-10">base</span>&#x27E9;<span
+class="cmtt-10">.gls</span>
+&#x27E8;<span
+class="cmitt-10">base</span>&#x27E9;<span
+class="cmtt-10">.glo</span></span>
+</p><!--l. 2918--><p class="indent" > <spacer type=vertical size=10>
+where &#x27E8;<span
+class="cmti-10">language</span>&#x27E9; is the required language name, &#x27E8;<span
+class="cmti-10">encoding</span>&#x27E9; is the encoding, &#x27E8;<span
+class="cmti-10">base</span>&#x27E9; is the name of
+the document without the <span
+class="cmtt-10">.tex</span><a
+ id="dx1-19010"></a> extension and &#x27E8;<span
+class="cmti-10">style</span>&#x27E9; is the name of the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-19011"></a></a> style file
+without the <span
+class="cmtt-10">.xdy</span><a
+ id="dx1-19012"></a> extension. The default name for this style file is &#x27E8;<span
+class="cmti-10">base</span>&#x27E9;<span
+class="cmtt-10">.xdy</span><a
+ id="dx1-19013"></a> but can be
+changed via <span
+class="cmtt-10">\setStyleFile</span><a
+ id="dx1-19014"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">style</span>&#x27E9;<span
+class="cmtt-10">}</span>. You may need to specify the full path name depending
+on the current working directory. If any of the file names contain spaces, you must delimit
+them using double-quotes.
+</p><!--l. 2929--><p class="indent" > For example, if your document is called <span
+class="cmtt-10">myDoc.tex </span>and you are using UTF8 encoding in
+English, then type the following in your terminal: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.glg -o myDoc.gls</span>
+<span
+class="cmtt-10">myDoc.glo</span></span>
+</p><!--l. 2934--><p class="indent" > <spacer type=vertical size=10>
+</p><!--l. 2936--><p class="indent" > Note that this just creates the main glossary. You need to do the same for each of
+the other glossaries (including the list of acronyms if you have used the <span
+class="cmss-10">acronym</span><a
+ id="dx1-19015"></a>
+package option), substituting <span
+class="cmtt-10">.glg</span><a
+ id="dx1-19016"></a>, <span
+class="cmtt-10">.gls</span><a
+ id="dx1-19017"></a> and <span
+class="cmtt-10">.glo</span><a
+ id="dx1-19018"></a> with the relevant extensions. For
+example, if you have used the <span
+class="cmss-10">acronym</span><a
+ id="dx1-19019"></a> package option, then you would need to do:
+<spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.alg -o myDoc.acr</span>
+<span
+class="cmtt-10">myDoc.acn</span></span>
+</p><!--l. 2945--><p class="indent" > <spacer type=vertical size=10>
+For additional glossaries, the extensions are those supplied when you created the glossary
+with <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-19020"></a>.
+</p><!--l. 2949--><p class="indent" > Note that if you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-19021"></a></a> instead, you can replace all those calls to <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-19022"></a></a>
+with just one call to <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-19023"></a>: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries myDoc</span></span>
+</p><!--l. 2954--><p class="indent" > <spacer type=vertical size=10>
+Note also that some commands and package options have no effect if you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-19024"></a></a> explicitly
+instead of using <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-19025"></a>. These are listed in <a
+href="#tab:makeglossariesCmds">table&#x00A0;1.3</a>.
+</p><!--l. 2962--><p class="noindent" >
+</p>
+
+
+<!--l. 2962--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">1.5.4 </span> <a
+ id="sec:makeindexapp"></a>Using <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> explicitly (Option 2)</h4>
+<!--l. 2965--><p class="noindent" >If you want to use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20001"></a></a> explicitly, you must make sure that you haven&#8217;t used the <span
+class="cmss-10">xindy</span><a
+ id="dx1-20002"></a>
+package option or the glossary entries will be written in the wrong format. To run <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20003"></a>,
+type the following in your terminal: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex -s </span>&#x27E8;<span
+class="cmitt-10">style</span>&#x27E9;<span
+class="cmtt-10">.ist -t </span>&#x27E8;<span
+class="cmitt-10">base</span>&#x27E9;<span
+class="cmtt-10">.glg -o </span>&#x27E8;<span
+class="cmitt-10">base</span>&#x27E9;<span
+class="cmtt-10">.gls </span>&#x27E8;<span
+class="cmitt-10">base</span>&#x27E9;<span
+class="cmtt-10">.glo</span></span>
+</p><!--l. 2972--><p class="indent" > <spacer type=vertical size=10>
+where &#x27E8;<span
+class="cmti-10">base</span>&#x27E9; is the name of your document without the <span
+class="cmtt-10">.tex</span><a
+ id="dx1-20004"></a> extension and &#x27E8;<span
+class="cmti-10">style</span>&#x27E9;<span
+class="cmtt-10">.ist</span><a
+ id="dx1-20005"></a> is the
+name of the <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20006"></a></a> style file. By default, this is &#x27E8;<span
+class="cmti-10">base</span>&#x27E9;<span
+class="cmtt-10">.ist</span><a
+ id="dx1-20007"></a>, but may be changed via
+<span
+class="cmtt-10">\setStyleFile</span><a
+ id="dx1-20008"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">style</span>&#x27E9;<span
+class="cmtt-10">}</span>. Note that there are other options, such as <span
+class="cmtt-10">-l</span><a
+ id="dx1-20009"></a> (letter ordering). See
+the <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20010"></a> manual for further details.
+</p><!--l. 2981--><p class="indent" > For example, if your document is called <span
+class="cmtt-10">myDoc.tex</span>, then type the following at the
+terminal: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex -s myDoc.ist -t myDoc.glg -o myDoc.gls myDoc.glo</span></span>
+</p><!--l. 2985--><p class="indent" > <spacer type=vertical size=10>
+Note that this only creates the main glossary. If you have additional glossaries (for example, if
+you have used the <span
+class="cmss-10">acronym</span><a
+ id="dx1-20011"></a> package option) then you must call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20012"></a></a> for each glossary,
+substituting <span
+class="cmtt-10">.glg</span><a
+ id="dx1-20013"></a>, <span
+class="cmtt-10">.gls</span><a
+ id="dx1-20014"></a> and <span
+class="cmtt-10">.glo</span><a
+ id="dx1-20015"></a> with the relevant extensions. For example, if you have used
+the <span
+class="cmss-10">acronym</span><a
+ id="dx1-20016"></a> package option, then you need to type the following in your terminal:
+<spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeindex -s myDoc.ist -t myDoc.alg -o myDoc.acr myDoc.acn</span></span>
+</p><!--l. 2996--><p class="indent" > <spacer type=vertical size=10>
+For additional glossaries, the extensions are those supplied when you created the glossary
+with <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-20017"></a>.
+</p><!--l. 3000--><p class="indent" > Note that if you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-20018"></a></a> instead, you can replace all those calls to <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20019"></a></a>
+with just one call to <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-20020"></a>: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">makeglossaries myDoc</span></span>
+</p><!--l. 3005--><p class="indent" > <spacer type=vertical size=10>
+Note also that some commands and package options have no effect if you use <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-20021"></a>
+explicitly instead of using <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-20022"></a></a>. These are listed in <a
+href="#tab:makeglossariesCmds">table&#x00A0;1.3</a>.
+</p><!--l. 3012--><p class="noindent" >
+</p>
+<!--l. 3012--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">1.5.5 </span> <a
+ id="sec:notedev"></a>Note to Front-End and Script Developers</h4>
+<!--l. 3015--><p class="noindent" >The information needed to determine whether to use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-21001"></a></a> or <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-21002"></a></a> and the
+information needed to call those applications is stored in the auxiliary file. This
+information can be gathered by a front-end, editor or script to make the glossaries where
+appropriate. This section describes how the information is stored in the auxiliary
+file.
+</p><!--l. 3022--><p class="indent" > The file extensions used by each defined glossary are given by
+</p><!--l. 3023--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\@newglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21003"></a> <span
+class="cmtt-10">\@newglossary{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">log</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">out-ext</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">in-ext</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3025--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">in-ext</span>&#x27E9; is the extension of the <a
+href="#glo:indexingapp"><span
+class="cmti-10">indexing application&#8217;s</span></a> input file (the output file from the
+<span
+class="cmss-10">glossaries </span>package&#8217;s point of view), &#x27E8;<span
+class="cmti-10">out-ext</span>&#x27E9; is the extension of the <span
+class="cmti-10">indexing application&#8217;s</span>
+output file (the input file from the <span
+class="cmss-10">glossaries </span>package&#8217;s point of view) and &#x27E8;<span
+class="cmti-10">log</span>&#x27E9; is the
+extension of the indexing application&#8217;s transcript file. The label for the glossary
+
+
+is also given for information purposes only, but is not required by the indexing
+applications. For example, the information for the default main glossary is written
+as:
+
+
+</p>
+ <div class="verbatim" id="verbatim-69">
+\@newglossary{main}{glg}{gls}{glo}
+</div>
+<!--l. 3038--><p class="nopar" >
+</p><!--l. 3040--><p class="indent" > The <a
+href="#glo:indexingapp">indexing application&#8217;s</a> style file is specified by
+</p><!--l. 3041--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\@istfilename</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21004"></a> <span
+class="cmtt-10">\@istfilename{</span>&#x27E8;<span
+class="cmitt-10">filename</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3043--><p class="noindent" >
+The file extension indicates whether to use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-21005"></a></a> (<span
+class="cmtt-10">.ist</span><a
+ id="dx1-21006"></a>) or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-21007"></a></a> (<span
+class="cmtt-10">.xdy</span><a
+ id="dx1-21008"></a>).
+Note that the glossary information is formatted differently depending on which
+indexing application is supposed to be used, so it&#8217;s important to call the correct
+one.
+</p><!--l. 3050--><p class="indent" > Word or letter ordering is specified by:
+</p><!--l. 3051--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\@glsorder</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21009"></a> <span
+class="cmtt-10">\@glsorder{</span>&#x27E8;<span
+class="cmitt-10">order</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3053--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">order</span>&#x27E9; can be either <span
+class="cmtt-10">word </span>or <span
+class="cmtt-10">letter</span>.
+</p><!--l. 3056--><p class="indent" > If <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-21010"></a></a> should be used, the language and code page for each glossary is specified
+by
+</p><!--l. 3058--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\@xdylanguage</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21011"></a><span class="marginpar"><span
+class="cmtt-9">\@gls@codepage</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21012"></a> <span
+class="cmtt-10">\@xdylanguage{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">language</span>&#x27E9;<span
+class="cmtt-10">}</span><br
+class="newline" /><span
+class="cmtt-10">\@gls@codepage{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3061--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; identifies the glossary, &#x27E8;<span
+class="cmti-10">language</span>&#x27E9; is the root language (e.g.&#x00A0;<span
+class="cmtt-10">english</span>) and &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; is
+the encoding (e.g.&#x00A0;<span
+class="cmtt-10">utf8</span>). These commands are omitted if <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-21013"></a></a> should be
+used.
+</p><!--l. 3067--><p class="indent" > If <a
+href="#option1">Option&#x00A0;1</a> has been used, the <span
+class="cmtt-10">.aux </span>file will contain
+</p><!--l. 3069--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\@gls@reference{</span>&#x27E8;<span
+class="cmitt-10">type</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. 3070--><p class="noindent" >
+for every time an entry has been referenced. If <a
+href="#option4">Option&#x00A0;4</a> has been used, the <span
+class="cmtt-10">.aux </span>file will
+contain one or more instances of
+</p><!--l. 3074--><p class="indent" > <hr><div title="Definition"><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">basename</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3075--><p class="noindent" >
+
+
+</p>
+<!--l. 3077--><p class="indent" > </div>
+</p><!--l. 3077--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">2. <a
+ id="sec:pkgopts"></a>Package Options</h2>
+</p><!--l. 3080--><p class="indent" > This section describes the available <span
+class="cmss-10">glossaries </span>package options. You may omit the
+<span
+class="cmtt-10">=true </span>for boolean options. (For example, <span
+class="cmss-10">acronym</span><a
+ id="dx1-22001"></a> is equivalent to <span
+class="cmss-10">acronym=true</span><a
+ id="dx1-22002"></a>).
+The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package has additional options described in the <span
+class="cmss-10">glossaries-extra</span>
+manual.
+</p><!--l. 3086--><p class="indent" > <div class="important" title="Important Note"> Note that &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; package options can&#8217;t be passed via the document class options.
+(This includes options where the &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; part may be omitted, such as <span
+class="cmss-10">acronym</span><a
+ id="dx1-22003"></a>.)
+This is a general limitation not restricted to the <span
+class="cmss-10">glossaries </span>package. Options that
+aren&#8217;t &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; (such as <span
+class="cmss-10">makeindex</span><a
+ id="dx1-22004"></a>) may be passed via the document class options.
+</div>
+</p><!--l. 3093--><p class="noindent" >
+</p>
+<!--l. 3095--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.1 </span> <a
+ id="sec:pkgopts-general"></a>General Options</h3>
+ <dl class="description"><dt class="description">
+<a
+ id="pkgopt:nowarn"><span
+class="cmssbx-10">nowarn</span><a
+ id="dx1-23001"></a></a> </dt><dd
+class="description">This suppresses all warnings generated by the <span
+class="cmss-10">glossaries </span>package. Don&#8217;t use this
+ option if you&#8217;re new to using <span
+class="cmss-10">glossaries </span>as the warnings are designed to help detect
+ common mistakes (such as forgetting to use <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-23002"></a>). Note that the
+ <span
+class="cmss-10">debug=true</span><a
+ id="dx1-23003"></a> and <span
+class="cmss-10">debug=showtargets</span><a
+ id="dx1-23004"></a> will override this option.
+ </dd><dt class="description">
+<a
+ id="pkgopt:nolangwarn"><span
+class="cmssbx-10">nolangwarn</span><a
+ id="dx1-23005"></a></a> </dt><dd
+class="description">This suppresses the warning generated by a missing language module.
+ </dd><dt class="description">
+<a
+ id="pkgopt:noredefwarn"><span
+class="cmssbx-10">noredefwarn</span><a
+ id="dx1-23006"></a></a> </dt><dd
+class="description">If you load <span
+class="cmss-10">glossaries </span>with a&#x00A0;class or another package that already defines
+ glossary related commands, by default <span
+class="cmss-10">glossaries </span>will warn you that it&#8217;s redefining
+ those commands. If you are aware of the consequences of using <span
+class="cmss-10">glossaries </span>with that
+ class or package and you don&#8217;t want to be warned about it, use this option to
+ suppress those warnings. Other warnings will still be issued unless you use the
+ <span
+class="cmss-10">nowarn</span><a
+ id="dx1-23007"></a> option described above.
+ </dd><dt class="description">
+<a
+ id="pkgopt:debug"><span
+class="cmssbx-10">debug</span><a
+ id="dx1-23008"></a></a> </dt><dd
+class="description">Introduced in version 4.24. The default setting is <span
+class="cmss-10">debug=false</span><a
+ id="dx1-23009"></a>. This was a
+ boolean option but as from v4.32 it now accepts the values: <span
+class="cmss-10">false</span>, <span
+class="cmss-10">true </span>and
+ <span
+class="cmss-10">showtargets</span>. If no value is given, <span
+class="cmss-10">debug=true</span><a
+ id="dx1-23010"></a> is assumed. Both <span
+class="cmss-10">debug=true</span><a
+ id="dx1-23011"></a>
+ and <span
+class="cmss-10">debug=showtargets</span><a
+ id="dx1-23012"></a> switch on the debug mode (and will automatically
+ cancel the <span
+class="cmss-10">nowarn</span><a
+ id="dx1-23013"></a> option). The <span
+class="cmss-10">debug=showtargets</span><a
+ id="dx1-23014"></a> option will additionally
+ use
+ <!--l. 3126--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsshowtarget</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23015"></a> <span
+class="cmtt-10">\glsshowtarget{</span>&#x27E8;<span
+class="cmitt-10">target name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3128--><p class="noindent" >
+ to show the hypertarget or hyperlink name in the margin when <span
+class="cmtt-10">\glsdohypertarget </span>is
+ used by commands like <span
+class="cmtt-10">\glstarget </span>and when <span
+class="cmtt-10">\glsdohyperlink </span>is used by commands
+
+
+ like <span
+class="cmtt-10">\gls</span>. This puts the information in the margin using <span
+class="cmtt-10">\marginpar</span><a
+ id="dx1-23016"></a> unless math mode
+ or inner mode are detected, in which case it puts the information in line enclosed by
+ square brackets. The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package provides an additional setting that may be
+ used to show where the indexing is occurring. See the <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> manual for further
+ details.
+ </p><!--l. 3139--><p class="noindent" >The purpose of the debug mode can be demonstrated with the following example
+ document:
+
+
+</p>
+ <div class="verbatim" id="verbatim-70">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage{glossaries}
+ &#x00A0;<br />\newglossaryentry{sample1}{name={sample1},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={example}}
+ &#x00A0;<br />\newglossaryentry{sample2}{name={sample2},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={example}}
+ &#x00A0;<br />\glsadd{sample2}
+ &#x00A0;<br />\makeglossaries
+ &#x00A0;<br />\begin{document}
+ &#x00A0;<br />\gls{sample1}.
+ &#x00A0;<br />\printglossaries
+ &#x00A0;<br />\end{document}
+</div>
+ <!--l. 3154--><p class="nopar" > In this case, only the <span
+class="cmtt-10">sample1 </span>entry has been indexed, even though <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsadd{sample2}</span></span></span>
+ appears in the source code. This is because <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsadd{sample2}</span></span></span> has been used before the
+ associated file is opened by <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-23017"></a>. Since the file isn&#8217;t open yet, the
+ information can&#8217;t be written to it, which is why the <span
+class="cmtt-10">sample2 </span>entry doesn&#8217;t appear in
+ the glossary.
+ </p><!--l. 3162--><p class="noindent" >This situation doesn&#8217;t cause any errors or warnings as it&#8217;s perfectly legitimate for a user
+ to want to use <span
+class="cmss-10">glossaries </span>to format the entries (e.g.&#x00A0;abbreviation expansion) but not
+ display any lists of terms, abbreviations, symbols etc. Without <span
+class="cmtt-10">\makeglossaries </span>the
+ indexing is suppressed but, other than that, commands like <span
+class="cmtt-10">\gls </span>behave as
+ usual. It&#8217;s also possible that the user may want to temporarily comment out
+ <span
+class="cmtt-10">\makeglossaries </span>in order to suppress the indexing while working on a draft
+ version to speed compilation. Therefore <span
+class="cmtt-10">\makeglossaries </span>can&#8217;t be used to
+ enable <span
+class="cmtt-10">\newglossaryentry </span>and <span
+class="cmtt-10">\glsadd</span>. They must be enabled by default. (It
+ does, however, enable the <span
+class="cmss-10">see</span><a
+ id="dx1-23018"></a> key as that&#8217;s a more common problem. See
+ below.)
+ </p><!--l. 3176--><p class="noindent" >The debug mode, enabled with the <span
+class="cmss-10">debug</span><a
+ id="dx1-23019"></a> option,
+
+
+</p>
+ <div class="verbatim" id="verbatim-71">
+ \usepackage[debug]{glossaries}
+</div>
+ <!--l. 3179--><p class="nopar" > will write information to the log file when the indexing can&#8217;t occur because the
+ associated file isn&#8217;t open. The message is written in the form
+ </p><div class="quote">
+ <!--l. 3184--><p class="noindent" >Package glossaries Info: wrglossary(&#x27E8;<span
+class="cmti-10">type</span>&#x27E9;)(&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;) on input line &#x27E8;<span
+class="cmti-10">line</span>
+ <span
+class="cmti-10">number</span>&#x27E9;.</p></div>
+ <!--l. 3187--><p class="noindent" >where &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is the glossary label and &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; is the line of text that would&#8217;ve been written to
+ the associated file if it had been open. So if any entries haven&#8217;t appeared in the glossary
+ but you&#8217;re sure you used commands like <span
+class="cmtt-10">\glsadd </span>or <span
+class="cmtt-10">\glsaddall</span>, try switching
+ on the <span
+class="cmss-10">debug</span><a
+ id="dx1-23020"></a> option and see if any information has been written to the log
+ file.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:seenoindex"><span
+class="cmssbx-10">seenoindex</span><a
+ id="dx1-23021"></a></a> </dt><dd
+class="description">Introduced in version 4.24, this option may take one of three values: <span
+class="cmss-10">error</span>, <span
+class="cmss-10">warn </span>or
+ <span
+class="cmss-10">ignore</span>. The <span
+class="cmss-10">see</span><a
+ id="dx1-23022"></a> key automatically indexes the cross-referenced entry using <span
+class="cmtt-10">\glsadd</span>. This
+ means that it suffers from the same problem as the above. If used before
+ the relevant glossary file has been opened, the indexing can&#8217;t be performed.
+ Since this is easy to miss, the <span
+class="cmss-10">glossaries </span>package by default issues an error
+ message if the <span
+class="cmss-10">see</span><a
+ id="dx1-23023"></a> key is used before <span
+class="cmtt-10">\makeglossaries</span>. This option allows
+ you to change the error into just a warning (<span
+class="cmss-10">seenoindex=warn</span><a
+ id="dx1-23024"></a>) or ignore it
+ (<span
+class="cmss-10">seenoindex=ignore</span><a
+ id="dx1-23025"></a>) if, for example, you want to temporarily comment out
+ <span
+class="cmtt-10">\makeglossaries </span>to speed up the compilation of a draft document by omitting the
+ indexing.
+ </dd><dt class="description">
+<a
+ id="pkgopt:nomain"><span
+class="cmssbx-10">nomain</span><a
+ id="dx1-23026"></a></a> </dt><dd
+class="description">This suppresses the creation of the main glossary and associated <span
+class="cmtt-10">.glo </span>file, if
+ unrequired. Note that if you use this option, you must create another glossary in which
+ to put all your entries (either via the <span
+class="cmss-10">acronym</span><a
+ id="dx1-23027"></a> (or <span
+class="cmss-10">acronyms</span><a
+ id="dx1-23028"></a>) package option described in
+ <a
+href="#sec:pkgopts-acronym"><span
+class="tcrm-1000">&sect;</span>2.5 </a><a
+href="#sec:pkgopts-acronym">Acronym Options<!--tex4ht:ref: sec:pkgopts-acronym --></a> or via the <span
+class="cmss-10">symbols</span><a
+ id="dx1-23029"></a>, <span
+class="cmss-10">numbers</span><a
+ id="dx1-23030"></a> or <span
+class="cmss-10">index</span><a
+ id="dx1-23031"></a> options described
+ in <a
+href="#sec:pkgopts-other"><span
+class="tcrm-1000">&sect;</span>2.6 </a><a
+href="#sec:pkgopts-other">Other Options<!--tex4ht:ref: sec:pkgopts-other --></a> or via <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-23032"></a> described in <a
+href="#sec:newglossary"><span
+class="tcrm-1000">&sect;</span>12 </a><a
+href="#sec:newglossary">Defining New
+ Glossaries<!--tex4ht:ref: sec:newglossary --></a>).
+ <!--l. 3218--><p class="noindent" ><div class="important" title="Important Note"> If you don&#8217;t use the main glossary and you don&#8217;t use this option, <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-23033"></a></a> will
+ produce a warning. </div>
+ </p><!--l. 3221--><p class="noindent" >
+ </p><div class="alltt">
+
+
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">Warning:</span><span
+class="cmtt-10">&#x00A0;File</span><span
+class="cmtt-10">&#x00A0;'</span><span
+class="cmitt-10">filename</span><span
+class="cmtt-10">.glo'</span><span
+class="cmtt-10">&#x00A0;is</span><span
+class="cmtt-10">&#x00A0;empty.</span>
+ <br /><span
+class="cmtt-10">Have</span><span
+class="cmtt-10">&#x00A0;you</span><span
+class="cmtt-10">&#x00A0;used</span><span
+class="cmtt-10">&#x00A0;any</span><span
+class="cmtt-10">&#x00A0;entries</span><span
+class="cmtt-10">&#x00A0;defined</span><span
+class="cmtt-10">&#x00A0;in</span><span
+class="cmtt-10">&#x00A0;glossary</span>
+ <br /><span
+class="cmtt-10">'main'?</span>
+ <br /><span
+class="cmtt-10">Remember</span><span
+class="cmtt-10">&#x00A0;to</span><span
+class="cmtt-10">&#x00A0;use</span><span
+class="cmtt-10">&#x00A0;package</span><span
+class="cmtt-10">&#x00A0;option</span><span
+class="cmtt-10">&#x00A0;'nomain'</span><span
+class="cmtt-10">&#x00A0;if</span>
+ <br /><span
+class="cmtt-10">you</span><span
+class="cmtt-10">&#x00A0;don't</span><span
+class="cmtt-10">&#x00A0;want</span><span
+class="cmtt-10">&#x00A0;to</span><span
+class="cmtt-10">&#x00A0;use</span><span
+class="cmtt-10">&#x00A0;the</span><span
+class="cmtt-10">&#x00A0;main</span><span
+class="cmtt-10">&#x00A0;glossary.</span>
+</div>
+ </div> If you did actually want to use the main glossary and you see this warning, check
+ that you have referenced the entries in that glossary via commands such as
+ <span
+class="cmtt-10">\gls</span><a
+ id="dx1-23034"></a>.
+ </dd><dt class="description">
+<a
+ id="pkgopt:sanitizesort"><span
+class="cmssbx-10">sanitizesort</span><a
+ id="dx1-23035"></a></a> </dt><dd
+class="description">This is a boolean option that determines whether or not to <a
+href="#glo:sanitize">sanitize<a
+ id="dx1-23036"></a></a> the sort
+ value when writing to the external glossary file. For example, suppose you define an
+ entry as follows:
+
+
+ <div class="verbatim" id="verbatim-72">
+ \newglossaryentry{hash}{name={\#},sort={#},
+ &#x00A0;<br />&#x00A0;description={hash&#x00A0;symbol}}
+</div>
+ <!--l. 3240--><p class="nopar" > The sort value (<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">#</span></span></span>) must be sanitized before writing it to the glossary file, otherwise
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;will try to interpret it as a parameter reference. If, on the other hand, you
+ want the sort value expanded, you need to switch off the sanitization. For example,
+ suppose you do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-73">
+ \newcommand{\mysortvalue}{AAA}
+ &#x00A0;<br />\newglossaryentry{sample}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;name={sample},
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={\mysortvalue},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}}
+</div>
+ <!--l. 3252--><p class="nopar" > and you actually want <span
+class="cmtt-10">\mysortvalue </span>expanded, so that the entry is sorted according
+ to <span
+class="cmtt-10">AAA</span>, then use the package option <span
+class="cmss-10">sanitizesort=false</span><a
+ id="dx1-23037"></a>.
+ </p><!--l. 3257--><p class="noindent" >The default for Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a> is <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-23038"></a>, and the default for <a
+href="#option1">Option&#x00A0;1</a> is
+ <span
+class="cmss-10">sanitizesort=false</span><a
+ id="dx1-23039"></a>.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:savewrites"><span
+class="cmssbx-10">savewrites</span><a
+ id="dx1-23040"></a></a> </dt><dd
+class="description">This is a boolean option to minimise the number of write registers used by the
+ <span
+class="cmss-10">glossaries </span>package. (Default is <span
+class="cmss-10">savewrites=false</span><a
+ id="dx1-23041"></a>.) There are only a limited number of
+ write registers, and if you have a large number of glossaries or if you are using a class or
+ other packages that create a lot of external files, you may exceed the maximum number
+ of available registers. If <span
+class="cmss-10">savewrites</span><a
+ id="dx1-23042"></a> is set, the glossary information will be stored in token
+ registers until the end of the document when they will be written to the external
+ files.
+ <!--l. 3270--><p class="noindent" ><div class="important" title="Important Note"> This option can significantly slow document compilation and may cause the indexing to
+ fail. Page numbers in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-23043"></a></a> will be incorrect on page boundaries due
+ to <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s asynchronous output routine. As an alternative, you can use the
+ <span
+class="cmss-10">scrwfile</span><a
+ id="dx1-23044"></a> package (part of the KOMA-Script bundle) and not use this option.
+ </div>
+ </p><!--l. 3276--><p class="noindent" >
+ </p><!--l. 3278--><p class="noindent" >You can also reduce the number of write registers by using Options&#x00A0;<a
+href="#option1">1</a> or&#x00A0;<a
+href="#option4">4</a> or by
+ ensuring you define all your glossary entries in the preamble.
+ </p><!--l. 3282--><p class="noindent" ><div class="important" title="Important Note"> If you want to use <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s <span
+class="cmtt-10">\write18</span><a
+ id="dx1-23045"></a> mechanism to call <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-23046"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-23047"></a></a> from
+ your document and use <span
+class="cmss-10">savewrites</span><a
+ id="dx1-23048"></a>, you must create the external files with
+ <span
+class="cmtt-10">\glswritefiles </span>before you call <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-23049"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-23050"></a>. Also set <span
+class="cmtt-10">\glswritefiles </span>to
+ nothing or <span
+class="cmtt-10">\relax </span>before the end of the document to avoid rewriting the files. For
+ example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-74">
+ \glswritefiles
+ &#x00A0;<br />\write18{makeindex&#x00A0;-s&#x00A0;\istfilename\space
+ &#x00A0;<br />-t&#x00A0;\jobname.glg&#x00A0;-o&#x00A0;\jobname.gls&#x00A0;\jobname}
+ &#x00A0;<br />\let\glswritefiles\relax
+</div>
+ <!--l. 3294--><p class="nopar" > </div>
+ </p><!--l. 3295--><p class="noindent" >
+ In general, this package option is best avoided.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:translate"><span
+class="cmssbx-10">translate</span><a
+ id="dx1-23051"></a></a> </dt><dd
+class="description">This can take the following values:
+ <dl class="description"><dt class="description">
+ <span
+class="cmssbx-10">translate=true</span><a
+ id="dx1-23052"></a> </dt><dd
+class="description">If <span
+class="cmss-10">babel</span><a
+ id="dx1-23053"></a> has been loaded and the <span
+class="cmss-10">translator</span><a
+ id="dx1-23054"></a> package is installed,
+ <span
+class="cmss-10">translator</span><a
+ id="dx1-23055"></a> will be loaded and the translations will be provided by the <span
+class="cmss-10">translator</span><a
+ id="dx1-23056"></a>
+ package interface. You can modify the translations by providing your own
+ dictionary. If the <span
+class="cmss-10">translator</span><a
+ id="dx1-23057"></a> package isn&#8217;t installed and <span
+class="cmss-10">babel</span><a
+ id="dx1-23058"></a> is loaded, the
+ <span
+class="cmss-10">glossaries-babel</span><a
+ id="dx1-23059"></a> package will be loaded and the translations will be provided
+ using <span
+class="cmss-10">babel</span>&#8217;s <span
+class="cmtt-10">\addto\caption</span>&#x27E8;<span
+class="cmti-10">language</span>&#x27E9; mechanism. If <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-23060"></a> has been
+ loaded, <span
+class="cmss-10">glossaries-polyglossia</span><a
+ id="dx1-23061"></a> will be loaded.
+ </dd><dt class="description">
+ <span
+class="cmssbx-10">translate=false</span><a
+ id="dx1-23062"></a> </dt><dd
+class="description">Don&#8217;t provide translations, even if <span
+class="cmss-10">babel</span><a
+ id="dx1-23063"></a> or <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-23064"></a> has been
+ loaded. (Note that <span
+class="cmss-10">babel</span><a
+ id="dx1-23065"></a> provides the command <span
+class="cmtt-10">\glossaryname</span><a
+ id="dx1-23066"></a> so that will
+ still be translated if you have loaded <span
+class="cmss-10">babel</span><a
+ id="dx1-23067"></a>.)
+ </dd><dt class="description">
+ <span
+class="cmssbx-10">translate=babel</span><a
+ id="dx1-23068"></a> </dt><dd
+class="description">Don&#8217;t load the <span
+class="cmss-10">translator</span><a
+ id="dx1-23069"></a> package. Instead load <span
+class="cmss-10">glossaries-babel</span><a
+ id="dx1-23070"></a>.
+ <!--l. 3321--><p class="noindent" ><div class="important" title="Important Note"> I recommend you use <span
+class="cmss-10">translate=babel</span><a
+ id="dx1-23071"></a> if you have any problems with the
+ translations or with PDF bookmarks, but to maintain backward compatibility, if
+ <span
+class="cmss-10">babel</span><a
+ id="dx1-23072"></a> has been loaded the default is <span
+class="cmss-10">translate=true</span><a
+ id="dx1-23073"></a>. </div>
+ </p><!--l. 3326--><p class="noindent" >
+</p>
+ </dd></dl>
+ <!--l. 3330--><p class="noindent" >If <span
+class="cmss-10">translate</span><a
+ id="dx1-23074"></a> is specified without a value, <span
+class="cmss-10">translate=true</span><a
+ id="dx1-23075"></a> is assumed. If <span
+class="cmss-10">translate</span><a
+ id="dx1-23076"></a> isn&#8217;t
+ specified, <span
+class="cmss-10">translate=true</span><a
+ id="dx1-23077"></a> is assumed if <span
+class="cmss-10">babel</span><a
+ id="dx1-23078"></a>, <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-23079"></a> or <span
+class="cmss-10">translator</span><a
+ id="dx1-23080"></a> have been loaded.
+ Otherwise <span
+class="cmss-10">translate=false</span><a
+ id="dx1-23081"></a> is assumed.
+ </p><!--l. 3336--><p class="noindent" >See <a
+href="#sec:fixednames"><span
+class="tcrm-1000">&sect;</span>1.4.1 </a><a
+href="#sec:fixednames">Changing the Fixed Names<!--tex4ht:ref: sec:fixednames --></a> for further details.
+
+
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:notranslate"><span
+class="cmssbx-10">notranslate</span><a
+ id="dx1-23082"></a></a> </dt><dd
+class="description">This is equivalent to <span
+class="cmss-10">translate=false</span><a
+ id="dx1-23083"></a> and may be passed via the document class
+ options.
+ </dd><dt class="description">
+<a
+ id="pkgopt:nohypertypes"><span
+class="cmssbx-10">nohypertypes</span><a
+ id="dx1-23084"></a></a> </dt><dd
+class="description">Use this option if you have multiple glossaries and you want to suppress the
+ entry hyperlinks for a particular glossary or glossaries. The value of this option should
+ be a comma-separated list of glossary types where <span
+class="cmtt-10">\gls</span><a
+ id="dx1-23085"></a> etc shouldn&#8217;t have hyperlinks
+ by default. Make sure you enclose the value in braces if it contains any commas.
+ Example:
+
+
+ <div class="verbatim" id="verbatim-75">
+ \usepackage[acronym,nohypertypes={acronym,notation}]
+ &#x00A0;<br />&#x00A0;&#x00A0;{glossaries}
+ &#x00A0;<br />\newglossary[nlg]{notation}{not}{ntn}{Notation}
+</div>
+ <!--l. 3352--><p class="nopar" > The values must be fully expanded, so <span
+class="cmbx-10">don&#8217;t </span>try <span
+class="cmtt-10">nohypertypes=\acronymtype</span><a
+ id="dx1-23086"></a>. You
+ may also use
+ </p><!--l. 3356--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\GlsDeclareNoHyperList</span><a
+ id="dx1-23087"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3357--><p class="noindent" >
+ instead or additionally. See <a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to Glossary Entries<!--tex4ht:ref: sec:glslink --></a> for further details.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:hyperfirst"><span
+class="cmssbx-10">hyperfirst</span><a
+ id="dx1-23088"></a></a> </dt><dd
+class="description">This is a boolean option that specifies whether each term has a hyperlink on <a
+href="#glo:firstuse">first
+ use</a>. The default is <span
+class="cmss-10">hyperfirst=true</span><a
+ id="dx1-23089"></a> (terms on <a
+href="#glo:firstuse">first use</a> have a hyperlink, unless
+ explicitly suppressed using starred versions of commands such as <span
+class="cmtt-10">\gls*</span><a
+ id="dx1-23090"></a> or
+ by identifying the glossary with <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-23091"></a>, described above). Note that
+ <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-23092"></a> overrides <span
+class="cmss-10">hyperfirst=true</span><a
+ id="dx1-23093"></a>. This option only affects commands that
+ check the <a
+href="#glo:firstuseflag">first use flag</a>, such as the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands (for example, <span
+class="cmtt-10">\gls</span><a
+ id="dx1-23094"></a> or
+ <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-23095"></a>), but not the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands (for example, <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-23096"></a> or
+ <span
+class="cmtt-10">\glstext</span><a
+ id="dx1-23097"></a>).
+ <!--l. 3373--><p class="noindent" >The <span
+class="cmss-10">hyperfirst</span><a
+ id="dx1-23098"></a> setting applies to all glossary types (unless identified by <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-23099"></a> or
+ defined with <span
+class="cmtt-10">\newignoredglossary</span><a
+ id="dx1-23100"></a>). It can be overridden on an individual basis by
+ explicitly setting the <span
+class="cmss-10">hyper</span><a
+ id="dx1-23101"></a> key when referencing an entry (or by using the plus or
+ starred version of the referencing command).
+ </p><!--l. 3380--><p class="noindent" >It may be that you only want to apply this to just the acronyms (where the first use
+ explains the meaning of the acronym) but not for ordinary glossary entries (where the
+ first use is identical to subsequent uses). In this case, you can use <span
+class="cmss-10">hyperfirst=false</span><a
+ id="dx1-23102"></a>
+ and apply <span
+class="cmtt-10">\glsunsetall </span>to all the regular (non-acronym) glossaries. For
+ example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-76">
+ &#x00A0;\usepackage[acronym,hyperfirst=false]{glossaries}
+ &#x00A0;<br />&#x00A0;%&#x00A0;acronym&#x00A0;and&#x00A0;glossary&#x00A0;entry&#x00A0;definitions
+ &#x00A0;<br />&#x00A0;%&#x00A0;at&#x00A0;the&#x00A0;end&#x00A0;of&#x00A0;the&#x00A0;preamble
+ &#x00A0;<br />&#x00A0;\glsunsetall[main]
+</div>
+ <!--l. 3392--><p class="nopar" >
+ </p><!--l. 3394--><p class="noindent" >Alternatively you can redefine the hook
+ </p><!--l. 3395--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslinkcheckfirsthyperhook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23103"></a> <span
+class="cmtt-10">\glslinkcheckfirsthyperhook </span></div><hr>
+ </p><!--l. 3397--><p class="noindent" >
+ which is used by the commands that check the <a
+href="#glo:firstuseflag">first use flag</a>, such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-23104"></a>. Within the
+ definition of this command, you can use <span
+class="cmtt-10">\glslabel</span><a
+ id="dx1-23105"></a> to reference the entry label and
+ <span
+class="cmtt-10">\glstype</span><a
+ id="dx1-23106"></a> to reference the glossary type. You can also use <span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-23107"></a> to determine if
+ the entry has been used. You can test if an entry is an acronym by checking if it has the
+ <span
+class="cmss-10">long</span><a
+ id="dx1-23108"></a> key set using <span
+class="cmtt-10">\ifglshaslong</span><a
+ id="dx1-23109"></a>. For example, to switch off the hyperlink on first use
+ just for acronyms:
+
+
+</p>
+ <div class="verbatim" id="verbatim-77">
+ \renewcommand*{\glslinkcheckfirsthyperhook}{%
+ &#x00A0;<br />&#x00A0;\ifglsused{\glslabel}{}%
+ &#x00A0;<br />&#x00A0;{%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\ifglshaslong{\glslabel}{\setkeys{glslink}{hyper=false}}{}%
+ &#x00A0;<br />&#x00A0;}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 3413--><p class="nopar" >
+ </p><!--l. 3415--><p class="noindent" >Note that this hook isn&#8217;t used by the commands that don&#8217;t check the <a
+href="#glo:firstuseflag">first use flag</a>, such
+ as <span
+class="cmtt-10">\glstext</span><a
+ id="dx1-23110"></a>. (You can, instead, redefine <span
+class="cmtt-10">\glslinkpostsetkeys</span><a
+ id="dx1-23111"></a>, which is used by both
+ the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands.)
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:indexonlyfirst"><span
+class="cmssbx-10">indexonlyfirst</span><a
+ id="dx1-23112"></a></a> </dt><dd
+class="description">This is a boolean option that specifies whether to only add information to the
+ external glossary file on <a
+href="#glo:firstuse">first use</a>. The default is <span
+class="cmss-10">indexonlyfirst=false</span><a
+ id="dx1-23113"></a>, which will add a
+ line to the file every time one of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;or <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands are
+ used. Note that <span
+class="cmtt-10">\glsadd</span><a
+ id="dx1-23114"></a> will always add information to the external glossary
+ file<span class="footnote-mark"><a
+href="#fn1x2" id="fn1x2-bk"><sup class="textsuperscript">2.1</sup></a></span><a
+ id="x1-23115f1"></a>&#x00A0;(since
+ that&#8217;s the purpose of that command).
+ <!--l. 3429--><p class="noindent" >You can customise this by redefining
+ </p><!--l. 3430--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glswriteentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23116"></a> <span
+class="cmtt-10">\glswriteentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">wr-code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3432--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label and &#x27E8;<span
+class="cmti-10">wr-code</span>&#x27E9; is the code that writes the entry&#8217;s
+ information to the external file. The default definition of <span
+class="cmtt-10">\glswriteentry</span>
+ is:
+
+
+</p>
+ <div class="verbatim" id="verbatim-78">
+ \newcommand*{\glswriteentry}[2]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\ifglsindexonlyfirst
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsused{#1}{}{#2}%
+ &#x00A0;<br />&#x00A0;&#x00A0;\else
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;#2%
+ &#x00A0;<br />&#x00A0;&#x00A0;\fi
+ &#x00A0;<br />}
+</div>
+ <!--l. 3444--><p class="nopar" > This checks the <span
+class="cmss-10">indexonlyfirst</span><a
+ id="dx1-23117"></a> package option (using <span
+class="cmtt-10">\ifglsindexonlyfirst</span>) and does
+ &#x27E8;<span
+class="cmti-10">wr-code</span>&#x27E9; if this is <span
+class="cmss-10">false </span>otherwise it only does &#x27E8;<span
+class="cmti-10">wr-code</span>&#x27E9; of the entry hasn&#8217;t been
+ used.
+ </p><!--l. 3450--><p class="noindent" >For example, suppose you only want to index the first use for entries in the <span
+class="cmtt-10">acronym</span>
+ glossary and not in the <span
+class="cmtt-10">main </span>(or any other) glossary:
+
+
+</p>
+ <div class="verbatim" id="verbatim-79">
+ \renewcommand*{\glswriteentry}[2]{%
+ &#x00A0;<br />&#x00A0;\ifthenelse{\equal{\glsentrytype{#1}}{acronym}}
+ &#x00A0;<br />&#x00A0;{\ifglsused{#1}{}{#2}}%
+ &#x00A0;<br />&#x00A0;{#2}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 3459--><p class="nopar" > Here I&#8217;ve used <span
+class="cmtt-10">\ifthenelse </span>to ensure the arguments of <span
+class="cmtt-10">\equal </span>are fully expanded
+ before the comparison is made.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:savenumberlist"><span
+class="cmssbx-10">savenumberlist</span><a
+ id="dx1-23118"></a></a> </dt><dd
+class="description">This is a boolean option that specifies whether or not to gather and
+ store the <a
+href="#glo:numberlist">number list<a
+ id="dx1-23119"></a></a> for each entry. The default is <span
+class="cmss-10">savenumberlist=false</span><a
+ id="dx1-23120"></a>. (See
+ <span
+class="cmtt-10">\glsentrynumberlist</span><a
+ id="dx1-23121"></a> and <span
+class="cmtt-10">\glsdisplaynumberlist</span><a
+ id="dx1-23122"></a> in <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using Glossary Terms
+ Without Links<!--tex4ht:ref: sec:glsnolink --></a>.) This is always true if you use <a
+href="#option1">Option&#x00A0;1</a>.
+ </dd></dl>
+<!--l. 3472--><p class="noindent" >
+</p>
+<!--l. 3472--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.2 </span> <a
+ id="sec:pkgopts-sec"></a>Sectioning, Headings and TOC Options</h3>
+ <dl class="description"><dt class="description">
+<a
+ id="pkgopt:toc"><span
+class="cmssbx-10">toc</span><a
+ id="dx1-24001"></a></a> </dt><dd
+class="description">Add the glossaries to the table of contents. Note that an extra <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run is
+ required with this option. Alternatively, you can switch this function on and off
+ using
+ <!--l. 3479--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstoctrue</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24002"></a> <span
+class="cmtt-10">\glstoctrue </span></div><hr>
+ </p><!--l. 3481--><p class="noindent" >
+ and
+ </p><!--l. 3483--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstocfalse</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24003"></a> <span
+class="cmtt-10">\glstocfalse </span></div><hr>
+ </p><!--l. 3485--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:numberline"><span
+class="cmssbx-10">numberline</span><a
+ id="dx1-24004"></a></a> </dt><dd
+class="description">When used with <span
+class="cmss-10">toc</span><a
+ id="dx1-24005"></a>, this will add <span
+class="cmtt-10">\numberline</span><a
+ id="dx1-24006"></a><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{}</span></span></span> in the final argument of
+ <span
+class="cmtt-10">\addcontentsline</span><a
+ id="dx1-24007"></a>. This will align the table of contents entry with the numbered
+ section titles. Note that this option has no effect if the <span
+class="cmss-10">toc</span><a
+ id="dx1-24008"></a> option is omitted. If <span
+class="cmss-10">toc</span><a
+ id="dx1-24009"></a> is
+ used without <span
+class="cmss-10">numberline</span><a
+ id="dx1-24010"></a>, the title will be aligned with the section numbers rather than
+ the section titles.
+
+
+ </dd><dt class="description">
+<a
+ id="pkgopt:section"><span
+class="cmssbx-10">section</span><a
+ id="dx1-24011"></a></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. Its value should be the name of a sectional unit
+ (e.g.&#x00A0;chapter). This will make the glossaries appear in the named sectional unit,
+ otherwise each glossary will appear in a chapter, if chapters exist, otherwise in a section.
+ Unnumbered sectional units will be used by default. Example:
+
+
+ <div class="verbatim" id="verbatim-80">
+ \usepackage[section=subsection]{glossaries}
+</div>
+ <!--l. 3503--><p class="nopar" > You can omit the value if you want to use sections, i.e.&#x00A0;
+
+
+</p>
+ <div class="verbatim" id="verbatim-81">
+ \usepackage[section]{glossaries}
+</div>
+ <!--l. 3507--><p class="nopar" > is equivalent to
+
+
+</p>
+ <div class="verbatim" id="verbatim-82">
+ \usepackage[section=section]{glossaries}
+</div>
+ <!--l. 3511--><p class="nopar" > You can change this value later in the document using
+ </p><!--l. 3513--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setglossarysection</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24012"></a> <span
+class="cmtt-10">\setglossarysection{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3515--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the sectional unit.
+ </p><!--l. 3518--><p class="noindent" >The start of each glossary adds information to the page header via
+ </p><!--l. 3519--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsglossarymark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24013"></a> <span
+class="cmtt-10">\glsglossarymark{</span>&#x27E8;<span
+class="cmitt-10">glossary title</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3521--><p class="noindent" >
+ By default this uses <span
+class="cmtt-10">\@mkboth</span><span class="footnote-mark"><a
+href="#fn2x2" id="fn2x2-bk"><sup class="textsuperscript">2.2</sup></a></span><a
+ id="x1-24014f2"></a>
+ but you may need to redefine it. For example, to only change the right header:
+
+
+</p>
+ <div class="verbatim" id="verbatim-83">
+ \renewcommand{\glsglossarymark}[1]{\markright{#1}}
+</div>
+ <!--l. 3528--><p class="nopar" > or to prevent it from changing the headers:
+
+
+</p>
+ <div class="verbatim" id="verbatim-84">
+ \renewcommand{\glsglossarymark}[1]{}
+</div>
+ <!--l. 3532--><p class="nopar" > If you want <span
+class="cmtt-10">\glsglossarymark </span>to use <span
+class="cmtt-10">\MakeUppercase </span>in the header, use the <span
+class="cmss-10">ucmark</span><a
+ id="dx1-24017"></a>
+ option described below.
+ </p><!--l. 3536--><p class="noindent" >Occasionally you may find that another package defines <span
+class="cmtt-10">\cleardoublepage </span>when it is
+ not required. This may cause an unwanted blank page to appear before each glossary.
+ This can be fixed by redefining <span class="marginpar"><span
+class="cmtt-9">\glsclearpage</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24018"></a><span
+class="cmtt-10">\glsclearpage</span>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-85">
+ \renewcommand*{\glsclearpage}{\clearpage}
+</div>
+ <!--l. 3542--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:ucmark"><span
+class="cmssbx-10">ucmark</span><a
+ id="dx1-24019"></a></a> </dt><dd
+class="description">This is a boolean option (default: <span
+class="cmss-10">ucmark=false</span><a
+ id="dx1-24020"></a>, unless <span
+class="cmss-10">memoir</span><a
+ id="dx1-24021"></a> has been loaded,
+ in which case it defaults to <span
+class="cmss-10">ucmark=true</span><a
+ id="dx1-24022"></a>). If set, <span
+class="cmtt-10">\glsglossarymark</span><a
+ id="dx1-24023"></a> uses
+ <span
+class="cmtt-10">\MakeTextUppercase</span><a
+ id="dx1-24024"></a><span class="footnote-mark"><a
+href="#fn3x2" id="fn3x2-bk"><sup class="textsuperscript">2.3</sup></a></span><a
+ id="x1-24025f3"></a>.
+ You can test whether this option has been set or not using
+ <!--l. 3555--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsucmark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24030"></a> <span
+class="cmtt-10">\ifglsucmark </span>&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;<span
+class="cmtt-10">\else </span>&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9;<span
+class="cmtt-10">\fi </span></div><hr>
+ </p><!--l. 3557--><p class="noindent" >
+ For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-86">
+ \renewcommand{\glsglossarymark}[1]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\ifglsucmark
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\markright{\MakeTextUppercase{#1}}%
+ &#x00A0;<br />&#x00A0;&#x00A0;\else
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\markright{#1}%
+ &#x00A0;<br />&#x00A0;&#x00A0;\fi}
+</div>
+ <!--l. 3566--><p class="nopar" > If <span
+class="cmss-10">memoir</span><a
+ id="dx1-24031"></a> has been loaded and <span
+class="cmss-10">ucfirst</span><a
+ id="dx1-24032"></a> is set, then <span
+class="cmss-10">memoir</span><a
+ id="dx1-24033"></a>&#8217;s <span
+class="cmtt-10">\memUChead</span><a
+ id="dx1-24034"></a> is
+ used.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:numberedsection"><span
+class="cmssbx-10">numberedsection</span><a
+ id="dx1-24035"></a></a> </dt><dd
+class="description">The glossaries are placed in unnumbered sectional units by default, but
+ this can be changed using <span
+class="cmss-10">numberedsection</span><a
+ id="dx1-24036"></a>. This option can take one of the following
+ values:
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmss-10">false</span><a
+ id="dx1-24037"></a>:
+ no number, i.e.&#x00A0;use starred form of sectioning command (e.g.&#x00A0;<span
+class="cmtt-10">\chapter* </span>or
+ <span
+class="cmtt-10">\section*</span>);
+ </li>
+ <li class="itemize"><span
+class="cmss-10">nolabel</span><a
+ id="dx1-24038"></a>: use a numbered section, i.e.&#x00A0;the unstarred form of sectioning
+ command (e.g.&#x00A0;<span
+class="cmtt-10">\chapter </span>or <span
+class="cmtt-10">\section</span>), but the section not labelled;
+ </li>
+ <li class="itemize"><span
+class="cmss-10">autolabel</span><a
+ id="dx1-24039"></a>: numbered with automatic labelling. Each glossary uses the unstarred
+ form of a sectioning command (e.g.&#x00A0;<span
+class="cmtt-10">\chapter </span>or <span
+class="cmtt-10">\section</span>) and is assigned a label
+ (via <span
+class="cmtt-10">\label</span><a
+ id="dx1-24040"></a>). The label is formed from
+ <!--l. 3587--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsautoprefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-24041"></a> <span
+class="cmtt-10">\glsautoprefix </span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9; </div><hr>
+ </p><!--l. 3589--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is the label identifying that glossary. The default value of
+ <span
+class="cmtt-10">\glsautoprefix </span>is empty. For example, if you load <span
+class="cmss-10">glossaries </span>using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-87">
+ \usepackage[section,numberedsection=autolabel]
+ &#x00A0;<br />&#x00A0;&#x00A0;{glossaries}
+</div>
+ <!--l. 3597--><p class="nopar" > then each glossary will appear in a numbered section, and can be referenced using
+ something like:
+
+
+</p>
+ <div class="verbatim" id="verbatim-88">
+ The&#x00A0;main&#x00A0;glossary&#x00A0;is&#x00A0;in&#x00A0;section~\ref{main}&#x00A0;and
+ &#x00A0;<br />the&#x00A0;list&#x00A0;of&#x00A0;acronyms&#x00A0;is&#x00A0;in&#x00A0;section~\ref{acronym}.
+</div>
+ <!--l. 3603--><p class="nopar" > If you can&#8217;t decide whether to have the acronyms in the main glossary or a
+ separate list of acronyms, you can use <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-24042"></a> which is set to <span
+class="cmtt-10">main </span>if the
+ <span
+class="cmss-10">acronym</span><a
+ id="dx1-24043"></a> option is not used and is set to <span
+class="cmtt-10">acronym </span>if the <span
+class="cmss-10">acronym</span><a
+ id="dx1-24044"></a> option is used. For
+ example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-89">
+ The&#x00A0;list&#x00A0;of&#x00A0;acronyms&#x00A0;is&#x00A0;in&#x00A0;section~\ref{\acronymtype}.
+</div>
+ <!--l. 3611--><p class="nopar" > You can redefine the prefix if the default label clashes with another label in your
+ document. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-90">
+ \renewcommand*{\glsautoprefix}{glo:}
+</div>
+ <!--l. 3617--><p class="nopar" > will add <span
+class="cmtt-10">glo: </span>to the automatically generated label, so you can then, for example,
+ refer to the list of acronyms as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-91">
+ The&#x00A0;list&#x00A0;of&#x00A0;acronyms&#x00A0;is&#x00A0;in
+ &#x00A0;<br />section~\ref{glo:\acronymtype}.
+</div>
+ <!--l. 3623--><p class="nopar" > Or, if you are undecided on a prefix:
+
+
+</p>
+ <div class="verbatim" id="verbatim-92">
+ The&#x00A0;list&#x00A0;of&#x00A0;acronyms&#x00A0;is&#x00A0;in
+ &#x00A0;<br />section~\ref{\glsautoprefix\acronymtype}.
+</div>
+ <!--l. 3628--><p class="nopar" >
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">nameref</span><a
+ id="dx1-24045"></a>: this is like <span
+class="cmss-10">autolabel</span><a
+ id="dx1-24046"></a> but uses an unnumbered sectioning command
+ (e.g.&#x00A0;<span
+class="cmtt-10">\chapter*</span><a
+ id="dx1-24047"></a> or <span
+class="cmtt-10">\section*</span><a
+ id="dx1-24048"></a>). It&#8217;s designed for use with the <span
+class="cmss-10">nameref</span><a
+ id="dx1-24049"></a> package.
+ For example:
+
+
+ <div class="verbatim" id="verbatim-93">
+ \usepackage{nameref}
+ &#x00A0;<br />\usepackage[numberedsection=nameref]{glossaries}
+</div>
+ <!--l. 3637--><p class="nopar" > Now <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\nameref{main}</span></span></span> will display the (TOC) section title associated with the
+ <span
+class="cmtt-10">main </span>glossary. As above, you can redefine <span
+class="cmtt-10">\glsautoprefix </span>to provide a prefix for
+ the label.</p></li></ul>
+ </dd></dl>
+<!--l. 3645--><p class="noindent" >
+</p>
+<!--l. 3645--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.3 </span> <a
+ id="sec:pkgopts-printglos"></a>Glossary Appearance Options</h3>
+ <dl class="description"><dt class="description">
+<a
+ id="pkgopt:entrycounter"><span
+class="cmssbx-10">entrycounter</span><a
+ id="dx1-25001"></a></a> </dt><dd
+class="description">This is a boolean option. (Default is <span
+class="cmss-10">entrycounter=false</span><a
+ id="dx1-25002"></a>.) If set, each main
+ (level&#x00A0;0) glossary entry will be numbered when using the standard glossary styles.
+ This option creates the counter <span class="marginpar"><span
+class="cmtt-9">glossaryentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25003"></a><a
+ id="dx1-25004"></a><span
+class="cmss-10">glossaryentry</span>.
+ <!--l. 3655--><p class="noindent" >If you use this option, you can reference the entry number within the document
+ using
+ </p><!--l. 3657--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsrefentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25005"></a> <span
+class="cmtt-10">\glsrefentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3659--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label associated with that glossary entry. The labelling
+ systems uses &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label and &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9; is given
+ by
+ </p><!--l. 3663--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsEntryCounterLabelPrefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25006"></a> <span
+class="cmtt-10">\GlsEntryCounterLabelPrefix </span></div><hr>
+ </p><!--l. 3665--><p class="noindent" >
+ (which defaults to <span
+class="cmtt-10">glsentry-</span>).
+ </p><!--l. 3668--><p class="noindent" ><div class="important" title="Important Note"> If you use <span
+class="cmtt-10">\glsrefentry</span>, you must run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;twice after creating the glossary files
+ using <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-25007"></a></a>, <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-25008"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-25009"></a></a> to ensure the cross-references are
+ up-to-date. </div>
+ </p><!--l. 3673--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:counterwithin"><span
+class="cmssbx-10">counterwithin</span><a
+ id="dx1-25010"></a></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 where &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; is the name of a counter. If used, this
+ option will automatically set <span
+class="cmss-10">entrycounter=true</span><a
+ id="dx1-25011"></a> and the <span
+class="cmss-10">glossaryentry</span><a
+ id="dx1-25012"></a> counter will be
+ reset every time &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; is incremented.
+ <!--l. 3682--><p class="noindent" ><div class="important" title="Important Note"> The <span
+class="cmss-10">glossaryentry</span><a
+ id="dx1-25013"></a> counter isn&#8217;t automatically reset at the start of each glossary, except
+ when glossary section numbering is on and the counter used by <span
+class="cmss-10">counterwithin</span><a
+ id="dx1-25014"></a> is the
+ same as the counter used in the glossary&#8217;s sectioning command. </div>
+
+
+ </p><!--l. 3687--><p class="noindent" >
+ </p><!--l. 3689--><p class="noindent" >If you want the counter reset at the start of each glossary, you can redefine
+ <span
+class="cmtt-10">\glossarypreamble</span><a
+ id="dx1-25015"></a> to use
+ </p><!--l. 3691--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsresetentrycounter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25016"></a> <span
+class="cmtt-10">\glsresetentrycounter </span></div><hr>
+ </p><!--l. 3693--><p class="noindent" >
+ which sets <span
+class="cmss-10">glossaryentry</span><a
+ id="dx1-25017"></a> to zero:
+
+
+</p>
+ <div class="verbatim" id="verbatim-94">
+ \renewcommand{\glossarypreamble}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\glsresetentrycounter
+ &#x00A0;<br />}
+</div>
+ <!--l. 3699--><p class="nopar" > or if you are using <span
+class="cmtt-10">\setglossarypreamble</span><a
+ id="dx1-25018"></a>, add it to each glossary preamble, as
+ required. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-95">
+ \setglossarypreamble[acronym]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\glsresetentrycounter
+ &#x00A0;<br />&#x00A0;&#x00A0;The&#x00A0;preamble&#x00A0;text&#x00A0;here&#x00A0;for&#x00A0;the&#x00A0;list&#x00A0;of&#x00A0;acronyms.
+ &#x00A0;<br />}
+ &#x00A0;<br />\setglossarypreamble{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\glsresetentrycounter
+ &#x00A0;<br />&#x00A0;&#x00A0;The&#x00A0;preamble&#x00A0;text&#x00A0;here&#x00A0;for&#x00A0;the&#x00A0;main&#x00A0;glossary.
+ &#x00A0;<br />}
+</div>
+ <!--l. 3711--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:subentrycounter"><span
+class="cmssbx-10">subentrycounter</span><a
+ id="dx1-25019"></a></a> </dt><dd
+class="description">This is a boolean option. (Default is <span
+class="cmss-10">subentrycounter=false</span><a
+ id="dx1-25020"></a>.) If set, each
+ level&#x00A0;1 glossary entry will be numbered when using the standard glossary
+ styles. This option creates the counter <span class="marginpar"><span
+class="cmtt-9">glossarysubentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25021"></a><a
+ id="dx1-25022"></a><span
+class="cmss-10">glossarysubentry</span>.
+ The counter is reset with each main (level&#x00A0;0) entry. Note that this package
+ option is independent of <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-25023"></a>. You can reference the number within the
+ document using <span
+class="cmtt-10">\glsrefentry</span><a
+ id="dx1-25024"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label associated with the
+ sub-entry.
+ </dd><dt class="description">
+<a
+ id="pkgopt:style"><span
+class="cmssbx-10">style</span><a
+ id="dx1-25025"></a></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. (Default is <span
+class="cmss-10">style=list</span><a
+ id="dx1-25026"></a>, unless <span
+class="cmss-10">classicthesis</span><a
+ id="dx1-25027"></a> has been loaded, in
+ which case the default is <span
+class="cmss-10">style=index</span><a
+ id="dx1-25028"></a>.) Its value should be the name of the
+ glossary style to use. This key may only be used for styles defined in <span
+class="cmss-10">glossary-list</span><a
+ id="dx1-25029"></a>,
+ <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-25030"></a>, <span
+class="cmss-10">glossary-super</span><a
+ id="dx1-25031"></a> or <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-25032"></a>. Alternatively, you can set the style
+ using
+ <!--l. 3732--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\setglossarystyle{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3733--><p class="noindent" >
+ (See <a
+href="#sec:styles"><span
+class="tcrm-1000">&sect;</span>15 </a><a
+href="#sec:styles">Glossary Styles<!--tex4ht:ref: sec:styles --></a> for further details.)
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:nolong"><span
+class="cmssbx-10">nolong</span><a
+ id="dx1-25033"></a></a> </dt><dd
+class="description">This prevents the <span
+class="cmss-10">glossaries </span>package from automatically loading <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-25034"></a> (which
+ means that the <span
+class="cmss-10">longtable</span><a
+ id="dx1-25035"></a> package also won&#8217;t be loaded). This reduces overhead by not
+ defining unwanted styles and commands. Note that if you use this option, you won&#8217;t be
+ able to use any of the glossary styles defined in the <span
+class="cmss-10">glossary-long </span>package (unless you
+ explicitly load <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-25036"></a>).
+ </dd><dt class="description">
+<a
+ id="pkgopt:nosuper"><span
+class="cmssbx-10">nosuper</span><a
+ id="dx1-25037"></a></a> </dt><dd
+class="description">This prevents the <span
+class="cmss-10">glossaries </span>package from automatically loading <span
+class="cmss-10">glossary-super</span><a
+ id="dx1-25038"></a> (which
+ means that the <span
+class="cmss-10">supertabular</span><a
+ id="dx1-25039"></a> package also won&#8217;t be loaded). This reduces overhead by
+ not defining unwanted styles and commands. Note that if you use this option, you won&#8217;t
+ be able to use any of the glossary styles defined in the <span
+class="cmss-10">glossary-super </span>package (unless you
+ explicitly load <span
+class="cmss-10">glossary-super</span><a
+ id="dx1-25040"></a>).
+
+
+ </dd><dt class="description">
+<a
+ id="pkgopt:nolist"><span
+class="cmssbx-10">nolist</span><a
+ id="dx1-25041"></a></a> </dt><dd
+class="description">This prevents the <span
+class="cmss-10">glossaries </span>package from automatically loading <span
+class="cmss-10">glossary-list</span><a
+ id="dx1-25042"></a>. This
+ reduces overhead by not defining unwanted styles. Note that if you use this option, you
+ won&#8217;t be able to use any of the glossary styles defined in the <span
+class="cmss-10">glossary-list </span>package (unless
+ you explicitly load <span
+class="cmss-10">glossary-list</span><a
+ id="dx1-25043"></a>). Note that since the default style is <span
+class="cmss-10">list</span><a
+ id="dx1-25044"></a> (unless
+ <span
+class="cmss-10">classicthesis</span><a
+ id="dx1-25045"></a> has been loaded), you will also need to use the <span
+class="cmss-10">style</span><a
+ id="dx1-25046"></a> option to set the style
+ to something else.
+ </dd><dt class="description">
+<a
+ id="pkgopt:notree"><span
+class="cmssbx-10">notree</span><a
+ id="dx1-25047"></a></a> </dt><dd
+class="description">This prevents the <span
+class="cmss-10">glossaries </span>package from automatically loading <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-25048"></a>. This
+ reduces overhead by not defining unwanted styles. Note that if you use this
+ option, you won&#8217;t be able to use any of the glossary styles defined in the
+ <span
+class="cmss-10">glossary-tree </span>package (unless you explicitly load <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-25049"></a>). Note that if
+ <span
+class="cmss-10">classicthesis</span><a
+ id="dx1-25050"></a> has been loaded, the default style is <span
+class="cmss-10">index</span><a
+ id="dx1-25051"></a>, which is provided by
+ <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-25052"></a>.
+ </dd><dt class="description">
+<a
+ id="pkgopt:nostyles"><span
+class="cmssbx-10">nostyles</span><a
+ id="dx1-25053"></a></a> </dt><dd
+class="description">This prevents all the predefined styles from being loaded. If you use this option, you
+ need to load a glossary style package (such as <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-25054"></a>). Also if you use
+ this option, you can&#8217;t use the <span
+class="cmss-10">style</span><a
+ id="dx1-25055"></a> package option. Instead you must either
+ use <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-25056"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">style</span>&#x27E9;<span
+class="cmtt-10">} </span>or the <span
+class="cmss-10">style</span><a
+ id="dx1-25057"></a> key in the optional argument to
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-25058"></a>. Example:
+
+
+ <div class="verbatim" id="verbatim-96">
+ \usepackage[nostyles]{glossaries}
+ &#x00A0;<br />\usepackage{glossary-mcols}
+ &#x00A0;<br />\setglossarystyle{mcoltree}
+</div>
+ <!--l. 3783--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:esclocations"><span
+class="cmssbx-10">esclocations</span><a
+ id="dx1-25059"></a></a> </dt><dd
+class="description">This is a boolean option. (The default is <span
+class="cmss-10">esclocations=true</span><a
+ id="dx1-25060"></a>, but
+ <span
+class="cmtt-10">\makenoidxglossaries</span><a
+ id="dx1-25061"></a> changes it to <span
+class="cmss-10">esclocations=false</span><a
+ id="dx1-25062"></a>.) Both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-25063"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-25064"></a></a>
+ are fussy about the location formats (<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-25065"></a></a> more so than <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-25066"></a></a>) so the <span
+class="cmss-10">glossaries</span>
+ package tries to ensure that special characters are escaped and allows for the location to
+ be substituted for a format that&#8217;s more acceptable to the indexing application. This
+ requires a bit of trickery to circumvent the problem posed by <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s asynchronous
+ output routine, which can go wrong and also adds to the complexity of the document
+ build.
+ <!--l. 3796--><p class="noindent" >If you&#8217;re sure that your locations will always expand to an acceptable format (or you&#8217;re
+ prepared to post-process the glossary file before passing it to the relevant indexing
+ application) then use <span
+class="cmss-10">esclocations=false</span><a
+ id="dx1-25067"></a> to avoid the complex escaping of location values.
+ (See &#8220;Writing information to associated files&#8221; in the documented code for further
+ details.)
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:nonumberlist"><span
+class="cmssbx-10">nonumberlist</span><a
+ id="dx1-25068"></a></a> </dt><dd
+class="description">This option will suppress the associated <a
+href="#glo:numberlist">number list<a
+ id="dx1-25069"></a>s</a> in the glossaries (see also
+ <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5 </a><a
+href="#sec:numberlists">Number lists<!--tex4ht:ref: sec:numberlists --></a>). Note that if you use Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> (<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-25070"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-25071"></a></a>) then the
+ locations must still be valid. This package option merely prevents the <a
+href="#glo:numberlist">number list<a
+ id="dx1-25072"></a></a> from
+ being displayed, but both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-25073"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-25074"></a></a> still require a location or
+ cross-reference for each term that&#8217;s indexed. Remember that <a
+href="#glo:numberlist">number list<a
+ id="dx1-25075"></a></a> includes any
+ cross-references, so suppressing the <a
+href="#glo:numberlist">number list<a
+ id="dx1-25076"></a></a> will also hide the cross-references (see
+ below).
+ </dd><dt class="description">
+<a
+ id="pkgopt:seeautonumberlist"><span
+class="cmssbx-10">seeautonumberlist</span><a
+ id="dx1-25077"></a></a> </dt><dd
+class="description">If you suppress the <a
+href="#glo:numberlist">number list<a
+ id="dx1-25078"></a>s</a> with <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-25079"></a>, described
+ above, this will also suppress any cross-referencing information supplied by
+ the <span
+class="cmss-10">see</span><a
+ id="dx1-25080"></a> key in <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-25081"></a> or <span
+class="cmtt-10">\glssee</span><a
+ id="dx1-25082"></a>. If you use <span
+class="cmss-10">seeautonumberlist</span><a
+ id="dx1-25083"></a>,
+ the <span
+class="cmss-10">see</span><a
+ id="dx1-25084"></a> key will automatically implement <span
+class="cmss-10">nonumberlist=false</span><a
+ id="dx1-25085"></a> for that entry.
+ (Note this doesn&#8217;t affect <span
+class="cmtt-10">\glssee</span>.) For further details see <a
+href="#sec:crossref"><span
+class="tcrm-1000">&sect;</span>8 </a><a
+href="#sec:crossref">Cross-Referencing
+ Entries<!--tex4ht:ref: sec:crossref --></a>.
+ </dd><dt class="description">
+<a
+ id="pkgopt:counter"><span
+class="cmssbx-10">counter</span><a
+ id="dx1-25086"></a></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. (Default is <span
+class="cmss-10">counter=page</span><a
+ id="dx1-25087"></a>.) The value should be
+ the name of the default counter to use in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-25088"></a>s</a> (see <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5 </a><a
+href="#sec:numberlists">Number
+ lists<!--tex4ht:ref: sec:numberlists --></a>).
+
+
+ </dd><dt class="description">
+<a
+ id="pkgopt:nopostdot"><span
+class="cmssbx-10">nopostdot</span><a
+ id="dx1-25089"></a></a> </dt><dd
+class="description">This is a boolean option. If no value is specified, <span
+class="cmtt-10">true </span>is assumed. When set to
+ <span
+class="cmtt-10">true</span>, this option suppresses the default post description dot used by some of the
+ predefined styles. The default setting is <span
+class="cmss-10">nopostdot=false</span><a
+ id="dx1-25090"></a>.
+ </dd><dt class="description">
+<a
+ id="pkgopt:nogroupskip"><span
+class="cmssbx-10">nogroupskip</span><a
+ id="dx1-25091"></a></a> </dt><dd
+class="description">This is a boolean option. If no value is specified, <span
+class="cmtt-10">true </span>is assumed. When set to
+ <span
+class="cmtt-10">true</span>, this option suppresses the default vertical gap between groups used by some of
+ the predefined styles. The default setting is <span
+class="cmss-10">nogroupskip=false</span><a
+ id="dx1-25092"></a>.
+ </dd></dl>
+<!--l. 3842--><p class="noindent" >
+</p>
+<!--l. 3842--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.4 </span> <a
+ id="sec:pkgopts-sort"></a>Sorting Options</h3>
+ <dl class="description"><dt class="description">
+<a
+ id="pkgopt:sort"><span
+class="cmssbx-10">sort</span><a
+ id="dx1-26001"></a></a> </dt><dd
+class="description">If you use Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>, this package option is the only way of specifying how to
+ sort the glossaries. Only <a
+href="#option1">Option&#x00A0;1</a> allows you to specify sort methods for individual
+ glossaries via the <span
+class="cmss-10">sort</span><a
+ id="dx1-26002"></a> key in the optional argument of <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-26003"></a>. If
+ you have multiple glossaries in your document and you are using <a
+href="#option1">Option&#x00A0;1</a>, only
+ use the package options <span
+class="cmss-10">sort=def</span><a
+ id="dx1-26004"></a> or <span
+class="cmss-10">sort=use</span><a
+ id="dx1-26005"></a> if you want to set this sort method
+ for <span
+class="cmti-10">all </span>your glossaries.
+ <!--l. 3856--><p class="noindent" >This is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; option where &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; may be one of the following: </p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmss-10">standard</span><a
+ id="dx1-26006"></a> : entries are sorted according to the value of the <span
+class="cmss-10">sort</span><a
+ id="dx1-26007"></a> key used in
+ <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-26008"></a> (if present) or the <span
+class="cmss-10">name</span><a
+ id="dx1-26009"></a> key (if <span
+class="cmss-10">sort</span><a
+ id="dx1-26010"></a> key is missing);
+ </li>
+ <li class="itemize"><span
+class="cmss-10">def</span><a
+ id="dx1-26011"></a> : entries are sorted in the order in which they were defined (the <span
+class="cmss-10">sort</span><a
+ id="dx1-26012"></a> key
+ in <span
+class="cmtt-10">\newglossaryentry </span>is ignored);
+ </li>
+ <li class="itemize"><span
+class="cmss-10">use</span><a
+ id="dx1-26013"></a> : entries are sorted according to the order in which they are used in the
+ document (the <span
+class="cmss-10">sort</span><a
+ id="dx1-26014"></a> key in <span
+class="cmtt-10">\newglossaryentry </span>is ignored).
+ <!--l. 3872--><p class="noindent" >Both <span
+class="cmss-10">sort=def</span><a
+ id="dx1-26015"></a> and <span
+class="cmss-10">sort=use</span><a
+ id="dx1-26016"></a> set the sort key to a six digit number via
+ </p><!--l. 3874--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssortnumberfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26017"></a> <span
+class="cmtt-10">\glssortnumberfmt{</span>&#x27E8;<span
+class="cmitt-10">number</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3876--><p class="noindent" >
+ (padded with leading zeros, where necessary). This can be redefined, if required,
+ before the entries are defined (in the case of <span
+class="cmss-10">sort=def</span><a
+ id="dx1-26018"></a>) or before the entries are
+ used (in the case of <span
+class="cmss-10">sort=use</span><a
+ id="dx1-26019"></a>).
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">none</span><a
+ id="dx1-26020"></a> : this setting is new to version 4.30 and is only for documents that don&#8217;t use
+ <span
+class="cmtt-10">\makeglossaries </span>(Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>) or <span
+class="cmtt-10">\makenoidxglossaries </span>(<a
+href="#option1">Option&#x00A0;1</a>). It
+
+
+ omits the code used to sanitize or escape the sort value, since it&#8217;s not
+ required. This can help to improve the document build speed, especially
+ if there are a large number of entries. This option can&#8217;t be used with
+ <span
+class="cmtt-10">\printglossary </span>or <span
+class="cmtt-10">\printnoidxglossary </span>(or the iterative versions
+ <span
+class="cmtt-10">\printglossaries </span>or <span
+class="cmtt-10">\printnoidxglossaries</span>). It may be used with
+ <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-26021"></a>&#8217;s <span
+class="cmtt-10">\printunsrtglossary </span>(<a
+href="#option5">Option&#x00A0;5</a>).</li></ul>
+ <!--l. 3893--><p class="noindent" >Note that the group styles (such as <span
+class="cmss-10">listgroup</span><a
+ id="dx1-26022"></a>) are incompatible with the <span
+class="cmss-10">sort=use</span><a
+ id="dx1-26023"></a> and
+ <span
+class="cmss-10">sort=def</span><a
+ id="dx1-26024"></a> options.
+ </p><!--l. 3897--><p class="noindent" >The default is <span
+class="cmss-10">sort=standard</span><a
+ id="dx1-26025"></a>. When the standard sort option is in use, you can hook into
+ the sort mechanism by redefining:
+ </p><!--l. 3900--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsprestandardsort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26026"></a> <span
+class="cmtt-10">\glsprestandardsort{</span>&#x27E8;<span
+class="cmitt-10">sort cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 3902--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">sort cs</span>&#x27E9; is a temporary control sequence that stores the sort value (which was
+ either explicitly set via the <span
+class="cmss-10">sort</span><a
+ id="dx1-26027"></a> key or implicitly set via the <span
+class="cmss-10">name</span><a
+ id="dx1-26028"></a> key) before any
+ escaping of the <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26029"></a></a>/<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26030"></a></a> special characters is performed. By default
+ <span
+class="cmtt-10">\glsprestandardsort </span>just does:
+ </p><!--l. 3908--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdosanitizesort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26031"></a> <span
+class="cmtt-10">\glsdosanitizesort </span></div><hr>
+ </p><!--l. 3910--><p class="noindent" >
+ which <a
+href="#glo:sanitize">sanitize<a
+ id="dx1-26032"></a>s</a> &#x27E8;<span
+class="cmti-10">sort cs</span>&#x27E9; if the <span
+class="cmss-10">sanitizesort</span><a
+ id="dx1-26033"></a> package option is set (or does nothing if the
+ package option <span
+class="cmss-10">sanitizesort=false</span><a
+ id="dx1-26034"></a> is used).
+ </p><!--l. 3915--><p class="noindent" >The other arguments, &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, are the glossary type and the entry label for the
+ current entry. Note that &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; will always be a control sequence, but &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; will be in the
+ form used in the first argument of <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-26035"></a>.
+ </p><!--l. 3920--><p class="noindent" ><div class="important" title="Important Note"> Redefining <span
+class="cmtt-10">\glsprestandardsort </span>won&#8217;t affect any entries that have already been
+ defined and will have no effect at all if you are using <span
+class="cmss-10">sort=def</span><a
+ id="dx1-26036"></a> or <span
+class="cmss-10">sort=use</span><a
+ id="dx1-26037"></a>.
+ </div>
+ </p><!--l. 3924--><p class="noindent" >
+<a
+ id="x1-26038r1"></a>
+ </p><!--l. 3926--><p class="noindent" ><span
+class="cmbx-12">Example 1</span><span
+class="cmbx-12">&#x00A0;(Mixing Alphabetical and Order of Definition</span>
+ <span
+class="cmbx-12">Sorting)</span><a
+ id="x1-26039"></a>
+ </p><!--l. 3927--><p class="noindent" >Suppose I have three glossaries: <span
+class="cmtt-10">main</span>, <span
+class="cmtt-10">acronym </span>and <span
+class="cmtt-10">notation</span>, and let&#8217;s suppose I want
+ the <span
+class="cmtt-10">main </span>and <span
+class="cmtt-10">acronym </span>glossaries to be sorted alphabetically, but the <span
+class="cmtt-10">notation </span>type
+ should be sorted in order of definition.
+ </p><!--l. 3933--><p class="noindent" >For <a
+href="#option1">Option&#x00A0;1</a>, I&#x00A0;just need to set the <span
+class="cmss-10">sort</span><a
+ id="dx1-26040"></a> key in the optional argument of
+ <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-26041"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-97">
+ \printnoidxglossary[sort=word]
+ &#x00A0;<br />\printnoidxglossary[type=acronym,sort=word]
+ &#x00A0;<br />\printnoidxglossary[type=notation,sort=def]
+</div>
+ <!--l. 3939--><p class="nopar" >
+ </p><!--l. 3941--><p class="noindent" >For Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>, I can set the sort to <span
+class="cmtt-10">standard </span>(which is the default, but can be
+ explicitly set via the package option <span
+class="cmss-10">sort=standard</span><a
+ id="dx1-26042"></a>), and I can either define all my <span
+class="cmtt-10">main</span>
+ and <span
+class="cmtt-10">acronym </span>entries, then redefine <span
+class="cmtt-10">\glsprestandardsort </span>to set &#x27E8;<span
+class="cmti-10">sort cs</span>&#x27E9; to an
+ incremented integer, and then define all my <span
+class="cmtt-10">notation </span>entries. Alternatively, I can
+ redefine <span
+class="cmtt-10">\glsprestandardsort </span>to check for the glossary type and only modify &#x27E8;<span
+class="cmti-10">sort cs</span>&#x27E9; if
+ &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is <span
+class="cmtt-10">notation</span>.
+ </p><!--l. 3951--><p class="noindent" >The first option can be achieved as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-98">
+ \newcounter{sortcount}
+ &#x00A0;<br />\renewcommand{\glsprestandardsort}[3]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\stepcounter{sortcount}%
+ &#x00A0;<br />&#x00A0;&#x00A0;\edef#1{\glssortnumberfmt{\arabic{sortcount}}}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 3959--><p class="nopar" > The second option can be achieved as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-99">
+ \newcounter{sortcount}
+ &#x00A0;<br />\renewcommand{\glsprestandardsort}[3]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\ifdefstring{#2}{notation}%
+ &#x00A0;<br />&#x00A0;&#x00A0;{%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\stepcounter{sortcount}%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\edef#1{\glssortnumberfmt{\arabic{sortcount}}}%
+ &#x00A0;<br />&#x00A0;&#x00A0;}%
+ &#x00A0;<br />&#x00A0;&#x00A0;{%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsdosanitizesort
+ &#x00A0;<br />&#x00A0;&#x00A0;}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 3974--><p class="nopar" > (<span
+class="cmtt-10">\ifdefstring </span>is defined by the <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-26043"></a> package.) For a complete document, see the
+ sample file <a
+href="#x1-11111r36"><span
+class="cmtt-10">sampleSort.tex</span></a>. </p>
+ <div class="center"
+>
+<!--l. 3977--><p class="noindent" >
+</p><!--l. 3977--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-26044r2"></a>
+ <!--l. 3979--><p class="noindent" ><span
+class="cmbx-12">Example 2</span><span
+class="cmbx-12">&#x00A0;(Customizing Standard Sort (Options 2 or</span>
+ <span
+class="cmbx-12">3))</span><a
+ id="x1-26045"></a>
+ </p><!--l. 3980--><p class="noindent" >Suppose you want a glossary of people and you want the names listed as &#x27E8;<span
+class="cmti-10">first-name</span>&#x27E9;
+ &#x27E8;<span
+class="cmti-10">surname</span>&#x27E9; in the glossary, but you want the names sorted by &#x27E8;<span
+class="cmti-10">surname</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">first-name</span>&#x27E9;. You
+ can do this by defining a command called, say, <span
+class="cmtt-10">\name{</span>&#x27E8;<span
+class="cmti-10">first-name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">surname</span>&#x27E9;<span
+class="cmtt-10">} </span>that you
+ can use in the <span
+class="cmss-10">name</span><a
+ id="dx1-26046"></a> key when you define the entry, but hook into the standard
+ sort mechanism to temporarily redefine <span
+class="cmtt-10">\name </span>while the sort value is being
+ set.
+ </p><!--l. 3989--><p class="noindent" >First, define two commands to set the person&#8217;s name:
+
+
+</p>
+ <div class="verbatim" id="verbatim-100">
+ \newcommand{\sortname}[2]{#2,&#x00A0;#1}
+ &#x00A0;<br />\newcommand{\textname}[2]{#1&#x00A0;#2}
+</div>
+ <!--l. 3993--><p class="nopar" > and <span
+class="cmtt-10">\name </span>needs to be initialised to <span
+class="cmtt-10">\textname</span>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-101">
+ \let\name\textname
+</div>
+ <!--l. 3997--><p class="nopar" > Now redefine <span
+class="cmtt-10">\glsprestandardsort </span>so that it temporarily sets <span
+class="cmtt-10">\name </span>to <span
+class="cmtt-10">\sortname</span>
+ and expands the sort value, then sets <span
+class="cmtt-10">\name </span>to <span
+class="cmtt-10">\textname </span>so that the person&#8217;s name
+ appears as &#x27E8;<span
+class="cmti-10">first-name</span>&#x27E9; &#x27E8;<span
+class="cmti-10">surname</span>&#x27E9; in the text:
+
+
+</p>
+ <div class="verbatim" id="verbatim-102">
+ \renewcommand{\glsprestandardsort}[3]{%
+ &#x00A0;<br />&#x00A0;\let\name\sortname
+ &#x00A0;<br />&#x00A0;\edef#1{\expandafter\expandonce\expandafter{#1}}%
+ &#x00A0;<br />&#x00A0;\let\name\textname
+ &#x00A0;<br />&#x00A0;\glsdosanitizesort
+ &#x00A0;<br />}
+</div>
+ <!--l. 4009--><p class="nopar" > (The somewhat complicate use of <span
+class="cmtt-10">\expandafter </span>etc helps to protect fragile commands,
+ but care is still needed.)
+ </p><!--l. 4013--><p class="noindent" >Now the entries can be defined:
+
+
+</p>
+ <div class="verbatim" id="verbatim-103">
+ \newglossaryentry{joebloggs}{name={\name{Joe}{Bloggs}},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={some&#x00A0;information&#x00A0;about&#x00A0;Joe&#x00A0;Bloggs}}
+ &#x00A0;<br />\newglossaryentry{johnsmith}{name={\name{John}{Smith}},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={some&#x00A0;information&#x00A0;about&#x00A0;John&#x00A0;Smith}}
+</div>
+ <!--l. 4020--><p class="nopar" > For a complete document, see the sample file <a
+href="#x1-11110r35"><span
+class="cmtt-10">samplePeople.tex</span></a>. </p>
+ <div class="center"
+>
+<!--l. 4022--><p class="noindent" >
+</p><!--l. 4022--><p class="noindent" >____________________________</p></div>
+ </dd><dt class="description">
+<a
+ id="pkgopt:order"><span
+class="cmssbx-10">order</span><a
+ id="dx1-26047"></a></a> </dt><dd
+class="description">This may take two values: <span
+class="cmss-10">word</span><a
+ id="dx1-26048"></a> or <span
+class="cmss-10">letter</span><a
+ id="dx1-26049"></a>. The default is word ordering.
+ <!--l. 4028--><p class="noindent" ><div class="important" title="Important Note"> Note that the <span
+class="cmss-10">order</span><a
+ id="dx1-26050"></a> option has no effect if you don&#8217;t use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-26051"></a></a>.
+ </div>
+ </p><!--l. 4031--><p class="noindent" >
+ </p><!--l. 4033--><p class="noindent" >If you use <a
+href="#option1">Option&#x00A0;1</a>, this setting will be used if you use <span
+class="cmss-10">sort</span><a
+ id="dx1-26052"></a><span
+class="cmtt-10">=standard </span>in the optional
+ argument of <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-26053"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-104">
+ \printnoidxglossary[sort=standard]
+</div>
+ <!--l. 4038--><p class="nopar" > Alternatively, you can specify the order for individual glossaries:
+
+
+</p>
+ <div class="verbatim" id="verbatim-105">
+ \printnoidxglossary[sort=word]
+ &#x00A0;<br />\printnoidxglossary[type=acronym,sort=letter]
+</div>
+ <!--l. 4043--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:makeindex"><span
+class="cmssbx-10">makeindex</span><a
+ id="dx1-26054"></a></a> </dt><dd
+class="description">(<a
+href="#option2">Option&#x00A0;2</a>) The glossary information and indexing style file will be written in
+ <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26055"></a></a> format. If you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-26056"></a></a>, it will automatically detect that it
+ needs to call <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26057"></a>. If you don&#8217;t use <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-26058"></a>, you need to remember
+ to use <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26059"></a> not <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26060"></a></a>. The indexing style file will been given a&#x00A0;<span
+class="cmtt-10">.ist</span><a
+ id="dx1-26061"></a>
+ extension.
+ <!--l. 4053--><p class="noindent" >You may omit this package option if you are using <a
+href="#option2">Option&#x00A0;2</a> as this is the default. It&#8217;s
+ available in case you need to override the effect of an earlier occurrence of <span
+class="cmss-10">xindy</span><a
+ id="dx1-26062"></a> in the
+ package option list.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:xindy"><span
+class="cmssbx-10">xindy</span><a
+ id="dx1-26063"></a></a> </dt><dd
+class="description">(<a
+href="#option3">Option&#x00A0;3</a>) The glossary information and indexing style file will be written in
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26064"></a></a> format. If you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-26065"></a></a>, it will automatically detect that it
+ needs to call <span
+class="cmtt-10">xindy</span><a
+ id="dx1-26066"></a>. If you don&#8217;t use <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-26067"></a>, you need to remember
+ to use <span
+class="cmtt-10">xindy</span><a
+ id="dx1-26068"></a> not <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26069"></a></a>. The indexing style file will been given a <span
+class="cmtt-10">.xdy</span><a
+ id="dx1-26070"></a>
+ extension.
+ <!--l. 4064--><p class="noindent" >This package option may additionally have a value that is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; comma-separated
+ list to override the language and codepage. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-106">
+ \usepackage[xindy={language=english,codepage=utf8}]
+ &#x00A0;<br />&#x00A0;&#x00A0;{glossaries}
+</div>
+ <!--l. 4070--><p class="nopar" > You can also specify whether you want a number group in the glossary. This defaults to
+ true, but can be suppressed. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-107">
+ \usepackage[xindy={glsnumbers=false}]{glossaries}
+</div>
+ <!--l. 4075--><p class="nopar" > If no value is supplied to this package option (either simply writing <span
+class="cmtt-10">xindy </span>or writing
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">xindy={}</span></span></span>) then the language, codepage and number group settings are unchanged. See
+ <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option 3)<!--tex4ht:ref: sec:xindy --></a> for further details on using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26071"></a></a> with the <span
+class="cmss-10">glossaries</span>
+ package.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:xindygloss"><span
+class="cmssbx-10">xindygloss</span><a
+ id="dx1-26072"></a></a> </dt><dd
+class="description">(<a
+href="#option3">Option&#x00A0;3</a>) This is equivalent to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">xindy={}</span></span></span> (that is, the <span
+class="cmss-10">xindy</span><a
+ id="dx1-26073"></a> option without any
+ value supplied) and may be used as a document class option. The language and code
+ page can be set via <span
+class="cmtt-10">\GlsSetXdyLanguage</span><a
+ id="dx1-26074"></a> and <span
+class="cmtt-10">\GlsSetXdyCodePage</span><a
+ id="dx1-26075"></a> (see <a
+href="#sec:langenc"><span
+class="tcrm-1000">&sect;</span>11.1
+ </a><a
+href="#sec:langenc">Language and Encodings<!--tex4ht:ref: sec:langenc --></a>.)
+ </dd><dt class="description">
+<a
+ id="pkgopt:xindynoglsnumbers"><span
+class="cmssbx-10">xindynoglsnumbers</span><a
+ id="dx1-26076"></a></a> </dt><dd
+class="description">(<a
+href="#option3">Option&#x00A0;3</a>) This is equivalent to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">xindy={glsnumbers=false}</span></span></span> and may
+ be used as a document class option.
+ </dd><dt class="description">
+<a
+ id="pkgopt:automake"><span
+class="cmssbx-10">automake</span><a
+ id="dx1-26077"></a></a> </dt><dd
+class="description">This is option was introduced to version 4.08 as a boolean option. As from version
+ 4.42 it may now take three values: <span
+class="cmtt-10">false </span>(default), <span
+class="cmtt-10">true </span>or <span
+class="cmtt-10">immediate</span>. If no option is
+ supplied, <span
+class="cmtt-10">immediate </span>is assumed. The option <span
+class="cmss-10">automake=true</span><a
+ id="dx1-26078"></a> will attempt to run
+ <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26079"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26080"></a></a> using <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s <span
+class="cmtt-10">\write18</span><a
+ id="dx1-26081"></a> mechanism at the end of the document.
+ The option <span
+class="cmss-10">automake=immediate</span><a
+ id="dx1-26082"></a> will attempt to run <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26083"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26084"></a></a> at the start
+ of <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-26085"></a> using <span
+class="cmtt-10">\immediate </span>(before the glossary files have been
+ opened).
+ <!--l. 4103--><p class="noindent" >In the case of <span
+class="cmss-10">automake=true</span><a
+ id="dx1-26086"></a>, the associated files are created at the end of the
+ document ready 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. Since there is a possibility of commands such
+ as <span
+class="cmtt-10">\gls </span>occurring on the last page of the document, it&#8217;s not possible to use <span
+class="cmtt-10">\immediate</span>
+ to close the associated file or with <span
+class="cmtt-10">\write18 </span>since the writing of the final
+ indexing lines may have been delayed. In certain situations this can mean that
+ the <span
+class="cmtt-10">\write18 </span>fails. In such cases, you will need to use <span
+class="cmss-10">automake=immediate</span><a
+ id="dx1-26087"></a>
+ instead.
+ </p><!--l. 4113--><p class="noindent" >With <span
+class="cmss-10">automake=immediate</span><a
+ id="dx1-26088"></a>, you will get a warning 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 as the
+ associated glossary files don&#8217;t exist yet.
+ </p><!--l. 4117--><p class="noindent" >Since this mechanism can be a security risk, some <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions disable it
+ completely, in which case this option won&#8217;t have an effect. (If this option doesn&#8217;t appear
+ to work, search the log file for &#8220;runsystem&#8221; and see if it is followed by &#8220;enabled&#8221; or
+ &#8220;disabled&#8221;.)
+ </p><!--l. 4123--><p class="noindent" >Some distributions allow <span
+class="cmtt-10">\write18 </span>in a restricted mode. This mode has a&#x00A0;limited
+ number of trusted applications, which usually includes <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26089"></a></a> but may not include
+ <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26090"></a></a>. So if you have the restricted mode on, <span
+class="cmss-10">automake</span><a
+ id="dx1-26091"></a> should work with <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-26092"></a>
+ but may not work with <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-26093"></a></a>.
+
+
+ </p><!--l. 4129--><p class="noindent" >However even in unrestricted mode this option may not work with <span
+class="cmtt-10">xindy</span><a
+ id="dx1-26094"></a> as <span
+class="cmtt-10">xindy</span><a
+ id="dx1-26095"></a> uses
+ language names that don&#8217;t always correspond with <span
+class="cmtt-10">\babel</span><a
+ id="dx1-26096"></a>&#8217;s language names. (The
+ <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-26097"></a></a> script applies mappings to assist you.) Note that you still need
+ at least two <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;runs to ensure the document is up-to-date with this
+ setting.
+ </p><!--l. 4136--><p class="noindent" >Since this package option attempts to run the <a
+href="#glo:indexingapp">indexing application</a> on every
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run, its use should be considered a last resort for those who can&#8217;t work out
+ how to incorporate the indexing application into their document build. The default
+ value for this option is <span
+class="cmss-10">automake=false</span><a
+ id="dx1-26098"></a>.
+</p>
+ </dd></dl>
+<!--l. 4144--><p class="noindent" >
+</p>
+<!--l. 4144--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.5 </span> <a
+ id="sec:pkgopts-acronym"></a>Acronym Options</h3>
+ <dl class="description"><dt class="description">
+<a
+ id="pkgopt:acronym"><span
+class="cmssbx-10">acronym</span><a
+ id="dx1-27001"></a></a> </dt><dd
+class="description">This creates a new glossary with the label <span
+class="cmtt-10">acronym</span>. This is equivalent
+ to:
+
+
+ <div class="verbatim" id="verbatim-108">
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+</div>
+ <!--l. 4152--><p class="nopar" > It will also define
+ </p><!--l. 4154--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printacronyms</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27002"></a> <span
+class="cmtt-10">\printacronyms[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 4156--><p class="noindent" >
+ that&#8217;s equivalent to </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-27003"></a><span
+class="cmtt-10">[type=acronym,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> (unless that command is already defined before the beginning of the document or the
+ package option <span
+class="cmss-10">compatible-3.07</span><a
+ id="dx1-27004"></a> is used).
+ <!--l. 4164--><p class="noindent" >If you are using <a
+href="#option1">Option&#x00A0;1</a>, you need to use </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-27005"></a><span
+class="cmtt-10">[type=acronym,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> to display the list of acronyms.
+ <!--l. 4170--><p class="noindent" >If the <span
+class="cmss-10">acronym</span><a
+ id="dx1-27006"></a> package option is used, <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-27007"></a> is set to <span
+class="cmtt-10">acronym </span>otherwise it is set to
+ <span
+class="cmtt-10">main</span>.<span class="footnote-mark"><a
+href="#fn4x2" id="fn4x2-bk"><sup class="textsuperscript">2.4</sup></a></span><a
+ id="x1-27008f4"></a>
+ Entries that are defined using <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-27014"></a> are placed in the glossary whose label is
+ given by <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-27015"></a>, unless another glossary is explicitly specified.
+ </p><!--l. 4180--><p class="noindent" ><div class="important" title="Important Note"> Remember to use the <span
+class="cmss-10">nomain</span><a
+ id="dx1-27016"></a> package option if you&#8217;re only interested in using
+ this <span
+class="cmtt-10">acronym </span>glossary. (That is, you don&#8217;t intend to use the <span
+class="cmtt-10">main </span>glossary.)
+ </div>
+ </p><!--l. 4184--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:acronyms"><span
+class="cmssbx-10">acronyms</span><a
+ id="dx1-27017"></a></a> </dt><dd
+class="description">This is equivalent to <span
+class="cmss-10">acronym=true</span><a
+ id="dx1-27018"></a> and may be used in the document class option
+ list.
+ </dd><dt class="description">
+<a
+ id="pkgopt:acronymlists"><span
+class="cmssbx-10">acronymlists</span><a
+ id="dx1-27019"></a></a> </dt><dd
+class="description">By default, only the <span
+class="cmtt-10">\acronymtype </span>glossary is considered to be a list of
+ acronyms. If you have other lists of acronyms, you can specify them as a
+ comma-separated list in the value of <span
+class="cmss-10">acronymlists</span><a
+ id="dx1-27020"></a>. For example, if you use the <span
+class="cmss-10">acronym</span><a
+ id="dx1-27021"></a>
+ package option but you also want the <span
+class="cmtt-10">main </span>glossary to also contain a list of acronyms,
+ you can do:
+
+
+ <div class="verbatim" id="verbatim-109">
+ \usepackage[acronym,acronymlists={main}]{glossaries}
+</div>
+ <!--l. 4198--><p class="nopar" > No check is performed to determine if the listed glossaries exist, so you can add
+ glossaries you haven&#8217;t defined yet. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-110">
+ \usepackage[acronym,acronymlists={main,acronym2}]
+ &#x00A0;<br />&#x00A0;&#x00A0;{glossaries}
+ &#x00A0;<br />\newglossary[alg2]{acronym2}{acr2}{acn2}%
+ &#x00A0;<br />&#x00A0;&#x00A0;{Statistical&#x00A0;Acronyms}
+</div>
+ <!--l. 4206--><p class="nopar" > You can use
+ </p><!--l. 4208--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\DeclareAcronymList</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27022"></a> <span
+class="cmtt-10">\DeclareAcronymList{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 4210--><p class="noindent" >
+ instead of or in addition to the <span
+class="cmss-10">acronymlists</span><a
+ id="dx1-27023"></a> option. This will add the glossaries given in
+ &#x27E8;<span
+class="cmti-10">list</span>&#x27E9; to the list of glossaries that are identified as lists of acronyms. To replace the list of
+ acronym lists with a new list use:
+ </p><!--l. 4215--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\SetAcronymLists</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27024"></a> <span
+class="cmtt-10">\SetAcronymLists{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 4217--><p class="noindent" >
+ </p><!--l. 4219--><p class="noindent" >You can determine if a glossary has been identified as being a list of acronyms
+ using:
+ </p><!--l. 4221--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsIfListOfAcronyms</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27025"></a> <span
+class="cmtt-10">\glsIfListOfAcronyms{</span>&#x27E8;<span
+class="cmitt-10">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. 4223--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:shortcuts"><span
+class="cmssbx-10">shortcuts</span><a
+ id="dx1-27026"></a></a> </dt><dd
+class="description">This option provides shortcut commands for acronyms. See <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and
+ Other Abbreviations<!--tex4ht:ref: sec:acronyms --></a> for further details. Alternatively you can use:
+ <!--l. 4228--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\DefineAcronymSynonyms</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27027"></a> <span
+class="cmtt-10">\DefineAcronymSynonyms </span></div><hr>
+ </p><!--l. 4230--><p class="noindent" >
+ </p></dd></dl>
+<!--l. 4233--><p class="noindent" >
+</p>
+<!--l. 4233--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.5.1 </span> <a
+ id="sec:pkgopts-old-acronym"></a>Deprecated Acronym Style Options</h4>
+<!--l. 4236--><p class="noindent" >The package options listed in this section are now deprecated but are kept for
+backward-compatibility. Use <span
+class="cmtt-10">\setacronymstyle</span><a
+ id="dx1-28001"></a> instead. See <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and Other
+Abbreviations<!--tex4ht:ref: sec:acronyms --></a> for further details.
+ </p><dl class="description"><dt class="description">
+<a
+ id="pkgopt:description"><span
+class="cmssbx-10">description</span><a
+ id="dx1-28002"></a></a> </dt><dd
+class="description">This option changes the definition of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-28003"></a> to allow a description. This
+ option may be replaced by
+
+
+ <div class="verbatim" id="verbatim-111">
+ \setacronymstyle{long-short-desc}
+</div>
+ <!--l. 4246--><p class="nopar" > or (with <span
+class="cmss-10">smallcaps</span><a
+ id="dx1-28004"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-112">
+ \setacronymstyle{long-sc-short-desc}
+</div>
+ <!--l. 4250--><p class="nopar" > or (with <span
+class="cmss-10">smaller</span><a
+ id="dx1-28005"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-113">
+ \setacronymstyle{long-sm-short-desc}
+</div>
+ <!--l. 4254--><p class="nopar" > or (with <span
+class="cmss-10">footnote</span><a
+ id="dx1-28006"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-114">
+ \setacronymstyle{footnote-desc}
+</div>
+ <!--l. 4258--><p class="nopar" > or (with <span
+class="cmss-10">footnote</span><a
+ id="dx1-28007"></a> and <span
+class="cmss-10">smallcaps</span><a
+ id="dx1-28008"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-115">
+ \setacronymstyle{footnote-sc-desc}
+</div>
+ <!--l. 4262--><p class="nopar" > or (with <span
+class="cmss-10">footnote</span><a
+ id="dx1-28009"></a> and <span
+class="cmss-10">smaller</span><a
+ id="dx1-28010"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-116">
+ \setacronymstyle{footnote-sm-desc}
+</div>
+ <!--l. 4266--><p class="nopar" > or (with <span
+class="cmss-10">dua</span><a
+ id="dx1-28011"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-117">
+ \setacronymstyle{dua-desc}
+</div>
+ <!--l. 4270--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:smallcaps"><span
+class="cmssbx-10">smallcaps</span><a
+ id="dx1-28012"></a></a> </dt><dd
+class="description">This option changes the definition of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-28013"></a> and the way that acronyms are
+ displayed. This option may be replaced by:
+
+
+ <div class="verbatim" id="verbatim-118">
+ \setacronymstyle{long-sc-short}
+</div>
+ <!--l. 4277--><p class="nopar" > or (with <span
+class="cmss-10">description</span><a
+ id="dx1-28014"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-119">
+ \setacronymstyle{long-sc-short-desc}
+</div>
+ <!--l. 4281--><p class="nopar" > or (with <span
+class="cmss-10">description</span><a
+ id="dx1-28015"></a> and <span
+class="cmss-10">footnote</span><a
+ id="dx1-28016"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-120">
+ \setacronymstyle{footnote-sc-desc}
+</div>
+ <!--l. 4285--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:smaller"><span
+class="cmssbx-10">smaller</span><a
+ id="dx1-28017"></a></a> </dt><dd
+class="description">This option changes the definition of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-28018"></a> and the way that acronyms are
+ displayed.
+ <!--l. 4289--><p class="noindent" ><div class="important" title="Important Note"> If you use this option, you will need to include the <span
+class="cmss-10">relsize</span><a
+ id="dx1-28019"></a> package or otherwise define
+ <span
+class="cmtt-10">\textsmaller</span><a
+ id="dx1-28020"></a> or redefine <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-28021"></a>. </div>
+ </p><!--l. 4293--><p class="noindent" >
+ This option may be replaced by:
+
+
+</p>
+ <div class="verbatim" id="verbatim-121">
+ \setacronymstyle{long-sm-short}
+</div>
+ <!--l. 4297--><p class="nopar" > or (with <span
+class="cmss-10">description</span><a
+ id="dx1-28022"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-122">
+ \setacronymstyle{long-sm-short-desc}
+</div>
+ <!--l. 4301--><p class="nopar" > or (with <span
+class="cmss-10">description</span><a
+ id="dx1-28023"></a> and <span
+class="cmss-10">footnote</span><a
+ id="dx1-28024"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-123">
+ \setacronymstyle{footnote-sm-desc}
+</div>
+ <!--l. 4305--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:footnote"><span
+class="cmssbx-10">footnote</span><a
+ id="dx1-28025"></a></a> </dt><dd
+class="description">This option changes the definition of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-28026"></a> and the way that acronyms are
+ displayed. This option may be replaced by:
+
+
+ <div class="verbatim" id="verbatim-124">
+ \setacronymstyle{footnote}
+</div>
+ <!--l. 4312--><p class="nopar" > or (with <span
+class="cmss-10">smallcaps</span><a
+ id="dx1-28027"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-125">
+ \setacronymstyle{footnote-sc}
+</div>
+ <!--l. 4316--><p class="nopar" > or (with <span
+class="cmss-10">smaller</span><a
+ id="dx1-28028"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-126">
+ \setacronymstyle{footnote-sm}
+</div>
+ <!--l. 4320--><p class="nopar" > or (with <span
+class="cmss-10">description</span><a
+ id="dx1-28029"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-127">
+ \setacronymstyle{footnote-desc}
+</div>
+ <!--l. 4324--><p class="nopar" > or (with <span
+class="cmss-10">smallcaps</span><a
+ id="dx1-28030"></a> and <span
+class="cmss-10">description</span><a
+ id="dx1-28031"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-128">
+ \setacronymstyle{footnote-sc-desc}
+</div>
+ <!--l. 4328--><p class="nopar" > or (with <span
+class="cmss-10">smaller</span><a
+ id="dx1-28032"></a> and <span
+class="cmss-10">description</span><a
+ id="dx1-28033"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-129">
+ \setacronymstyle{footnote-sm-desc}
+</div>
+ <!--l. 4332--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:dua"><span
+class="cmssbx-10">dua</span><a
+ id="dx1-28034"></a></a> </dt><dd
+class="description">This option changes the definition of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-28035"></a> so that acronyms are always
+ expanded. This option may be replaced by:
+
+
+ <div class="verbatim" id="verbatim-130">
+ \setacronymstyle{dua}
+</div>
+ <!--l. 4340--><p class="nopar" > or (with <span
+class="cmss-10">description</span><a
+ id="dx1-28036"></a>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-131">
+ \setacronymstyle{dua-desc}
+</div>
+ <!--l. 4344--><p class="nopar" >
+</p>
+ </dd></dl>
+<!--l. 4348--><p class="noindent" >
+</p>
+<!--l. 4348--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.6 </span> <a
+ id="sec:pkgopts-other"></a>Other Options</h3>
+<!--l. 4351--><p class="noindent" >Other available options that don&#8217;t fit any of the above categories are:
+ </p><dl class="description"><dt class="description">
+<a
+ id="pkgopt:symbols"><span
+class="cmssbx-10">symbols</span><a
+ id="dx1-29001"></a></a> </dt><dd
+class="description">This option defines a new glossary type with the label <span
+class="cmtt-10">symbols </span>via
+
+
+ <div class="verbatim" id="verbatim-132">
+ \newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}
+</div>
+ <!--l. 4358--><p class="nopar" > It also defines
+ </p><!--l. 4360--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printsymbols</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29002"></a> <span
+class="cmtt-10">\printsymbols[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 4362--><p class="noindent" >
+ which is a synonym for </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-29003"></a><span
+class="cmtt-10">[type=symbols,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div>
+ <!--l. 4368--><p class="noindent" >If you use <a
+href="#option1">Option&#x00A0;1</a>, you need to use: </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-29004"></a><span
+class="cmtt-10">[type=symbols,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> to display the list of symbols.
+ <!--l. 4374--><p class="noindent" ><div class="important" title="Important Note"> Remember to use the <span
+class="cmss-10">nomain</span><a
+ id="dx1-29005"></a> package option if you&#8217;re only interested in using this
+ <span
+class="cmtt-10">symbols </span>glossary and don&#8217;t intend to use the <span
+class="cmtt-10">main </span>glossary. </div>
+ </p><!--l. 4378--><p class="noindent" >
+ </p><!--l. 4380--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra </span>package has a slightly modified version of this option which
+ additionally provides <span
+class="cmtt-10">\glsxtrnewsymbol</span><a
+ id="dx1-29006"></a> as a convenient shortcut method for defining
+ symbols. See the <span
+class="cmss-10">glossaries-extra </span>manual for further details.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:numbers"><span
+class="cmssbx-10">numbers</span><a
+ id="dx1-29007"></a></a> </dt><dd
+class="description">This option defines a new glossary type with the label <span
+class="cmtt-10">numbers </span>via
+
+
+ <div class="verbatim" id="verbatim-133">
+ \newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}
+</div>
+ <!--l. 4389--><p class="nopar" > It also defines
+ </p><!--l. 4391--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printnumbers</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29008"></a> <span
+class="cmtt-10">\printnumbers[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 4393--><p class="noindent" >
+ which is a synonym for </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-29009"></a><span
+class="cmtt-10">[type=numbers,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div>
+ <!--l. 4399--><p class="noindent" >If you use <a
+href="#option1">Option&#x00A0;1</a>, you need to use: </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-29010"></a><span
+class="cmtt-10">[type=numbers,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> to display the list of numbers.
+ <!--l. 4405--><p class="noindent" ><div class="important" title="Important Note"> Remember to use the <span
+class="cmss-10">nomain</span><a
+ id="dx1-29011"></a> package option if you&#8217;re only interested in using this
+ <span
+class="cmtt-10">numbers </span>glossary and don&#8217;t intend to use the <span
+class="cmtt-10">main </span>glossary. </div>
+ </p><!--l. 4409--><p class="noindent" >
+ </p><!--l. 4411--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra </span>package has a slightly modified version of this option which
+ additionally provides <span
+class="cmtt-10">\glsxtrnewnumber</span><a
+ id="dx1-29012"></a> as a convenient shortcut method for defining
+ numbers. See the <span
+class="cmss-10">glossaries-extra </span>manual for further details.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:index"><span
+class="cmssbx-10">index</span><a
+ id="dx1-29013"></a></a> </dt><dd
+class="description">This option defines a new glossary type with the label <span
+class="cmtt-10">index </span>via
+
+
+ <div class="verbatim" id="verbatim-134">
+ \newglossary[ilg]{index}{ind}{idx}{\indexname}%
+</div>
+ <!--l. 4420--><p class="nopar" > It also defines
+ </p><!--l. 4422--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newterm</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29014"></a> <span
+class="cmtt-10">\newterm[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">term</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 4424--><p class="noindent" >
+ which is a synonym for </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-29015"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">term</span>&#x27E9;<span
+class="cmtt-10">}[type=index,name={</span>&#x27E8;<span
+class="cmitt-10">term</span>&#x27E9;<span
+class="cmtt-10">},%</span>
+ <br /><span
+class="cmtt-10">description=\nopostdesc</span><a
+ id="dx1-29016"></a><span
+class="cmtt-10">,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> and
+ <!--l. 4431--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printindex</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29017"></a> <span
+class="cmtt-10">\printindex[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 4433--><p class="noindent" >
+ which is a synonym for </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-29018"></a><span
+class="cmtt-10">[type=index,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div>
+ <!--l. 4439--><p class="noindent" >If you use <a
+href="#option1">Option&#x00A0;1</a>, you need to use: </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-29019"></a><span
+class="cmtt-10">[type=index,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> to display this glossary.
+ <!--l. 4445--><p class="noindent" ><div class="important" title="Important Note"> Remember to use the <span
+class="cmss-10">nomain</span><a
+ id="dx1-29020"></a> package option if you&#8217;re only interested in using this
+ <span
+class="cmtt-10">index </span>glossary and don&#8217;t intend to use the <span
+class="cmtt-10">main </span>glossary. Note that you can&#8217;t mix this
+ option with <span
+class="cmtt-10">\index</span><a
+ id="dx1-29021"></a>. Either use <span
+class="cmss-10">glossaries </span>for the indexing or use a&#x00A0;custom
+ indexing package, such as <span
+class="cmss-10">makeidx</span><a
+ id="dx1-29022"></a>, <span
+class="cmss-10">index</span><a
+ id="dx1-29023"></a> or <span
+class="cmss-10">imakeidx</span><a
+ id="dx1-29024"></a>. (You can, of course, load
+ one of those packages and load <span
+class="cmss-10">glossaries </span>without the <span
+class="cmss-10">index</span><a
+ id="dx1-29025"></a> package option.)
+ </div>
+ </p><!--l. 4454--><p class="noindent" >
+
+
+ </p><!--l. 4456--><p class="noindent" >Since the index isn&#8217;t designed for terms with descriptions, you might also want to
+ disable the hyperlinks for this glossary using the package option <span
+class="cmss-10">nohypertypes=index</span><a
+ id="dx1-29026"></a> or
+ the command <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\GlsDeclareNoHyperList</span><a
+ id="dx1-29027"></a><span class="verb"><span
+class="cmtt-10">{index}</span></span>
+ <br /><spacer type=vertical size=10></span>
+ </p><!--l. 4463--><p class="noindent" >The example file <a
+href="#x1-11100r28"><span
+class="cmtt-10">sample-index.tex</span></a> illustrates the use of the <span
+class="cmss-10">index</span><a
+ id="dx1-29028"></a> package
+ option.
+ </p></dd><dt class="description">
+<a
+ id="pkgopt:noglossaryindex"><span
+class="cmssbx-10">noglossaryindex</span><a
+ id="dx1-29029"></a></a> </dt><dd
+class="description">This option switches off <span
+class="cmss-10">index</span><a
+ id="dx1-29030"></a> if <span
+class="cmss-10">index</span><a
+ id="dx1-29031"></a> has been passed implicitly (for
+ example, through global document options). This option can&#8217;t be used in
+ <span
+class="cmtt-10">\setupglossaries</span>.
+ </dd><dt class="description">
+<a
+ id="pkgopt:compatible-2.07"><span
+class="cmssbx-10">compatible-2.07</span><a
+ id="dx1-29032"></a></a> </dt><dd
+class="description">Compatibility mode for old documents created using version 2.07 or
+ below.
+ </dd><dt class="description">
+<a
+ id="pkgopt:compatible-3.07"><span
+class="cmssbx-10">compatible-3.07</span><a
+ id="dx1-29033"></a></a> </dt><dd
+class="description">Compatibility mode for old documents created using version 3.07 or
+ below.
+ </dd><dt class="description">
+<a
+ id="pkgopt:kernelglossredefs"><span
+class="cmssbx-10">kernelglossredefs</span><a
+ id="dx1-29034"></a></a> </dt><dd
+class="description">As a legacy from the precursor <span
+class="cmss-10">glossary</span><a
+ id="dx1-29035"></a> package, the standard glossary
+ commands provided by the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;kernel (<span
+class="cmtt-10">\makeglossary </span>and <span
+class="cmtt-10">\glossary</span>) are
+ redefined in terms of the <span
+class="cmss-10">glossaries </span>package&#8217;s commands. However, they were never
+ documented in this user manual, and the conversion guide (<a
+href="glossary2glossaries.html" >&#8220;Upgrading from
+ the glossary package to the glossaries package&#8221;</a>) explicitly discourages their
+ use.
+ <!--l. 4486--><p class="noindent" >The use of those kernel commands (instead of the appropriate commands documented
+ in this user guide) are deprecated, and you will now get a warning if you try using
+ them.
+ </p><!--l. 4490--><p class="noindent" >In the event that you require the original form of these kernel commands,
+ for example, if you need to use the <span
+class="cmss-10">glossaries </span>package with another class or
+ package that also performs glossary-style indexing, then you can restore these
+ commands to their previous definition (that is, their definitions prior to loading the
+ <span
+class="cmss-10">glossaries </span>package) with the package option <span
+class="cmss-10">kernelglossredefs=false</span><a
+ id="dx1-29036"></a>. You may
+ also need to use the <span
+class="cmss-10">nomain</span><a
+ id="dx1-29037"></a> option in the event of file extension conflicts. (In
+ which case, you must provide a new default glossary for use with the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-29038"></a>
+ package.)
+ </p><!--l. 4501--><p class="noindent" >This option may take one of three values: <span
+class="cmss-10">true </span>(redefine with warnings, default),
+ <span
+class="cmss-10">false </span>(restore previous definitions) or <span
+class="cmss-10">nowarn </span>(redefine without warnings, not
+ recommended).
+ </p><!--l. 4506--><p class="noindent" >Note that the only glossary-related commands provided by the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;kernel are
+ <span
+class="cmtt-10">\makeglossary </span>and <span
+class="cmtt-10">\glossary</span>. Other packages or classes may provide additional
+
+
+ glossary-related commands or environments that conflict with <span
+class="cmss-10">glossaries </span>(such as
+ <span
+class="cmtt-10">\printglossary </span>and <span
+class="cmss-10">theglossary</span><a
+ id="dx1-29039"></a><a
+ id="dx1-29040"></a>). These non-kernel commands aren&#8217;t affected by this
+ package option, and you will have to find some way to resolve the conflict if you require
+ both glossary mechanisms. (The <span
+class="cmss-10">glossaries</span><a
+ id="dx1-29041"></a> package will override the existing definitions
+ of <span
+class="cmtt-10">\printglossary </span>and <span
+class="cmss-10">theglossary</span><a
+ id="dx1-29042"></a><a
+ id="dx1-29043"></a>.)
+ </p><!--l. 4516--><p class="noindent" >In general, if possible, it&#8217;s best to stick with just one package that provides a glossary
+ mechanism. (The <span
+class="cmss-10">glossaries </span>package does check for the <span
+class="cmss-10">doc</span><a
+ id="dx1-29044"></a> package and patches
+ <span
+class="cmtt-10">\PrintChanges</span>.)
+</p>
+ </dd></dl>
+<!--l. 4522--><p class="noindent" >
+</p>
+<!--l. 4522--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.7 </span> <a
+ id="sec:setupglossaries"></a>Setting Options After the Package is Loaded</h3>
+<!--l. 4525--><p class="noindent" >Some of the options described above may also be set after the <span
+class="cmss-10">glossaries </span>package has been
+loaded using
+</p><!--l. 4527--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setupglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30001"></a> <span
+class="cmtt-10">\setupglossaries{</span>&#x27E8;<span
+class="cmitt-10">key-val list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4529--><p class="noindent" >
+The following package options <span
+class="cmbx-10">can&#8217;t </span>be used in <span
+class="cmtt-10">\setupglossaries</span>: <span
+class="cmss-10">xindy</span><a
+ id="dx1-30002"></a>, <span
+class="cmss-10">xindygloss</span><a
+ id="dx1-30003"></a>,
+<span
+class="cmss-10">xindynoglsnumbers</span><a
+ id="dx1-30004"></a>, <span
+class="cmss-10">makeindex</span><a
+ id="dx1-30005"></a>, <span
+class="cmss-10">nolong</span><a
+ id="dx1-30006"></a>, <span
+class="cmss-10">nosuper</span><a
+ id="dx1-30007"></a>, <span
+class="cmss-10">nolist</span><a
+ id="dx1-30008"></a>, <span
+class="cmss-10">notree</span><a
+ id="dx1-30009"></a>, <span
+class="cmss-10">nostyles</span><a
+ id="dx1-30010"></a>, <span
+class="cmss-10">nomain</span><a
+ id="dx1-30011"></a>, <span
+class="cmss-10">compatible-2.07</span><a
+ id="dx1-30012"></a>,
+<span
+class="cmss-10">translate</span><a
+ id="dx1-30013"></a>, <span
+class="cmss-10">notranslate</span><a
+ id="dx1-30014"></a>, <span
+class="cmss-10">acronym</span><a
+ id="dx1-30015"></a>. These options have to be set while the package is loading,
+except for the <span
+class="cmss-10">xindy</span><a
+ id="dx1-30016"></a> sub-options which can be set using commands like <span
+class="cmtt-10">\GlsSetXdyLanguage</span><a
+ id="dx1-30017"></a>
+(see <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option 3)<!--tex4ht:ref: sec:xindy --></a> for further details).
+</p><!--l. 4541--><p class="indent" > <div class="important" title="Important Note"> If you need to use this command, use it as soon as possible after loading <span
+class="cmss-10">glossaries</span>
+otherwise you might end up using it too late for the change to take effect. For example, if you
+try changing the acronym styles (such as <span
+class="cmss-10">smallcaps</span><a
+ id="dx1-30018"></a>) after you have started defining your
+acronyms, you are likely to get unexpected results. If you try changing the sort
+option after you have started to define entries, you may get unexpected results.
+</div>
+</p><!--l. 4549--><p class="noindent" >
+
+
+</p>
+<!--l. 4551--><p class="indent" > </div>
+</p><!--l. 4551--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">3. <a
+ id="sec:setup"></a>Setting Up</h2>
+</p><!--l. 4554--><p class="indent" > In the preamble you need to indicate whether you want to use <a
+href="#option1">Option&#x00A0;1</a>, <a
+href="#option2">Option&#x00A0;2</a> or
+<a
+href="#option3">Option&#x00A0;3</a>. It&#8217;s not possible to mix these options within a&#x00A0;document, although some
+combinations are possible with <span
+class="cmss-10">glossaries-extra</span>. (For Options&#x00A0;<a
+href="#option4">4</a> and&#x00A0;<a
+href="#option5">5</a> see the <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-31001"></a></a> and
+<a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> manuals.)
+</p>
+<!--l. 4560--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.1 </span> <a
+ id="sec:setupopt1"></a>Option 1</h3>
+<!--l. 4563--><p class="noindent" >The command
+</p><!--l. 4564--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\makenoidxglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32001"></a> <span
+class="cmtt-10">\makenoidxglossaries </span></div><hr>
+</p><!--l. 4566--><p class="noindent" >
+must be placed in the preamble. This sets up the internal commands required to make
+<a
+href="#option1">Option&#x00A0;1</a> work. <span
+class="cmbx-10">If you omit </span><span
+class="cmtt-10">\makenoidxglossaries </span><span
+class="cmbx-10">none of the glossaries will be</span>
+<span
+class="cmbx-10">displayed.</span>
+</p><!--l. 4572--><p class="noindent" >
+</p>
+<!--l. 4572--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.2 </span> <a
+ id="sec:setupopt23"></a>Options 2 and 3</h3>
+<!--l. 4575--><p class="noindent" >The command
+</p><!--l. 4576--><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-33001"></a> <span
+class="cmtt-10">\makeglossaries </span></div><hr>
+</p><!--l. 4578--><p class="noindent" >
+must be placed in the preamble in order to create the customised <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-33002"></a></a> (<span
+class="cmtt-10">.ist</span><a
+ id="dx1-33003"></a>) or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-33004"></a></a>
+(<span
+class="cmtt-10">.xdy</span><a
+ id="dx1-33005"></a>) style file (for Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>, respectively) and to ensure that glossary entries are
+written to the appropriate output files. <span
+class="cmbx-10">If you omit </span><span
+class="cmtt-10">\makeglossaries </span><span
+class="cmbx-10">none of the</span>
+<span
+class="cmbx-10">glossary files will be created.</span>
+</p><!--l. 4586--><p class="indent" > <div class="important" title="Important Note"> Note that some of the commands provided by the <span
+class="cmss-10">glossaries </span>package must not be used
+after <span
+class="cmtt-10">\makeglossaries </span>as they are required when creating the customised style file. If
+you attempt to use those commands after <span
+class="cmtt-10">\makeglossaries </span>you will generate an
+error.
+</p><!--l. 4593--><p class="indent" > Similarly, there are some commands that must not be used before <span
+class="cmtt-10">\makeglossaries</span>.
+</div>
+</p><!--l. 4595--><p class="noindent" >
+</p><!--l. 4597--><p class="indent" > You can suppress the creation of the customised <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-33006"></a></a> or <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-33007"></a></a> style file
+using
+</p><!--l. 4599--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\noist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33008"></a> <span
+class="cmtt-10">\noist </span></div><hr>
+</p><!--l. 4601--><p class="noindent" >
+That this command must not be used after <span
+class="cmtt-10">\makeglossaries</span>.
+</p><!--l. 4603--><p class="indent" > <div class="important" title="Important Note"> Note that if you have a custom <span
+class="cmtt-10">.xdy</span><a
+ id="dx1-33009"></a> file created when using <span
+class="cmss-10">glossaries </span>version 2.07 or
+below, you will need to use the <span
+class="cmss-10">compatible-2.07</span><a
+ id="dx1-33010"></a> package option with it. </div>
+</p><!--l. 4607--><p class="noindent" >
+
+
+</p><!--l. 4609--><p class="indent" > The default name for the customised style file is given by <span
+class="cmtt-10">\jobname</span><a
+ id="dx1-33011"></a><span
+class="cmtt-10">.ist</span><a
+ id="dx1-33012"></a> (<a
+href="#option2">Option&#x00A0;2</a>) or
+<span
+class="cmtt-10">\jobname</span><a
+ id="dx1-33013"></a><span
+class="cmtt-10">.xdy</span><a
+ id="dx1-33014"></a> (<a
+href="#option3">Option&#x00A0;3</a>). This name may be changed using:
+</p><!--l. 4613--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setStyleFile</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33015"></a> <span
+class="cmtt-10">\setStyleFile{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4615--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the style file without the extension. Note that this command must
+not be used after <span
+class="cmtt-10">\makeglossaries</span>.
+</p><!--l. 4620--><p class="indent" > Each glossary entry is assigned a <a
+href="#glo:numberlist">number list<a
+ id="dx1-33016"></a></a> that lists all the locations in the document
+where that entry was used. By default, the location refers to the page number but this may
+be overridden using the <span
+class="cmss-10">counter</span><a
+ id="dx1-33017"></a> package option. The default form of the location number
+assumes a full stop compositor (e.g.&#x00A0;1.2), but if your location numbers use a different
+compositor (e.g. 1-2) you need to set this using
+</p><!--l. 4627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsSetCompositor</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33018"></a> <span
+class="cmtt-10">\glsSetCompositor{</span>&#x27E8;<span
+class="cmitt-10">symbol</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4629--><p class="noindent" >
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-135">
+\glsSetCompositor{-}
+</div>
+<!--l. 4633--><p class="nopar" > This command must not be used after <span
+class="cmtt-10">\makeglossaries</span>.
+</p><!--l. 4636--><p class="indent" > If you use <a
+href="#option3">Option&#x00A0;3</a>, you can have a different compositor for page numbers starting with
+an upper case alphabetical character using:
+</p><!--l. 4638--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsSetAlphaCompositor</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33019"></a> <span
+class="cmtt-10">\glsSetAlphaCompositor{</span>&#x27E8;<span
+class="cmitt-10">symbol</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4640--><p class="noindent" >
+This command has no effect if you use <a
+href="#option2">Option&#x00A0;2</a>. For example, if you want <a
+href="#glo:numberlist">number list<a
+ id="dx1-33020"></a>s</a>
+containing a mixture of A-1 and 2.3 style formats, then do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-136">
+\glsSetCompositor{.}\glsSetAlphaCompositor{-}
+</div>
+<!--l. 4646--><p class="nopar" > See <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5 </a><a
+href="#sec:numberlists">Number lists<!--tex4ht:ref: sec:numberlists --></a> for further information about <a
+href="#glo:numberlist">number list<a
+ id="dx1-33021"></a>s</a>.
+
+
+</p>
+<!--l. 4650--><p class="indent" > </div>
+</p><!--l. 4650--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">4. <a
+ id="sec:newglosentry"></a>Defining Glossary Entries</h2>
+</p><!--l. 4653--><p class="indent" > All glossary entries must be defined before they are used, so it is better to define them in
+the preamble to ensure this. In fact, some commands such as <span
+class="cmtt-10">\longnewglossaryentry</span>
+may only be used in the preamble. See <a
+href="#sec:docdefs"><span
+class="tcrm-1000">&sect;</span>4.8 </a><a
+href="#sec:docdefs">Drawbacks With Defining Entries in
+the Document Environment<!--tex4ht:ref: sec:docdefs --></a> for a discussion of the problems with defining entries
+within the document instead of in the preamble. (The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package has an
+option that provides a restricted form of document definitions that avoids some of
+the issues discussed in <a
+href="#sec:docdefs"><span
+class="tcrm-1000">&sect;</span>4.8 </a><a
+href="#sec:docdefs">Drawbacks With Defining Entries in the Document
+Environment<!--tex4ht:ref: sec:docdefs --></a>.)
+</p><!--l. 4662--><p class="indent" > <div class="important" title="Important Note"> <a
+href="#option1">Option&#x00A0;1</a> enforces the preamble-only restriction on <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-34001"></a>. <a
+href="#option4">Option&#x00A0;4</a>
+requires that definitions are provided in <span
+class="cmtt-10">.bib </span>format. <a
+href="#option5">Option&#x00A0;5</a> requires either
+preamble-only definitions or the use of the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-34002"></a> package option <span
+class="cmss-10">docdef=restricted</span>.
+</div>
+</p><!--l. 4668--><p class="noindent" >
+</p><!--l. 4670--><p class="indent" > Only those entries that are indexed in the document (using any of the commands
+described in <a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to Glossary Entries<!--tex4ht:ref: sec:glslink --></a>, <a
+href="#sec:glsadd"><span
+class="tcrm-1000">&sect;</span>7 </a><a
+href="#sec:glsadd">Adding an Entry to the Glossary Without
+Generating Text<!--tex4ht:ref: sec:glsadd --></a> or <a
+href="#sec:crossref"><span
+class="tcrm-1000">&sect;</span>8 </a><a
+href="#sec:crossref">Cross-Referencing Entries<!--tex4ht:ref: sec:crossref --></a>) will appear in the glossary. See <a
+href="#sec:printglossary"><span
+class="tcrm-1000">&sect;</span>10
+</a><a
+href="#sec:printglossary">Displaying a glossary<!--tex4ht:ref: sec:printglossary --></a> to find out how to display the glossary.
+</p><!--l. 4678--><p class="indent" > New glossary entries are defined using the command:
+</p><!--l. 4679--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newglossaryentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34003"></a> <span
+class="cmtt-10">\newglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">key=value list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4681--><p class="noindent" >
+This is a short command, so values in &#x27E8;<span
+class="cmti-10">key-val list</span>&#x27E9; can&#8217;t contain any paragraph breaks. Take
+care to enclose values containing any commas (<span
+class="cmtt-10">,</span>) or equal signs (<span
+class="cmtt-10">=</span>) with braces to hide them
+from the key=value list parser. Be careful to ensure that no spurious spaces are included at
+the start and end of the braces.
+</p><!--l. 4688--><p class="indent" > If you have a long description that needs to span multiple paragraphs, use
+</p><!--l. 4690--><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-34004"></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">key=value list</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>
+<span
+class="cmitt-10">description</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4693--><p class="noindent" >
+instead. Note that this command may only be used in the preamble. Be careful of unwanted
+spaces. <span
+class="cmtt-10">\longnewglossaryentry </span>will remove trailing spaces in the description (via <span
+class="cmtt-10">\unskip</span>)
+but won&#8217;t remove leading spaces (otherwise it would interfere with commands like
+<span
+class="cmtt-10">\Glsentrydesc</span>). This command also appends <span
+class="cmtt-10">\nopostdesc </span>to the end of the description,
+which suppresses the post-description hook. The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-34005"></a> package provides a
+starred version of <span
+class="cmtt-10">\longnewglossaryentry </span>that doesn&#8217;t append either <span
+class="cmtt-10">\unskip </span>or
+<span
+class="cmtt-10">\nopostdesc</span>.
+</p><!--l. 4704--><p class="indent" > There are also commands that will only define the entry if it hasn&#8217;t already been
+defined:
+</p><!--l. 4706--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\provideglossaryentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34006"></a> <span
+class="cmtt-10">\provideglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">key=value list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4708--><p class="noindent" >
+and
+</p><!--l. 4710--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\longprovideglossaryentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34007"></a> <span
+class="cmtt-10">\longprovideglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">key=value list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+
+
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">long description</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4713--><p class="noindent" >
+(These are both preamble-only commands.)
+</p><!--l. 4716--><p class="indent" > For all the above commands, the first argument, &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, must be a&#x00A0;unique label with which
+to identify this entry. <span
+class="cmbx-10">This can&#8217;t contain any non-expandable commands</span>
+<span
+class="cmbx-10">or active characters. </span>The reason for this restriction is that the label is used to
+construct internal commands that store the associated information (similarly to
+commands like <span
+class="cmtt-10">\label</span>) and therefore must be able to expand to a valid control sequence
+name.
+</p><!--l. 4724--><p class="indent" > <div class="important" title="Important Note"> Note that although an <a
+href="#glo:exlatinchar">extended Latin character<a
+ id="dx1-34008"></a></a> or other <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-34009"></a></a>, such as &eacute;
+or &szlig;, looks like a plain character in your <span
+class="cmtt-10">.tex </span>file, it&#8217;s actually a&#x00A0;macro (an active character)
+and therefore can&#8217;t be used in the label. (This applies to <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;rather than XeLaTeX.)
+Also be careful of <span
+class="cmss-10">babel</span><a
+ id="dx1-34010"></a>&#8217;s options that change certain punctuation characters (such as <span
+class="cmtt-10">: </span>or <span
+class="cmtt-10">-</span>)
+to active characters. </div>
+</p><!--l. 4732--><p class="noindent" >
+</p><!--l. 4734--><p class="indent" > The second argument, &#x27E8;<span
+class="cmti-10">key=value list</span>&#x27E9;, is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; list that supplies the relevant
+information about this entry. There are two required fields: <span
+class="cmss-10">description</span><a
+ id="dx1-34011"></a> and either <span
+class="cmss-10">name</span><a
+ id="dx1-34012"></a> or
+<span
+class="cmss-10">parent</span><a
+ id="dx1-34013"></a>. The description is set in the third argument of <span
+class="cmtt-10">\longnewglossaryentry </span>and
+<span
+class="cmtt-10">\longprovideglossaryentry</span>. With the other commands it&#8217;s set via the <span
+class="cmss-10">description</span><a
+ id="dx1-34014"></a> key. As is
+typical with &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; lists, values that contain a comma or equal sign must be enclosed in
+braces. Available fields are listed below. Additional fields are provided by the supplementary
+packages <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-34015"></a> (<a
+href="#sec:prefix"><span
+class="tcrm-1000">&sect;</span>17 </a><a
+href="#sec:prefix">Prefixes or Determiners<!--tex4ht:ref: sec:prefix --></a>) and <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-34016"></a> (<a
+href="#sec:accsupp"><span
+class="tcrm-1000">&sect;</span>18
+</a><a
+href="#sec:accsupp">Accessibility Support<!--tex4ht:ref: sec:accsupp --></a>) and also by <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>. You can also define your own custom keys
+(see <a
+href="#sec:addkey"><span
+class="tcrm-1000">&sect;</span>4.3 </a><a
+href="#sec:addkey">Additional Keys<!--tex4ht:ref: sec:addkey --></a>).
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">name</span><a
+ id="dx1-34017"></a> </dt><dd
+class="description">The name of the entry (as it will appear in the glossary). If this key is omitted
+ and the <span
+class="cmss-10">parent</span><a
+ id="dx1-34018"></a> key is supplied, this value will be the same as the parent&#8217;s name.
+ <!--l. 4755--><p class="noindent" ><div class="important" title="Important Note"> If the <span
+class="cmss-10">name</span><a
+ id="dx1-34019"></a> key contains any commands, you must also use the <span
+class="cmss-10">sort</span><a
+ id="dx1-34020"></a> key (described
+ below) if you intend sorting the entries alphabetically, otherwise the entries can&#8217;t be
+ sorted correctly. </div>
+ </p><!--l. 4759--><p class="noindent" >
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">description</span><a
+ id="dx1-34021"></a> </dt><dd
+class="description">A brief description of this term (to appear in the glossary). Within this value,
+ you can use
+ <!--l. 4763--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\nopostdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34022"></a> <span
+class="cmtt-10">\nopostdesc </span></div><hr>
+ </p><!--l. 4765--><p class="noindent" >
+ to suppress the description terminator for this entry. For example, if this
+ entry is a parent entry that doesn&#8217;t require a description, you can do
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">description={\nopostdesc}</span></span></span>. If you want a paragraph break in the description
+ use
+ </p><!--l. 4771--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34023"></a> <span
+class="cmtt-10">\glspar </span></div><hr>
+
+
+ </p><!--l. 4773--><p class="noindent" >
+ or, better, use <span
+class="cmtt-10">\longnewglossaryentry</span>. However, note that not all glossary styles
+ support multi-line descriptions. If you are using one of the tabular-like glossary styles
+ that permit multi-line descriptions, use <span
+class="cmtt-10">\newline</span><a
+ id="dx1-34024"></a> not <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\</span></span></span> if you want to force a line
+ break.
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">parent</span><a
+ id="dx1-34025"></a> </dt><dd
+class="description">The label of the parent entry. Note that the parent entry must be defined before its
+ sub-entries. See <a
+href="#sec:subentries"><span
+class="tcrm-1000">&sect;</span>4.5 </a><a
+href="#sec:subentries">Sub-Entries<!--tex4ht:ref: sec:subentries --></a> for further details.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">descriptionplural</span><a
+ id="dx1-34026"></a> </dt><dd
+class="description">The plural form of the description, if required. If omitted, the value is set to
+ the same as the <span
+class="cmss-10">description</span><a
+ id="dx1-34027"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">text</span><a
+ id="dx1-34028"></a> </dt><dd
+class="description">How this entry will appear in the document text when using <span
+class="cmtt-10">\gls</span><a
+ id="dx1-34029"></a> (or one of its
+ upper case variants). If this field is omitted, the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-34030"></a> key is
+ used.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">first</span><a
+ id="dx1-34031"></a> </dt><dd
+class="description">How the entry will appear in the document text on <a
+href="#glo:firstuse">first use</a>&#x00A0;with <span
+class="cmtt-10">\gls</span><a
+ id="dx1-34032"></a> (or one of its
+ upper case variants). If this field is omitted, the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-34033"></a> key is used. Note that
+ if you use <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-34034"></a>, <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-34035"></a>, <span
+class="cmtt-10">\GLSpl</span><a
+ id="dx1-34036"></a>, <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-34037"></a> before using <span
+class="cmtt-10">\gls</span><a
+ id="dx1-34038"></a>, the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-34039"></a> value
+ won&#8217;t be used with <span
+class="cmtt-10">\gls</span><a
+ id="dx1-34040"></a>.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">plural</span><a
+ id="dx1-34041"></a> </dt><dd
+class="description">How the entry will appear in the document text when using <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-34042"></a> (or one
+ of its upper case variants). If this field is omitted, the value is obtained by
+ appending <span
+class="cmtt-10">\glspluralsuffix</span><a
+ id="dx1-34043"></a> to the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-34044"></a> field. The default value of
+ <span
+class="cmtt-10">\glspluralsuffix</span><a
+ id="dx1-34045"></a> is the letter &#8220;s&#8221;.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">firstplural</span><a
+ id="dx1-34046"></a> </dt><dd
+class="description">How the entry will appear in the document text on <a
+href="#glo:firstuse">first use</a>&#x00A0;with <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-34047"></a> (or one
+ of its upper case variants). If this field is omitted, the value is obtained from the <span
+class="cmss-10">plural</span><a
+ id="dx1-34048"></a>
+ key, if the <span
+class="cmss-10">first</span><a
+ id="dx1-34049"></a> key is omitted, or by appending <span
+class="cmtt-10">\glspluralsuffix</span><a
+ id="dx1-34050"></a> to the value of
+ the <span
+class="cmss-10">first</span><a
+ id="dx1-34051"></a> field, if the <span
+class="cmss-10">first</span><a
+ id="dx1-34052"></a> field is present. Note that if you use <span
+class="cmtt-10">\gls</span><a
+ id="dx1-34053"></a>, <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-34054"></a>,
+ <span
+class="cmtt-10">\GLS</span><a
+ id="dx1-34055"></a>, <span
+class="cmtt-10">\glsdisp </span>before using <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-34056"></a>, the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-34057"></a> value won&#8217;t be used with
+ <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-34058"></a>.
+ <!--l. 4815--><p class="noindent" ><span
+class="cmbx-10">Note: </span>prior to version 1.13, the default value of <span
+class="cmss-10">firstplural</span><a
+ id="dx1-34059"></a> was always taken by
+ appending &#8220;s&#8221; to the <span
+class="cmss-10">first</span><a
+ id="dx1-34060"></a> key, which meant that you had to specify both <span
+class="cmss-10">plural</span><a
+ id="dx1-34061"></a> and
+ <span
+class="cmss-10">firstplural</span><a
+ id="dx1-34062"></a>, even if you hadn&#8217;t used the <span
+class="cmss-10">first</span><a
+ id="dx1-34063"></a> key.
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">symbol</span><a
+ id="dx1-34064"></a> </dt><dd
+class="description">This field is provided to allow the user to specify an associated symbol. If
+ omitted, the value is set to <span
+class="cmtt-10">\relax</span>. Note that not all glossary styles display the
+ symbol.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">symbolplural</span><a
+ id="dx1-34065"></a> </dt><dd
+class="description">This is the plural form of the symbol (as passed to <span
+class="cmtt-10">\glsdisplay</span><a
+ id="dx1-34066"></a> and
+
+
+ <span
+class="cmtt-10">\glsdisplayfirst</span><a
+ id="dx1-34067"></a> by <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-34068"></a>, <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-34069"></a> and <span
+class="cmtt-10">\GLSpl</span><a
+ id="dx1-34070"></a>). If omitted, the value is set to the
+ same as the <span
+class="cmss-10">symbol</span><a
+ id="dx1-34071"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">sort</span><a
+ id="dx1-34072"></a> </dt><dd
+class="description">This value indicates how this entry should be sorted. If omitted, the value is given by the
+ <span
+class="cmss-10">name</span><a
+ id="dx1-34073"></a> field unless one of the package options <span
+class="cmss-10">sort=def</span><a
+ id="dx1-34074"></a> and <span
+class="cmss-10">sort=use</span><a
+ id="dx1-34075"></a> have been
+ used. In general, it&#8217;s best to use the <span
+class="cmss-10">sort</span><a
+ id="dx1-34076"></a> key if the <span
+class="cmss-10">name</span><a
+ id="dx1-34077"></a> contains commands
+ (e.g.&#x00A0;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ensuremath{\alpha}</span></span></span>). You can also override the <span
+class="cmss-10">sort</span><a
+ id="dx1-34078"></a> key by redefining
+ <span
+class="cmtt-10">\glsprestandardsort</span><a
+ id="dx1-34079"></a> (see <a
+href="#sec:pkgopts-sort"><span
+class="tcrm-1000">&sect;</span>2.4 </a><a
+href="#sec:pkgopts-sort">Sorting Options<!--tex4ht:ref: sec:pkgopts-sort --></a>).
+ <!--l. 4839--><p class="noindent" ><a
+href="#option1">Option&#x00A0;1</a> by default strips the <a
+href="#glo:latexexlatinchar">standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;accents</a> (that is, accents generated by
+ core <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;commands) from the <span
+class="cmss-10">name</span><a
+ id="dx1-34080"></a> key when it sets the <span
+class="cmss-10">sort</span><a
+ id="dx1-34081"></a> key. So with
+ <a
+href="#option1">Option&#x00A0;1</a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-137">
+ \newglossaryentry{elite}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;name={{\'e}lite},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={select&#x00A0;group&#x00A0;of&#x00A0;people}
+ &#x00A0;<br />}
+</div>
+ <!--l. 4848--><p class="nopar" > This is equivalent to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-138">
+ \newglossaryentry{elite}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;name={{\'e}lite},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={select&#x00A0;group&#x00A0;of&#x00A0;people},
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={elite}
+ &#x00A0;<br />}
+</div>
+ <!--l. 4856--><p class="nopar" > Unless you use the package option <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-34082"></a>, in which case it&#8217;s equivalent
+ to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-139">
+ \newglossaryentry{elite}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;name={{\'e}lite},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={select&#x00A0;group&#x00A0;of&#x00A0;people},
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={\'elite}
+ &#x00A0;<br />}
+</div>
+ <!--l. 4865--><p class="nopar" > This will place the entry before the &#8220;A&#8221; letter group since the sort value starts with a
+ symbol.
+ </p><!--l. 4869--><p class="noindent" >Similarly if you use the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-34083"></a> package: </p><div class="alltt">
+ <div class="obeylines-v">
+ <span class="verb"><span
+class="cmtt-10">\newglossaryentry{elite}{%</span></span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">lite</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;of</span><span
+class="cmtt-10">&#x00A0;people}</span></span>
+ <br /><span class="verb"><span
+class="cmtt-10">}</span></span>
+</div>
+ </div> This is equivalent to <div class="alltt">
+ <div class="obeylines-v">
+ <span class="verb"><span
+class="cmtt-10">\newglossaryentry{elite}{%</span></span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">lite</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;of</span><span
+class="cmtt-10">&#x00A0;people}</span></span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort=elite</span>
+ <br /><span class="verb"><span
+class="cmtt-10">}</span></span>
+</div>
+ </div> Unless you use the package option <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-34084"></a>, in which case it&#8217;s equivalent to:
+ <div class="alltt">
+ <div class="obeylines-v">
+ <span class="verb"><span
+class="cmtt-10">\newglossaryentry{elite}{%</span></span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">lite</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;of</span><span
+class="cmtt-10">&#x00A0;people}</span></span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort=</span><span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite</span>
+ <br /><span class="verb"><span
+class="cmtt-10">}</span></span>
+</div>
+ </div> Again, this will place the entry before the &#8220;A&#8221; group.
+
+
+ <!--l. 4895--><p class="noindent" >With Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>, the default value of <span
+class="cmss-10">sort</span><a
+ id="dx1-34085"></a> will either be set to the <span
+class="cmss-10">name</span><a
+ id="dx1-34086"></a>
+ key (if <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-34087"></a>) or it will set it to the expansion of the <span
+class="cmss-10">name</span><a
+ id="dx1-34088"></a> key (if
+ <span
+class="cmss-10">sanitizesort=false</span><a
+ id="dx1-34089"></a>).
+ </p><!--l. 4900--><p class="noindent" ><div class="important" title="Important Note"> Take care with <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-34090"></a></a> (<a
+href="#option3">Option&#x00A0;3</a>): if you have entries with the same <span
+class="cmss-10">sort</span><a
+ id="dx1-34091"></a> value they will
+ be treated as the same entry. If you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-34092"></a></a> and aren&#8217;t using the <span
+class="cmtt-10">def </span>or <span
+class="cmtt-10">use </span>sort
+ methods, <span
+class="cmbx-10">always </span>use the <span
+class="cmss-10">sort</span><a
+ id="dx1-34093"></a> key for entries where the name just consists of a control
+ sequence (for example <span
+class="cmtt-10">name=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\alpha</span><span
+class="cmsy-10">}</span>).
+ </p><!--l. 4908--><p class="noindent" >Take care if you use <a
+href="#option1">Option&#x00A0;1</a> and the <span
+class="cmss-10">name</span><a
+ id="dx1-34094"></a> contains fragile commands. You will either
+ need to explicitly set the <span
+class="cmss-10">sort</span><a
+ id="dx1-34095"></a> key or use the <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-34096"></a> package option (unless you
+ use the <span
+class="cmtt-10">def </span>or <span
+class="cmtt-10">use </span>sort methods). </div>
+ </p><!--l. 4912--><p class="noindent" >
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">type</span><a
+ id="dx1-34097"></a> </dt><dd
+class="description">This specifies the label of the glossary in which this entry belongs. If omitted, the
+ default glossary is assumed unless <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-34098"></a> is used (see <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and Other
+ Abbreviations<!--tex4ht:ref: sec:acronyms --></a>).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">user1</span><a
+ id="dx1-34099"></a><span
+class="cmbx-10">, </span><span
+class="cmbx-10">&#x2026;, </span><span
+class="cmssbx-10">user6</span><a
+ id="dx1-34100"></a><a
+ id="dx1-34101"></a><a
+ id="dx1-34102"></a><a
+ id="dx1-34103"></a><a
+ id="dx1-34104"></a> </dt><dd
+class="description">Six keys provided for any additional information the user may want to
+ specify. (For example, an associated dimension or an alternative plural or some other
+ grammatical construct.) Alternatively, you can add new keys using <span
+class="cmtt-10">\glsaddkey</span><a
+ id="dx1-34105"></a> or
+ <span
+class="cmtt-10">\glsaddstoragekey</span><a
+ id="dx1-34106"></a> (see <a
+href="#sec:addkey"><span
+class="tcrm-1000">&sect;</span>4.3 </a><a
+href="#sec:addkey">Additional Keys<!--tex4ht:ref: sec:addkey --></a>).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">nonumberlist</span><a
+ id="dx1-34107"></a> </dt><dd
+class="description">A boolean key. If the value is missing or is <span
+class="cmtt-10">true</span>, this will suppress the <a
+href="#glo:numberlist">number
+ list<a
+ id="dx1-34108"></a></a> just for this entry. Conversely, if you have used the package option <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-34109"></a>, you
+ can activate the number list<a
+ id="dx1-34110"></a> just for this entry with <span
+class="cmss-10">nonumberlist=false</span><a
+ id="dx1-34111"></a>. (See <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5 </a><a
+href="#sec:numberlists">Number
+ lists<!--tex4ht:ref: sec:numberlists --></a>.)
+ </dd><dt class="description">
+<span
+class="cmssbx-10">see</span><a
+ id="dx1-34112"></a> </dt><dd
+class="description">Cross-reference another entry. Using the <span
+class="cmss-10">see</span><a
+ id="dx1-34113"></a> key will <span
+class="cmti-10">automatically add this entry to the</span>
+ <span
+class="cmti-10">glossary</span>, but will not automatically add the cross-referenced entry. The referenced entry
+ should be supplied as the value to this key. If you want to override the &#8220;see&#8221; tag,
+ you can supply the new tag in square brackets before the label. For example
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">see=[see</span><span
+class="cmtt-10">&#x00A0;also]{anotherlabel}</span></span></span>. <span
+class="cmbx-10">Note that if you have suppressed the </span><a
+href="#glo:numberlist"><span
+class="cmbx-10">number</span>
+ <span
+class="cmbx-10">list</span><a
+ id="dx1-34114"></a></a><span
+class="cmbx-10">, the cross-referencing information won&#8217;t appear in the glossary, as it</span>
+ <span
+class="cmbx-10">forms part of the number list</span><a
+ id="dx1-34115"></a><span
+class="cmbx-10">. </span>You can override this for individual glossary
+ entries using <span
+class="cmss-10">nonumberlist=false</span><a
+ id="dx1-34116"></a> (see above). Alternatively, you can use the
+ <span
+class="cmss-10">seeautonumberlist</span><a
+ id="dx1-34117"></a> package option. For further details, see <a
+href="#sec:crossref"><span
+class="tcrm-1000">&sect;</span>8 </a><a
+href="#sec:crossref">Cross-Referencing
+ Entries<!--tex4ht:ref: sec:crossref --></a>.
+ <!--l. 4947--><p class="noindent" >This key essentially provides a convenient shortcut that performs </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\glssee[</span>&#x27E8;<span
+class="cmitt-10">tag</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">xr-label</span><span
+class="cmitt-10">&#x00A0;list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+
+
+ </div> after the entry has been defined.
+ <!--l. 4953--><p class="noindent" ><div class="important" title="Important Note"> For Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>, <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-34118"></a> must be used before any occurrence of
+ <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-34119"></a> that contains the <span
+class="cmss-10">see</span><a
+ id="dx1-34120"></a> key. This key should not be used with entries
+ defined in the <span
+class="cmss-10">document</span><a
+ id="dx1-34121"></a><a
+ id="dx1-34122"></a> environment. </div>
+ </p><!--l. 4957--><p class="noindent" >
+ Since it&#8217;s useful to suppress the indexing while working on a draft document,
+ consider using the <span
+class="cmss-10">seenoindex</span><a
+ id="dx1-34123"></a> package option to warn or ignore the <span
+class="cmss-10">see</span><a
+ id="dx1-34124"></a> key while
+ <span
+class="cmtt-10">\makeglossaries </span>is commented out.
+ </p><!--l. 4963--><p class="noindent" >If you use the <span
+class="cmss-10">see</span><a
+ id="dx1-34125"></a> key, you may want to consider using the <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package which
+ additionally provides a <span
+class="cmtt-10">seealso </span>and <span
+class="cmtt-10">alias </span>key. If you want to avoid the automatic
+ indexing triggered by the <span
+class="cmss-10">see</span><a
+ id="dx1-34126"></a> key, consider using <a
+href="#option4">Option&#x00A0;4</a>.
+</p>
+ </dd></dl>
+<!--l. 4971--><p class="indent" > The following keys are reserved for <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-34127"></a> (see <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and Other
+Abbreviations<!--tex4ht:ref: sec:acronyms --></a>): <span
+class="cmss-10">long</span><a
+ id="dx1-34128"></a>, <span
+class="cmss-10">longplural</span><a
+ id="dx1-34129"></a>, <span
+class="cmss-10">short</span><a
+ id="dx1-34130"></a> and <span
+class="cmss-10">shortplural</span><a
+ id="dx1-34131"></a>.
+</p><!--l. 4975--><p class="indent" > <div class="important" title="Important Note"> Avoid using any of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;or <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands within the <span
+class="cmss-10">text</span><a
+ id="dx1-34132"></a>, <span
+class="cmss-10">first</span><a
+ id="dx1-34133"></a>, <span
+class="cmss-10">short</span><a
+ id="dx1-34134"></a>
+or <span
+class="cmss-10">long</span><a
+ id="dx1-34135"></a> keys (or their plural equivalent) or any other key that you plan to access through
+those commands. (For example, the <span
+class="cmss-10">symbol</span><a
+ id="dx1-34136"></a> key if you intend to use <span
+class="cmtt-10">\glssymbol</span>.) Otherwise
+you end up with nested links, which can cause complications and they won&#8217;t work with the
+case-changing commands. You can use them within the value of keys that won&#8217;t be accessed
+through those commands. For example, the <span
+class="cmss-10">description</span><a
+ id="dx1-34137"></a> key if you don&#8217;t use <span
+class="cmtt-10">\glsdesc</span>.
+Additionally, they&#8217;ll confuse the entry formatting commands, such as <span
+class="cmtt-10">\glslabel</span>.
+</div>
+</p><!--l. 4988--><p class="noindent" >
+</p><!--l. 4990--><p class="indent" > Note that if the name starts with <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-34138"></a></a>, you must group the
+character, otherwise it will cause a problem for commands like <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-34139"></a> and <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-34140"></a>. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-140">
+\newglossaryentry{elite}{name={{\'e}lite},
+&#x00A0;<br />description={select&#x00A0;group&#x00A0;or&#x00A0;class}}
+</div>
+<!--l. 4997--><p class="nopar" > Note that the same applies if you are using the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-34141"></a> package: </p><div class="alltt">
+<div class="obeylines-v">
+<span class="verb"><span
+class="cmtt-10">\newglossaryentry{elite}{name={{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}lite},</span></span>
+<br /><span
+class="cmtt-10">description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;or</span><span
+class="cmtt-10">&#x00A0;class}}</span></span>
+</div>
+</div> (This doesn&#8217;t apply for XeLaTeX&#x00A0;documents using the <span
+class="cmss-10">fontspec</span><a
+ id="dx1-34142"></a> package. For further details,
+see the &#8220;UTF-8&#8221; section in the <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-34143"></a> user manual.)
+<!--l. 5008--><p class="indent" > Note that in both of the above examples, you will also need to supply the <span
+class="cmss-10">sort</span><a
+ id="dx1-34144"></a> key if you
+are using <a
+href="#option2">Option&#x00A0;2</a> whereas <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-34145"></a></a> (<a
+href="#option3">Option&#x00A0;3</a>) is usually able to sort <a
+href="#glo:nonlatinchar">non-Latin character<a
+ id="dx1-34146"></a>s</a>
+correctly. <a
+href="#option1">Option&#x00A0;1</a> discards accents from <a
+href="#glo:latexexlatinchar">standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;extended Latin character<a
+ id="dx1-34147"></a>s</a> unless
+you use the <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-34148"></a>.
+</p>
+<!--l. 5016--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.1 </span> <a
+ id="sec:plurals"></a>Plurals</h3>
+<!--l. 5019--><p class="noindent" >You may have noticed from above that you can specify the plural form when you define a
+term. If you omit this, the plural will be obtained by appending
+</p><!--l. 5022--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspluralsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35001"></a> <span
+class="cmtt-10">\glspluralsuffix </span></div><hr>
+</p><!--l. 5024--><p class="noindent" >
+to the singular form. This command defaults to the letter &#8220;s&#8221;. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-141">
+\newglossaryentry{cow}{name=cow,description={a&#x00A0;fully&#x00A0;grown
+&#x00A0;<br />female&#x00A0;of&#x00A0;any&#x00A0;bovine&#x00A0;animal}}
+</div>
+<!--l. 5030--><p class="nopar" > defines a new entry whose singular form is &#8220;cow&#8221; and plural form is &#8220;cows&#8221;. However, if you
+are writing in archaic English, you may want to use &#8220;kine&#8221; as the plural form, in which case
+you would have to do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-142">
+\newglossaryentry{cow}{name=cow,plural=kine,
+&#x00A0;<br />description={a&#x00A0;fully&#x00A0;grown&#x00A0;female&#x00A0;of&#x00A0;any&#x00A0;bovine&#x00A0;animal}}
+</div>
+<!--l. 5038--><p class="nopar" >
+</p><!--l. 5040--><p class="indent" > If you are writing in a language that supports multiple plurals (for a given term) then use
+the <span
+class="cmss-10">plural</span><a
+ id="dx1-35002"></a> key for one of them and one of the user keys to specify the other plural form. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-143">
+\newglossaryentry{cow}{%
+&#x00A0;<br />&#x00A0;&#x00A0;name=cow,%
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;fully&#x00A0;grown&#x00A0;female&#x00A0;of&#x00A0;any&#x00A0;bovine&#x00A0;animal
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(plural&#x00A0;cows,&#x00A0;archaic&#x00A0;plural&#x00A0;kine)},%
+&#x00A0;<br />&#x00A0;&#x00A0;user1={kine}}
+</div>
+<!--l. 5050--><p class="nopar" > You can then use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspl{cow}</span></span></span> to produce &#8220;cows&#8221; and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuseri{cow}</span></span></span> to produce &#8220;kine&#8221;.
+You can, of course, define an easy to remember synonym. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-144">
+\let\glsaltpl\glsuseri
+</div>
+<!--l. 5056--><p class="nopar" > Then you don&#8217;t have to remember which key you used to store the second plural.
+Alternatively, you can define your own keys using <span
+class="cmtt-10">\glsaddkey</span><a
+ id="dx1-35003"></a>, described in <a
+href="#sec:addkey"><span
+class="tcrm-1000">&sect;</span>4.3 </a><a
+href="#sec:addkey">Additional
+Keys<!--tex4ht:ref: sec:addkey --></a>.
+</p><!--l. 5061--><p class="indent" > If you are using a language that usually forms plurals by appending a different letter, or
+sequence of letters, you can redefine <span
+class="cmtt-10">\glspluralsuffix </span>as required. However, this must be
+done <span
+class="cmti-10">before </span>the entries are defined. For languages that don&#8217;t form plurals by simply
+appending a suffix, all the plural forms must be specified using the <span
+class="cmss-10">plural</span><a
+ id="dx1-35004"></a> key (and the
+<span
+class="cmss-10">firstplural</span><a
+ id="dx1-35005"></a> key where necessary).
+</p><!--l. 5069--><p class="noindent" >
+</p>
+<!--l. 5069--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.2 </span> <a
+ id="sec:grammar"></a>Other Grammatical Constructs</h3>
+<!--l. 5072--><p class="noindent" >You can use the six user keys to provide alternatives, such as participles. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-145">
+\let\glsing\glsuseri
+&#x00A0;<br />\let\glsd\glsuserii
+&#x00A0;<br />\newcommand*{\ingkey}{user1}
+&#x00A0;<br />\newcommand*{\edkey}{user2}
+&#x00A0;<br />\newcommand*{\newword}[3][]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\newglossaryentry{#2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={#2},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={#3},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\edkey={#2ed},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\ingkey={#2ing},#1%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+</div>
+<!--l. 5089--><p class="nopar" > With the above definitions, I can now define terms like this:
+
+
+</p>
+ <div class="verbatim" id="verbatim-146">
+\newword{play}{to&#x00A0;take&#x00A0;part&#x00A0;in&#x00A0;activities&#x00A0;for&#x00A0;enjoyment}
+&#x00A0;<br />\newword[\edkey={ran},\ingkey={running}]{run}{to&#x00A0;move&#x00A0;fast&#x00A0;using
+&#x00A0;<br />the&#x00A0;legs}
+</div>
+<!--l. 5095--><p class="nopar" > and use them in the text:
+
+
+</p>
+ <div class="verbatim" id="verbatim-147">
+Peter&#x00A0;is&#x00A0;\glsing{play}&#x00A0;in&#x00A0;the&#x00A0;park&#x00A0;today.
+&#x00A0;<br />Jane&#x00A0;\glsd{play}&#x00A0;in&#x00A0;the&#x00A0;park&#x00A0;yesterday.
+&#x00A0;<br />Peter&#x00A0;and&#x00A0;Jane&#x00A0;\glsd{run}&#x00A0;in&#x00A0;the&#x00A0;park&#x00A0;last&#x00A0;week.
+</div>
+<!--l. 5103--><p class="nopar" >
+</p><!--l. 5105--><p class="indent" > Alternatively, you can define your own keys using <span
+class="cmtt-10">\glsaddkey</span><a
+ id="dx1-36001"></a>, described below in <a
+href="#sec:addkey"><span
+class="tcrm-1000">&sect;</span>4.3
+</a><a
+href="#sec:addkey">Additional Keys<!--tex4ht:ref: sec:addkey --></a>.
+</p><!--l. 5108--><p class="noindent" >
+</p>
+<!--l. 5108--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.3 </span> <a
+ id="sec:addkey"></a>Additional Keys</h3>
+<!--l. 5111--><p class="noindent" >You can now also define your own custom keys using the commands described in this section.
+There are two types of keys: those for use within the document and those to store information
+used behind the scenes by other commands.
+</p><!--l. 5116--><p class="indent" > For example, if you want to add a key that indicates the associated unit for a&#x00A0;term, you
+might want to reference this unit in your document. In this case use <span
+class="cmtt-10">\glsaddkey </span>described in
+<a
+href="#sec:glsaddkey"><span
+class="tcrm-1000">&sect;</span>4.3.1 </a><a
+href="#sec:glsaddkey">Document Keys<!--tex4ht:ref: sec:glsaddkey --></a>. If, on the other hand, you want to add a key to indicate to a
+glossary style or acronym style that this entry should be formatted differently to
+other entries, then you can use <span
+class="cmtt-10">\glsaddstoragekey </span>described in <a
+href="#sec:glsaddstoragekey"><span
+class="tcrm-1000">&sect;</span>4.3.2 </a><a
+href="#sec:glsaddstoragekey">Storage
+Keys<!--tex4ht:ref: sec:glsaddstoragekey --></a>.
+</p><!--l. 5124--><p class="indent" > In both cases, a new command &#x27E8;<span
+class="cmti-10">no link cs</span>&#x27E9; will be defined that can be used to access the
+value of this key (analogous to commands such as <span
+class="cmtt-10">\glsentrytext</span>). This can be used in an
+expandable context (provided any fragile commands stored in the key have been protected).
+The new keys must be added using <span
+class="cmtt-10">\glsaddkey </span>or <span
+class="cmtt-10">\glsaddstoragekey </span>before glossary
+entries are defined.
+</p><!--l. 5131--><p class="noindent" >
+</p>
+<!--l. 5131--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">4.3.1 </span> <a
+ id="sec:glsaddkey"></a>Document Keys</h4>
+<!--l. 5134--><p class="noindent" >A custom key that can be used in the document is defined using:
+</p><!--l. 5135--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddkey</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-38001"></a> <span
+class="cmtt-10">\glsaddkey{</span>&#x27E8;<span
+class="cmitt-10">key</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">default value</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">no link cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">no link ucfirst cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">link cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">link ucfirst cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">link allcaps cs</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5143--><p class="noindent" >
+where:
+ </p><dl class="description"><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">key</span>&#x27E9; </dt><dd
+class="description">is the new key to use in <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-38002"></a> (or similar commands such as
+ <span
+class="cmtt-10">\longnewglossaryentry</span><a
+ id="dx1-38003"></a>);
+
+
+ </dd><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">default value</span>&#x27E9; </dt><dd
+class="description">is the default value to use if this key isn&#8217;t used in an entry definition
+ (this may reference the current entry label via <span
+class="cmtt-10">\glslabel</span>, but you will have to
+ switch on expansion via the starred version of <span
+class="cmtt-10">\glsaddkey </span>and protect fragile
+ commands);
+ </dd><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">no link cs</span>&#x27E9; </dt><dd
+class="description">is the control sequence to use analogous to commands like <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-38004"></a>;
+ </dd><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">no link ucfirst cs</span>&#x27E9; </dt><dd
+class="description">is the control sequence to use analogous to commands like
+ <span
+class="cmtt-10">\Glsentrytext</span><a
+ id="dx1-38005"></a>;
+ </dd><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">link cs</span>&#x27E9; </dt><dd
+class="description">is the control sequence to use analogous to commands like <span
+class="cmtt-10">\glstext</span><a
+ id="dx1-38006"></a>;
+ </dd><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">link ucfirst cs</span>&#x27E9; </dt><dd
+class="description">is the control sequence to use analogous to commands like <span
+class="cmtt-10">\Glstext</span><a
+ id="dx1-38007"></a>;
+ </dd><dt class="description">
+&#x27E8;<span
+class="cmbxti-10">link allcaps cs</span>&#x27E9; </dt><dd
+class="description">is the control sequence to use analogous to commands like <span
+class="cmtt-10">\GLStext</span><a
+ id="dx1-38008"></a>.</dd></dl>
+<!--l. 5164--><p class="noindent" >The starred version of <span
+class="cmtt-10">\glsaddkey </span>switches on expansion for this key. The unstarred version
+doesn&#8217;t override the current expansion setting.
+<a
+ id="x1-38009r3"></a>
+</p><!--l. 5168--><p class="noindent" ><span
+class="cmbx-12">Example 3</span><span
+class="cmbx-12">&#x00A0;(Defining Custom Keys)</span><a
+ id="x1-38010"></a>
+</p><!--l. 5169--><p class="indent" > Suppose I want to define two new keys, <span
+class="cmtt-10">ed </span>and <span
+class="cmtt-10">ing</span>, that default to the entry text followed
+by &#8220;ed&#8221; and &#8220;ing&#8221;, respectively. The default value will need expanding in both cases, so I
+need to use the starred form:
+
+
+</p>
+ <div class="verbatim" id="verbatim-148">
+&#x00A0;%&#x00A0;Define&#x00A0;"ed"&#x00A0;key:
+&#x00A0;<br />&#x00A0;\glsaddkey*
+&#x00A0;<br />&#x00A0;&#x00A0;{ed}%&#x00A0;key
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsentrytext{\glslabel}ed}%&#x00A0;default&#x00A0;value
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsentryed}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\glsentrytext
+&#x00A0;<br />&#x00A0;&#x00A0;{\Glsentryed}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\Glsentrytext
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsed}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\glstext
+&#x00A0;<br />&#x00A0;&#x00A0;{\Glsed}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\Glstext
+&#x00A0;<br />&#x00A0;&#x00A0;{\GLSed}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\GLStext
+&#x00A0;<br />&#x00A0;%&#x00A0;Define&#x00A0;"ing"&#x00A0;key:
+&#x00A0;<br />&#x00A0;\glsaddkey*
+&#x00A0;<br />&#x00A0;&#x00A0;{ing}%&#x00A0;key
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsentrytext{\glslabel}ing}%&#x00A0;default&#x00A0;value
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsentrying}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\glsentrytext
+&#x00A0;<br />&#x00A0;&#x00A0;{\Glsentrying}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\Glsentrytext
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsing}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\glstext
+&#x00A0;<br />&#x00A0;&#x00A0;{\Glsing}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\Glstext
+&#x00A0;<br />&#x00A0;&#x00A0;{\GLSing}%&#x00A0;command&#x00A0;analogous&#x00A0;to&#x00A0;\GLStext
+</div>
+<!--l. 5193--><p class="nopar" > Now I can define some entries:
+
+
+</p>
+ <div class="verbatim" id="verbatim-149">
+&#x00A0;%&#x00A0;No&#x00A0;need&#x00A0;to&#x00A0;override&#x00A0;defaults&#x00A0;for&#x00A0;this&#x00A0;entry:
+&#x00A0;<br />&#x00A0;\newglossaryentry{jump}{name={jump},description={}}
+&#x00A0;<br />&#x00A0;%&#x00A0;Need&#x00A0;to&#x00A0;override&#x00A0;defaults&#x00A0;on&#x00A0;these&#x00A0;entries:
+&#x00A0;<br />&#x00A0;\newglossaryentry{run}{name={run},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;ed={ran},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;ing={running},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{waddle}{name={waddle},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;ed={waddled},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;ing={waddling},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={}}
+</div>
+<!--l. 5211--><p class="nopar" >
+</p><!--l. 5213--><p class="indent" > These entries can later be used in the document:
+
+
+</p>
+ <div class="verbatim" id="verbatim-150">
+The&#x00A0;dog&#x00A0;\glsed{jump}&#x00A0;over&#x00A0;the&#x00A0;duck.
+&#x00A0;<br />The&#x00A0;duck&#x00A0;was&#x00A0;\glsing{waddle}&#x00A0;round&#x00A0;the&#x00A0;dog.
+&#x00A0;<br />The&#x00A0;dog&#x00A0;\glsed{run}&#x00A0;away&#x00A0;from&#x00A0;the&#x00A0;duck.
+</div>
+<!--l. 5220--><p class="nopar" > For a complete document, see the sample file <a
+href="#x1-11103r29"><span
+class="cmtt-10">sample-newkeys.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 5222--><p class="noindent" >
+</p><!--l. 5222--><p class="noindent" >____________________________</p></div>
+<!--l. 5224--><p class="noindent" >
+</p>
+<!--l. 5224--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">4.3.2 </span> <a
+ id="sec:glsaddstoragekey"></a>Storage Keys</h4>
+<!--l. 5227--><p class="noindent" >A custom key that can be used for simply storing information is defined using:
+</p><!--l. 5229--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddstoragekey</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-39001"></a> <span
+class="cmtt-10">\glsaddstoragekey{</span>&#x27E8;<span
+class="cmitt-10">key</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">default value</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">no link cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 5231--><p class="noindent" >
+where the arguments are as the first three arguments of <span
+class="cmtt-10">\glsaddkey</span>, described above in
+<a
+href="#sec:glsaddkey"><span
+class="tcrm-1000">&sect;</span>4.3.1 </a><a
+href="#sec:glsaddkey">Document Keys<!--tex4ht:ref: sec:glsaddkey --></a>.
+</p><!--l. 5235--><p class="indent" > This is essentially the same as <span
+class="cmtt-10">\glsaddkey </span>except that it doesn&#8217;t define the additional
+commands. You can access or update the value of your new field using the commands
+described in <a
+href="#sec:fetchset"><span
+class="tcrm-1000">&sect;</span>16.3 </a><a
+href="#sec:fetchset">Fetching and Updating the Value of a Field<!--tex4ht:ref: sec:fetchset --></a>.
+<a
+ id="x1-39002r4"></a>
+</p><!--l. 5240--><p class="noindent" ><span
+class="cmbx-12">Example 4</span><span
+class="cmbx-12">&#x00A0;(Defining Custom Storage Key (Acronyms and</span>
+<span
+class="cmbx-12">Initialisms))</span><a
+ id="x1-39003"></a>
+</p><!--l. 5241--><p class="indent" > Suppose I want to define acronyms and other forms of abbreviations, such as initialisms,
+but I want them all in the same glossary and I want the acronyms on first use to be displayed
+with the short form followed by the long form in parentheses, but the opposite way round for
+other forms of abbreviations. (The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package provides a simpler way of achieving
+this.)
+</p><!--l. 5248--><p class="indent" > Here I can define a new key that determines whether the term is actually an acronym
+rather than some other form of abbreviation. I&#8217;m going to call this key <span
+class="cmtt-10">abbrtype </span>(since <span
+class="cmtt-10">type</span>
+already exists):
+
+
+</p>
+ <div class="verbatim" id="verbatim-151">
+\glsaddstoragekey
+&#x00A0;<br />&#x00A0;{abbrtype}%&#x00A0;key/field&#x00A0;name
+&#x00A0;<br />&#x00A0;{word}%&#x00A0;default&#x00A0;value&#x00A0;if&#x00A0;not&#x00A0;explicitly&#x00A0;set
+&#x00A0;<br />&#x00A0;{\abbrtype}%&#x00A0;custom&#x00A0;command&#x00A0;to&#x00A0;access&#x00A0;the&#x00A0;value&#x00A0;if&#x00A0;required
+</div>
+<!--l. 5257--><p class="nopar" >
+</p><!--l. 5259--><p class="indent" > Now I can define a style that looks up the value of this new key to determine how to
+display the full form:
+
+
+</p>
+ <div class="verbatim" id="verbatim-152">
+\newacronymstyle
+&#x00A0;<br />&#x00A0;{mystyle}%&#x00A0;style&#x00A0;name
+&#x00A0;<br />&#x00A0;{%&#x00A0;Use&#x00A0;the&#x00A0;generic&#x00A0;display
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+&#x00A0;<br />&#x00A0;}
+&#x00A0;<br />&#x00A0;{%&#x00A0;Put&#x00A0;the&#x00A0;long&#x00A0;form&#x00A0;in&#x00A0;the&#x00A0;description
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\GenericAcronymFields}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;description={\the\glslongtok}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;%&#x00A0;For&#x00A0;the&#x00A0;full&#x00A0;format,&#x00A0;test&#x00A0;the&#x00A0;value&#x00A0;of&#x00A0;the&#x00A0;"abbrtype"&#x00A0;key.
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;%&#x00A0;If&#x00A0;it's&#x00A0;set&#x00A0;to&#x00A0;"word"&#x00A0;put&#x00A0;the&#x00A0;short&#x00A0;form&#x00A0;first&#x00A0;with
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;%&#x00A0;the&#x00A0;long&#x00A0;form&#x00A0;in&#x00A0;brackets.
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsfieldeq{##1}{abbrtype}{word}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;a&#x00A0;proper&#x00A0;acronym
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\protect\firstacronymfont{\glsentryshort{##1}}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\glsentrylong{##1})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;another&#x00A0;form&#x00A0;of&#x00A0;abbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\protect\firstacronymfont{\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;first&#x00A0;letter&#x00A0;upper&#x00A0;case&#x00A0;version:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\Genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsfieldeq{##1}{abbrtype}{word}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;a&#x00A0;proper&#x00A0;acronym
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\glsentrylong{##1})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;another&#x00A0;form&#x00A0;of&#x00A0;abbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\protect\firstacronymfont{\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;plural
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsfieldeq{##1}{abbrtype}{word}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;a&#x00A0;proper&#x00A0;acronym
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\glsentrylong{##1})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;another&#x00A0;form&#x00A0;of&#x00A0;abbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\protect\firstacronymfont{\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+
+
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;plural&#x00A0;and&#x00A0;first&#x00A0;letter&#x00A0;upper&#x00A0;case
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsfieldeq{##1}{abbrtype}{word}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;a&#x00A0;proper&#x00A0;acronym
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\glsentrylong{##1})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%&#x00A0;is&#x00A0;another&#x00A0;form&#x00A0;of&#x00A0;abbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylongpl{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\protect\firstacronymfont{\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Just&#x00A0;use&#x00A0;the&#x00A0;short&#x00A0;form&#x00A0;as&#x00A0;the&#x00A0;name&#x00A0;part&#x00A0;in&#x00A0;the&#x00A0;glossary:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymentry}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\acronymfont{\glsentryshort{##1}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Sort&#x00A0;by&#x00A0;the&#x00A0;short&#x00A0;form:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymsort}[2]{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Just&#x00A0;use&#x00A0;the&#x00A0;surrounding&#x00A0;font&#x00A0;for&#x00A0;the&#x00A0;short&#x00A0;form:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymfont}[1]{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Same&#x00A0;for&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Default&#x00A0;plural&#x00A0;suffix&#x00A0;if&#x00A0;the&#x00A0;plural&#x00A0;isn't&#x00A0;explicitly&#x00A0;set
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 5332--><p class="nopar" > Remember that the new style needs to be set before defining any terms:
+
+
+</p>
+ <div class="verbatim" id="verbatim-153">
+\setacronymstyle{mystyle}
+</div>
+<!--l. 5337--><p class="nopar" >
+</p><!--l. 5339--><p class="indent" > Since it&#8217;s a bit confusing to use <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-39004"></a> for something that&#8217;s not technically an
+acronym, let&#8217;s define a new command for initialisms:
+
+
+</p>
+ <div class="verbatim" id="verbatim-154">
+\newcommand*{\newinitialism}[4][]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\newacronym[abbrtype=initialism,#1]{#2}{#3}{#4}%
+&#x00A0;<br />}
+</div>
+<!--l. 5346--><p class="nopar" > Now the entries can all be defined:
+
+
+</p>
+ <div class="verbatim" id="verbatim-155">
+\newacronym{radar}{radar}{radio&#x00A0;detecting&#x00A0;and&#x00A0;ranging}
+&#x00A0;<br />\newacronym{laser}{laser}{light&#x00A0;amplification&#x00A0;by&#x00A0;stimulated
+&#x00A0;<br />emission&#x00A0;of&#x00A0;radiation}
+&#x00A0;<br />\newacronym{scuba}{scuba}{self-contained&#x00A0;underwater&#x00A0;breathing
+&#x00A0;<br />apparatus}
+&#x00A0;<br />\newinitialism{dsp}{DSP}{digital&#x00A0;signal&#x00A0;processing}
+&#x00A0;<br />\newinitialism{atm}{ATM}{automated&#x00A0;teller&#x00A0;machine}
+</div>
+<!--l. 5356--><p class="nopar" > On <a
+href="#glo:firstuse">first use</a>, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{radar}</span></span></span> will produce &#8220;radar (radio detecting and ranging)&#8221; but <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{dsp}</span></span></span>
+will produce &#8220;DSP (digital signal processing)&#8221;.
+</p><!--l. 5361--><p class="indent" > For a complete document, see the sample file <a
+href="#x1-11104r30"><span
+class="cmtt-10">sample-storage-abbr.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 5363--><p class="noindent" >
+</p><!--l. 5363--><p class="noindent" >____________________________</p></div>
+<!--l. 5365--><p class="indent" > In the above example, if <span
+class="cmtt-10">\newglossaryentry </span>is explicitly used (instead of through
+<span
+class="cmtt-10">\newacronym</span>) the <span
+class="cmtt-10">abbrtype </span>key will be set to its default value of &#8220;word&#8221; but the
+<span
+class="cmtt-10">\ifglshaslong </span>test in the custom acronym style will be false (since the <span
+class="cmss-10">long</span><a
+ id="dx1-39005"></a> key hasn&#8217;t been
+set) so the display style will switch to that given by <span
+class="cmtt-10">\glsgenentryfmt </span>and they&#8217;ll be no test
+performed on the <span
+class="cmtt-10">abbrtype </span>field.
+<a
+ id="x1-39006r5"></a>
+</p><!--l. 5374--><p class="noindent" ><span
+class="cmbx-12">Example 5</span><span
+class="cmbx-12">&#x00A0;(Defining Custom Storage Key (Acronyms and</span>
+<span
+class="cmbx-12">Non-Acronyms with Descriptions))</span><a
+ id="x1-39007"></a>
+</p><!--l. 5375--><p class="indent" > The previous example can be modified if the <span
+class="cmss-10">description</span><a
+ id="dx1-39008"></a> also needs to be provided. Here
+I&#8217;ve changed &#8220;word&#8221; to &#8220;acronym&#8221;:
+
+
+</p>
+ <div class="verbatim" id="verbatim-156">
+\glsaddstoragekey
+&#x00A0;<br />&#x00A0;{abbrtype}%&#x00A0;key/field&#x00A0;name
+&#x00A0;<br />&#x00A0;{acronym}%&#x00A0;default&#x00A0;value&#x00A0;if&#x00A0;not&#x00A0;explicitly&#x00A0;set
+&#x00A0;<br />&#x00A0;{\abbrtype}%&#x00A0;custom&#x00A0;command&#x00A0;to&#x00A0;access&#x00A0;the&#x00A0;value&#x00A0;if&#x00A0;required
+</div>
+<!--l. 5383--><p class="nopar" > This may seem a little odd for non-abbreviated entries defined using <span
+class="cmtt-10">\newglossaryentry</span>
+directly, but <span
+class="cmtt-10">\ifglshaslong</span><a
+ id="dx1-39009"></a> can be used to determine whether or not to reference the value
+of this new <span
+class="cmtt-10">abbrtype </span>field.
+</p><!--l. 5389--><p class="indent" > The new acronym style has a&#x00A0;minor modification that forces the user to specify a
+description. In the previous example, the line:
+
+
+</p>
+ <div class="verbatim" id="verbatim-157">
+&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\GenericAcronymFields}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;description={\the\glslongtok}}%
+</div>
+<!--l. 5394--><p class="nopar" > needs to be changed to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-158">
+&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\GenericAcronymFields}{}%
+</div>
+<!--l. 5398--><p class="nopar" > Additionally, to accommodate the change in the default value of the <span
+class="cmtt-10">abbrtype </span>key, all
+instances of
+
+
+</p>
+ <div class="verbatim" id="verbatim-159">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsfieldeq{##1}{abbrtype}{word}
+</div>
+<!--l. 5403--><p class="nopar" > need to be changed to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-160">
+&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsfieldeq{##1}{abbrtype}{acronym}
+</div>
+<!--l. 5407--><p class="nopar" >
+</p><!--l. 5409--><p class="indent" > Once this new style has been set, the new acronyms can be defined using the optional
+argument to set the description:
+
+
+</p>
+ <div class="verbatim" id="verbatim-161">
+\newacronym[description={system&#x00A0;for&#x00A0;detecting&#x00A0;the&#x00A0;position&#x00A0;and
+&#x00A0;<br />speed&#x00A0;of&#x00A0;aircraft,&#x00A0;ships,&#x00A0;etc}]{radar}{radar}{radio&#x00A0;detecting
+&#x00A0;<br />and&#x00A0;ranging}
+</div>
+<!--l. 5415--><p class="nopar" >
+</p><!--l. 5417--><p class="indent" > No change is required for the definition of <span
+class="cmtt-10">\newinitialism </span>but again the optional
+argument is required to set the description:
+
+
+</p>
+ <div class="verbatim" id="verbatim-162">
+\newinitialism[description={mathematical&#x00A0;manipulation&#x00A0;of&#x00A0;an
+&#x00A0;<br />information&#x00A0;signal}]{dsp}{DSP}{digital&#x00A0;signal&#x00A0;processing}
+</div>
+<!--l. 5422--><p class="nopar" >
+</p><!--l. 5424--><p class="indent" > We can also accommodate contractions in a similar manner to the initialisms:
+
+
+</p>
+ <div class="verbatim" id="verbatim-163">
+\newcommand*{\newcontraction}[4][]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\newacronym[abbrtype=contraction,#1]{#2}{#3}{#4}%
+&#x00A0;<br />}
+</div>
+<!--l. 5430--><p class="nopar" > The contractions can similarly been defined using this new command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-164">
+\newcontraction[description={front&#x00A0;part&#x00A0;of&#x00A0;a&#x00A0;ship&#x00A0;below&#x00A0;the
+&#x00A0;<br />deck}]{focsle}{fo'c's'le}{forecastle}
+</div>
+<!--l. 5435--><p class="nopar" >
+</p><!--l. 5437--><p class="indent" > Since the custom acronym style just checks if <span
+class="cmtt-10">abbrtype </span>is <span
+class="cmtt-10">acronym</span>, the contractions will
+be treated the same as the initialisms, but the style could be modified by a further test of the
+<span
+class="cmtt-10">abbrtype </span>value if required.
+</p><!--l. 5442--><p class="indent" > To test regular non-abbreviated entries, I&#8217;ve also defined a simple word:
+
+
+</p>
+ <div class="verbatim" id="verbatim-165">
+\newglossaryentry{apple}{name={apple},description={a&#x00A0;fruit}}
+</div>
+<!--l. 5446--><p class="nopar" >
+</p><!--l. 5448--><p class="indent" > Now for a new glossary style that provides information about the abbreviation (in
+addition to the description):
+
+
+</p>
+ <div class="verbatim" id="verbatim-166">
+\newglossarystyle
+&#x00A0;<br />&#x00A0;{mystyle}%&#x00A0;style&#x00A0;name
+&#x00A0;<br />&#x00A0;{%&#x00A0;base&#x00A0;it&#x00A0;on&#x00A0;the&#x00A0;"list"&#x00A0;style
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\setglossarystyle{list}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glossentry}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\item[\glsentryitem{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glstarget{##1}{\glossentryname{##1}}]
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglshaslong{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{&#x00A0;(\abbrtype{##1}:&#x00A0;\glsentrylong{##1})\space}{}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossentrydesc{##1}\glspostdescription\space&#x00A0;##2}%
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 5462--><p class="nopar" > This uses <span
+class="cmtt-10">\ifglshaslong</span><a
+ id="dx1-39010"></a> to determine whether or not the term is an abbreviation. If it has
+an abbreviation, the full form is supplied in parentheses and <span
+class="cmtt-10">\abbrtype </span>(defined by
+<span
+class="cmtt-10">\glsaddstoragekey </span>earlier) is used to indicate the type of abbreviation.
+</p><!--l. 5469--><p class="indent" > With this style set, the <span
+class="cmtt-10">apple </span>entry is simply displayed in the glossary as
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">apple</span> </dt><dd
+class="description">a fruit.</dd></dl>
+<!--l. 5474--><p class="noindent" >but the abbreviations are displayed in the form
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">laser</span> </dt><dd
+class="description">(acronym: light amplification by stimulated emission of radiation) device that
+ creates a narrow beam of intense light.</dd></dl>
+<!--l. 5480--><p class="noindent" >(for acronyms) or
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">DSP</span> </dt><dd
+class="description">(initialism: digital signal processing) mathematical manipulation of an
+ information signal.</dd></dl>
+<!--l. 5485--><p class="noindent" >(for initalisms) or
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">fo&#8217;c&#8217;s&#8217;le</span> </dt><dd
+class="description">(contraction: forecastle) front part of a ship below the deck.</dd></dl>
+<!--l. 5490--><p class="noindent" >(for contractions).
+</p><!--l. 5492--><p class="indent" > For a complete document, see <a
+href="#x1-11105r31"><span
+class="cmtt-10">sample-storage-abbr-desc.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 5493--><p class="noindent" >
+</p><!--l. 5493--><p class="noindent" >____________________________</p></div>
+
+
+<!--l. 5495--><p class="noindent" >
+</p>
+<!--l. 5495--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.4 </span> <a
+ id="sec:expansion"></a>Expansion</h3>
+<!--l. 5498--><p class="noindent" >When you define new glossary entries expansion is performed by default, except for the <span
+class="cmss-10">name</span><a
+ id="dx1-40001"></a>,
+<span
+class="cmss-10">description</span><a
+ id="dx1-40002"></a>, <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-40003"></a>, <span
+class="cmss-10">symbol</span><a
+ id="dx1-40004"></a>, <span
+class="cmss-10">symbolplural</span><a
+ id="dx1-40005"></a> and <span
+class="cmss-10">sort</span><a
+ id="dx1-40006"></a> keys (these keys all have expansion
+suppressed via <span
+class="cmtt-10">\glssetnoexpandfield</span>).
+</p><!--l. 5504--><p class="indent" > You can switch expansion on or off for individual keys using
+</p><!--l. 5505--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssetexpandfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-40007"></a> <span
+class="cmtt-10">\glssetexpandfield{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5507--><p class="noindent" >
+or
+</p><!--l. 5509--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssetnoexpandfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-40008"></a> <span
+class="cmtt-10">\glssetnoexpandfield{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5511--><p class="noindent" >
+respectively, where &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; is the field tag corresponding to the key. In most cases, this is the
+same as the name of the key except for those listed in <a
+href="#tab:fieldmap">table&#x00A0;4.1</a>.
+</p>
+ <div class="table">
+
+
+<!--l. 5516--><p class="indent" > <a
+ id="tab:fieldmap"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;4.1: </span><span
+class="content">Key to Field Mappings</span></div><!--tex4ht:label?: x1-400091 -->
+<div class="tabular"> <table id="TBL-5" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-5-1g"><col
+id="TBL-5-1" /><col
+id="TBL-5-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-5-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-1"
+class="td11"> <span
+class="cmbx-10">Key </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-5-1-2"
+class="td11"> <span
+class="cmbx-10">Field </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-1"
+class="td11"> <span
+class="cmss-10">sort</span><a
+ id="dx1-40010"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-2-2"
+class="td11"> <span
+class="cmtt-10">sortvalue </span></td></tr><tr
+ style="vertical-align:baseline;" id="TBL-5-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-1"
+class="td11"> <span
+class="cmss-10">firstplural</span><a
+ id="dx1-40011"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-3-2"
+class="td11"> <span
+class="cmtt-10">firstpl</span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-1"
+class="td11"> <span
+class="cmss-10">description</span><a
+ id="dx1-40012"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-4-2"
+class="td11"> <span
+class="cmtt-10">desc </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-1"
+class="td11"> <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-40013"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-5-2"
+class="td11"> <span
+class="cmtt-10">descplural </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-1"
+class="td11"> <span
+class="cmss-10">user1</span><a
+ id="dx1-40014"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-6-2"
+class="td11"> <span
+class="cmtt-10">useri </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-1"
+class="td11"> <span
+class="cmss-10">user2</span><a
+ id="dx1-40015"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-7-2"
+class="td11"> <span
+class="cmtt-10">userii </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-8-1"
+class="td11"> <span
+class="cmss-10">user3</span><a
+ id="dx1-40016"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-8-2"
+class="td11"> <span
+class="cmtt-10">useriii </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-9-1"
+class="td11"> <span
+class="cmss-10">user4</span><a
+ id="dx1-40017"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-9-2"
+class="td11"> <span
+class="cmtt-10">useriv </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-10-1"
+class="td11"> <span
+class="cmss-10">user5</span><a
+ id="dx1-40018"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-10-2"
+class="td11"> <span
+class="cmtt-10">userv </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-11-1"
+class="td11"> <span
+class="cmss-10">user6</span><a
+ id="dx1-40019"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-11-2"
+class="td11"> <span
+class="cmtt-10">uservi </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-12-1"
+class="td11"> <span
+class="cmss-10">longplural</span><a
+ id="dx1-40020"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-12-2"
+class="td11"> <span
+class="cmtt-10">longpl </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-5-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-5-13-1"
+class="td11"> <span
+class="cmss-10">shortplural</span><a
+ id="dx1-40021"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-5-13-2"
+class="td11"> <span
+class="cmtt-10">shortpl </span></td></tr></table>
+</div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 5537--><p class="indent" > Any keys that haven&#8217;t had the expansion explicitly set using <span
+class="cmtt-10">\glssetexpandfield </span>or
+<span
+class="cmtt-10">\glssetnoexpandfield </span>are governed by
+</p><!--l. 5539--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsexpandfields</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-40022"></a> <span
+class="cmtt-10">\glsexpandfields </span></div><hr>
+</p><!--l. 5541--><p class="noindent" >
+and
+</p><!--l. 5543--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnoexpandfields</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-40023"></a> <span
+class="cmtt-10">\glsnoexpandfields </span></div><hr>
+</p><!--l. 5545--><p class="noindent" >
+</p><!--l. 5547--><p class="indent" > If your entries contain any fragile commands, I recommend you switch off expansion via
+<span
+class="cmtt-10">\glsnoexpandfields</span>. (This should be used before you define the entries.)
+</p>
+<!--l. 5551--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.5 </span> <a
+ id="sec:subentries"></a>Sub-Entries</h3>
+<!--l. 5554--><p class="noindent" >As from version 1.17, it is possible to specify sub-entries. These may be used to order the
+glossary into categories, in which case the sub-entry will have a different name to its parent
+entry, or it may be used to distinguish different definitions for the same word, in which
+case the sub-entries will have the same name as the parent entry. Note that not all
+glossary styles support hierarchical entries and may display all the entries in a
+flat format. Of the styles that support sub-entries, some display the sub-entry&#8217;s
+name whilst others don&#8217;t. Therefore you need to ensure that you use a suitable
+style. (See <a
+href="#sec:styles"><span
+class="tcrm-1000">&sect;</span>15 </a><a
+href="#sec:styles">Glossary Styles<!--tex4ht:ref: sec:styles --></a> for a list of predefined styles.) As from version 3.0,
+level&#x00A0;1 sub-entries are automatically numbered in the predefined styles if you use the
+<span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-41001"></a> package option (see <a
+href="#sec:pkgopts-printglos"><span
+class="tcrm-1000">&sect;</span>2.3 </a><a
+href="#sec:pkgopts-printglos">Glossary Appearance Options<!--tex4ht:ref: sec:pkgopts-printglos --></a> for further
+details).
+</p><!--l. 5569--><p class="indent" > Note that the parent entry will automatically be added to the glossary if any of its child
+entries are used in the document. If the parent entry is not referenced in the document, it will
+not have a <a
+href="#glo:numberlist">number list<a
+ id="dx1-41002"></a></a>. Note also that <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-41003"></a></a> has a restriction on the maximum
+sub-entry depth.
+</p><!--l. 5575--><p class="noindent" >
+</p>
+<!--l. 5575--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">4.5.1 </span> <a
+ id="sec:hierarchical"></a>Hierarchical Categories</h4>
+<!--l. 5578--><p class="noindent" >To arrange a glossary with hierarchical categories, you need to first define the category and
+then define the sub-entries using the relevant category entry as the value of the <span
+class="cmss-10">parent</span><a
+ id="dx1-42001"></a>
+key.
+<a
+ id="x1-42002r6"></a>
+</p><!--l. 5583--><p class="noindent" ><span
+class="cmbx-12">Example 6</span><span
+class="cmbx-12">&#x00A0;(Hierarchical Categories&#8212;Greek and Roman Mathematical</span>
+<span
+class="cmbx-12">Symbols)</span><a
+ id="x1-42003"></a>
+</p><!--l. 5585--><p class="indent" > Suppose I want a glossary of mathematical symbols that are divided into Greek letters
+
+
+and Roman letters. Then I can define the categories as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-167">
+\newglossaryentry{greekletter}{name={Greek&#x00A0;letters},
+&#x00A0;<br />description={\nopostdesc}}
+&#x00A0;<br />\newglossaryentry{romanletter}{name={Roman&#x00A0;letters},
+&#x00A0;<br />description={\nopostdesc}}
+</div>
+<!--l. 5594--><p class="nopar" >
+</p><!--l. 5596--><p class="indent" > Note that in this example, the category entries don&#8217;t need a description so I have set the
+descriptions to <span
+class="cmtt-10">\nopostdesc</span><a
+ id="dx1-42004"></a>. This gives a blank description and suppresses the description
+terminator.
+</p><!--l. 5601--><p class="indent" > I can now define my sub-entries as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-168">
+\newglossaryentry{pi}{name={\ensuremath{\pi}},sort={pi},
+&#x00A0;<br />description={ratio&#x00A0;of&#x00A0;the&#x00A0;circumference&#x00A0;of&#x00A0;a&#x00A0;circle&#x00A0;to
+&#x00A0;<br />the&#x00A0;diameter},
+&#x00A0;<br />parent=greekletter}
+&#x00A0;<br />\newglossaryentry{C}{name={\ensuremath{C}},sort={C},
+&#x00A0;<br />description={Euler's&#x00A0;constant},
+&#x00A0;<br />parent=romanletter}
+</div>
+<!--l. 5611--><p class="nopar" > For a complete document, see the sample file <a
+href="#x1-11068r21"><span
+class="cmtt-10">sampletree.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 5613--><p class="noindent" >
+</p><!--l. 5613--><p class="noindent" >____________________________</p></div>
+<!--l. 5615--><p class="noindent" >
+</p>
+<!--l. 5615--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">4.5.2 </span> <a
+ id="sec:homographs"></a>Homographs</h4>
+<!--l. 5618--><p class="noindent" >Sub-entries that have the same name as the parent entry, don&#8217;t need to have the
+<span
+class="cmss-10">name</span><a
+ id="dx1-43001"></a> key. For example, the word &#8220;glossary&#8221; can mean a list of technical words or a
+collection of glosses. In both cases the plural is &#8220;glossaries&#8221;. So first define the parent
+entry:
+
+
+</p>
+ <div class="verbatim" id="verbatim-169">
+\newglossaryentry{glossary}{name=glossary,
+&#x00A0;<br />description={\nopostdesc},
+&#x00A0;<br />plural={glossaries}}
+</div>
+<!--l. 5627--><p class="nopar" > Again, the parent entry has no description, so the description terminator needs to be
+suppressed using <span
+class="cmtt-10">\nopostdesc</span><a
+ id="dx1-43002"></a>.
+</p><!--l. 5631--><p class="indent" > Now define the two different meanings of the word:
+
+
+</p>
+ <div class="verbatim" id="verbatim-170">
+\newglossaryentry{glossarylist}{
+&#x00A0;<br />description={list&#x00A0;of&#x00A0;technical&#x00A0;words},
+&#x00A0;<br />sort={1},
+&#x00A0;<br />parent={glossary}}
+&#x00A0;<br />\newglossaryentry{glossarycol}{
+&#x00A0;<br />description={collection&#x00A0;of&#x00A0;glosses},
+&#x00A0;<br />sort={2},
+&#x00A0;<br />parent={glossary}}
+</div>
+<!--l. 5642--><p class="nopar" > Note that if I reference the parent entry, the location will be added to the parent&#8217;s <a
+href="#glo:numberlist">number
+list<a
+ id="dx1-43003"></a></a>, whereas if I reference any of the child entries, the location will be added to the child
+entry&#8217;s number list. Note also that since the sub-entries have the same name, the <span
+class="cmss-10">sort</span><a
+ id="dx1-43004"></a> key is
+required unless you are using the <span
+class="cmss-10">sort=use</span><a
+ id="dx1-43005"></a> or <span
+class="cmss-10">sort=def</span><a
+ id="dx1-43006"></a> package options (see <a
+href="#sec:pkgopts-sort"><span
+class="tcrm-1000">&sect;</span>2.4
+</a><a
+href="#sec:pkgopts-sort">Sorting Options<!--tex4ht:ref: sec:pkgopts-sort --></a>). You can use the <span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-43007"></a> package option to automatically
+number the first-level child entries. See <a
+href="#sec:pkgopts-printglos"><span
+class="tcrm-1000">&sect;</span>2.3 </a><a
+href="#sec:pkgopts-printglos">Glossary Appearance Options<!--tex4ht:ref: sec:pkgopts-printglos --></a> for further
+details.
+</p><!--l. 5654--><p class="indent" > In the above example, the plural form for both of the child entries is the same as the
+parent entry, so the <span
+class="cmss-10">plural</span><a
+ id="dx1-43008"></a> key was not required for the child entries. However, if the
+sub-entries have different plurals, they will need to be specified. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-171">
+\newglossaryentry{bravo}{name={bravo},
+&#x00A0;<br />description={\nopostdesc}}
+&#x00A0;<br />\newglossaryentry{bravocry}{description={cry&#x00A0;of&#x00A0;approval
+&#x00A0;<br />(pl.\&#x00A0;bravos)},
+&#x00A0;<br />sort={1},
+&#x00A0;<br />plural={bravos},
+&#x00A0;<br />parent=bravo}
+&#x00A0;<br />\newglossaryentry{bravoruffian}{description={hired
+&#x00A0;<br />ruffian&#x00A0;or&#x00A0;killer&#x00A0;(pl.\&#x00A0;bravoes)},
+&#x00A0;<br />sort={2},
+&#x00A0;<br />plural={bravoes},
+&#x00A0;<br />parent=bravo}
+</div>
+<!--l. 5673--><p class="nopar" >
+</p><!--l. 5676--><p class="noindent" >
+</p>
+<!--l. 5676--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.6 </span> <a
+ id="sec:loadglsentries"></a>Loading Entries From a File</h3>
+<!--l. 5679--><p class="noindent" >You can store all your glossary entry definitions in another file and use:
+</p><!--l. 5681--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\loadglsentries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44001"></a> <span
+class="cmtt-10">\loadglsentries[</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">filename</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5683--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">filename</span>&#x27E9; is the name of the file containing all the <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-44002"></a> or
+<span
+class="cmtt-10">\longnewglossaryentry</span><a
+ id="dx1-44003"></a> commands. The optional argument &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is the name of the glossary
+to which those entries should belong, for those entries where the <span
+class="cmss-10">type</span><a
+ id="dx1-44004"></a> key has been omitted
+(or, more specifically, for those entries whose type has been specified by <span
+class="cmtt-10">\glsdefaulttype</span><a
+ id="dx1-44005"></a>,
+which is what <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-44006"></a> uses by default).
+</p><!--l. 5693--><p class="indent" > This is a&#x00A0;preamble-only command. You may also use <span
+class="cmtt-10">\input</span><a
+ id="dx1-44007"></a> to load the file but don&#8217;t use
+<span
+class="cmtt-10">\include</span><a
+ id="dx1-44008"></a>. If you find that your file is becoming unmanageably large, you may want to
+consider switching to <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-44009"></a></a> and use an application such as JabRef to manage the entry
+definitions.
+</p><!--l. 5699--><p class="indent" > <div class="important" title="Important Note"> If you want to use <span
+class="cmtt-10">\AtBeginDocument</span><a
+ id="dx1-44010"></a> to <span
+class="cmtt-10">\input </span>all your entries automatically at the
+start of the document, add the <span
+class="cmtt-10">\AtBeginDocument </span>command <span
+class="cmti-10">before </span>you load the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-44011"></a>
+package (and <span
+class="cmss-10">babel</span><a
+ id="dx1-44012"></a>, if you are also loading that) to avoid the creation of the <span
+class="cmtt-10">.glsdefs</span><a
+ id="dx1-44013"></a> file and
+any associated problems that are caused by defining commands in the <span
+class="cmss-10">document</span><a
+ id="dx1-44014"></a><a
+ id="dx1-44015"></a>
+environment. (See <a
+href="#sec:docdefs"><span
+class="tcrm-1000">&sect;</span>4.8 </a><a
+href="#sec:docdefs">Drawbacks With Defining Entries in the Document Environment<!--tex4ht:ref: sec:docdefs --></a>.)
+</div>
+</p><!--l. 5708--><p class="noindent" >
+<a
+ id="x1-44016r7"></a>
+
+
+</p><!--l. 5710--><p class="noindent" ><span
+class="cmbx-12">Example 7</span><span
+class="cmbx-12">&#x00A0;(Loading Entries from Another File)</span><a
+ id="x1-44017"></a>
+</p><!--l. 5711--><p class="indent" > Suppose I have a file called <span
+class="cmtt-10">myentries.tex </span>which contains:
+
+
+</p>
+ <div class="verbatim" id="verbatim-172">
+\newglossaryentry{perl}{type=main,
+&#x00A0;<br />name={Perl},
+&#x00A0;<br />description={A&#x00A0;scripting&#x00A0;language}}
+&#x00A0;<br />\newglossaryentry{tex}{name={\TeX},
+&#x00A0;<br />description={A&#x00A0;typesetting&#x00A0;language},sort={TeX}}
+&#x00A0;<br />\newglossaryentry{html}{type=\glsdefaulttype,
+&#x00A0;<br />name={html},
+&#x00A0;<br />description={A&#x00A0;mark&#x00A0;up&#x00A0;language}}
+</div>
+<!--l. 5723--><p class="nopar" > and suppose in my document preamble I use the command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-173">
+\loadglsentries[languages]{myentries}
+</div>
+<!--l. 5727--><p class="nopar" > then this will add the entries <span
+class="cmtt-10">tex </span>and <span
+class="cmtt-10">html </span>to the glossary whose type is given by
+<span
+class="cmtt-10">languages</span>, but the entry <span
+class="cmtt-10">perl </span>will be added to the main glossary, since it explicitly sets the
+type to <span
+class="cmtt-10">main</span>. </p>
+<div class="center"
+>
+<!--l. 5732--><p class="noindent" >
+</p><!--l. 5732--><p class="noindent" >____________________________</p></div>
+<!--l. 5734--><p class="indent" > <span
+class="cmbx-10">Note: </span>if you use <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-44018"></a> (see <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and Other Abbreviations<!--tex4ht:ref: sec:acronyms --></a>) the type is
+set as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">type=\acronymtype</span></span></span> unless you explicitly override it. For example, if my file
+<span
+class="cmtt-10">myacronyms.tex </span>contains:
+
+
+</p>
+ <div class="verbatim" id="verbatim-174">
+\newacronym{aca}{aca}{a&#x00A0;contrived&#x00A0;acronym}
+</div>
+<!--l. 5740--><p class="nopar" > then (supposing I have defined a new glossary type called <span
+class="cmtt-10">altacronym</span>)
+
+
+</p>
+ <div class="verbatim" id="verbatim-175">
+\loadglsentries[altacronym]{myacronyms}
+</div>
+<!--l. 5745--><p class="nopar" > will add <span
+class="cmtt-10">aca </span>to the glossary type <span
+class="cmtt-10">acronym</span>, if the package option <span
+class="cmss-10">acronym</span><a
+ id="dx1-44019"></a> has been specified,
+or will add <span
+class="cmtt-10">aca </span>to the glossary type <span
+class="cmtt-10">altacronym</span>, if the package option <span
+class="cmss-10">acronym</span><a
+ id="dx1-44020"></a> is not
+specified.<span class="footnote-mark"><a
+href="#fn1x4" id="fn1x4-bk"><sup class="textsuperscript">4.1</sup></a></span><a
+ id="x1-44021f1"></a>
+</p><!--l. 5753--><p class="indent" > If you have used the <span
+class="cmss-10">acronym</span><a
+ id="dx1-44025"></a> package option, there are two possible solutions to this
+problem:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-44027x1">Change <span
+class="cmtt-10">myacronyms.tex </span>so that entries are defined in the form:
+
+
+ <div class="verbatim" id="verbatim-176">
+ \newacronym[type=\glsdefaulttype]{aca}{aca}{a
+ &#x00A0;<br />contrived&#x00A0;acronym}
+</div>
+ <!--l. 5761--><p class="nopar" > and do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-177">
+ \loadglsentries[altacronym]{myacronyms}
+</div>
+ <!--l. 5765--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-44029x2">Temporarily change <span
+class="cmtt-10">\acronymtype </span>to the target glossary:
+
+
+ <div class="verbatim" id="verbatim-178">
+ \let\orgacronymtype\acronymtype
+ &#x00A0;<br />\renewcommand{\acronymtype}{altacronym}
+ &#x00A0;<br />\loadglsentries{myacronyms}
+ &#x00A0;<br />\let\acronymtype\orgacronymtype
+</div>
+ <!--l. 5773--><p class="nopar" ></p></li></ol>
+<!--l. 5776--><p class="indent" > Note that only those entries that have been used in the text will appear in the relevant
+glossaries. Note also that <span
+class="cmtt-10">\loadglsentries </span>may only be used in the preamble.
+</p><!--l. 5781--><p class="indent" > Remember that you can use <span
+class="cmtt-10">\provideglossaryentry</span><a
+ id="dx1-44030"></a> rather than <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-44031"></a>.
+Suppose you want to maintain a large database of acronyms or terms that you&#8217;re likely to use
+in your documents, but you may want to use a modified version of some of those entries.
+(Suppose, for example, one document may require a more detailed description.) Then if you
+define the entries using <span
+class="cmtt-10">\provideglossaryentry </span>in your database file, you can override the
+definition by simply using <span
+class="cmtt-10">\newglossaryentry </span>before loading the file. For example, suppose
+your file (called, say, <span
+class="cmtt-10">terms.tex</span>) contains:
+
+
+</p>
+ <div class="verbatim" id="verbatim-179">
+\provideglossaryentry{mallard}{name=mallard,
+&#x00A0;<br />&#x00A0;description={a&#x00A0;type&#x00A0;of&#x00A0;duck}}
+</div>
+<!--l. 5794--><p class="nopar" > but suppose your document requires a more detailed description, you can do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-180">
+\usepackage{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newglossaryentry{mallard}{name=mallard,
+&#x00A0;<br />&#x00A0;description={a&#x00A0;dabbling&#x00A0;duck&#x00A0;where&#x00A0;the&#x00A0;male&#x00A0;has&#x00A0;a&#x00A0;green&#x00A0;head}}
+&#x00A0;<br />\loadglsentries{terms}
+</div>
+<!--l. 5805--><p class="nopar" > Now the <span
+class="cmtt-10">mallard </span>definition in the <span
+class="cmtt-10">terms.tex </span>file will be ignored.
+</p><!--l. 5809--><p class="noindent" >
+</p>
+<!--l. 5809--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.7 </span> <a
+ id="sec:moveentry"></a>Moving Entries to Another Glossary</h3>
+<!--l. 5812--><p class="noindent" >As from version&#x00A0;3.02, you can move an entry from one glossary to another using:
+</p><!--l. 5814--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsmoveentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-45001"></a> <span
+class="cmtt-10">\glsmoveentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">target glossary label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5816--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the unique label identifying the required entry and &#x27E8;<span
+class="cmti-10">target glossary label</span>&#x27E9; is the
+unique label identifying the glossary in which to put the entry.
+</p><!--l. 5821--><p class="indent" > Note that no check is performed to determine the existence of the target glossary. If
+you want to move an entry to a glossary that&#8217;s skipped by <span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-45002"></a>,
+then define an ignored glossary with <span
+class="cmtt-10">\newignoredglossary</span><a
+ id="dx1-45003"></a>. (See <a
+href="#sec:newglossary"><span
+class="tcrm-1000">&sect;</span>12 </a><a
+href="#sec:newglossary">Defining New
+Glossaries<!--tex4ht:ref: sec:newglossary --></a>.)
+</p><!--l. 5827--><p class="indent" > <div class="important" title="Important Note"> Unpredictable results may occur if you move an entry to a different glossary from its
+parent or children. </div>
+</p><!--l. 5830--><p class="noindent" >
+</p><!--l. 5832--><p class="noindent" >
+</p>
+<!--l. 5832--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4.8 </span> <a
+ id="sec:docdefs"></a>Drawbacks With Defining Entries in the Document Environment</h3>
+<!--l. 5835--><p class="noindent" >Originally, <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-46001"></a> (and <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-46002"></a>) could only be used in the preamble. I
+reluctantly removed this restriction in version 1.13, but there are issues with defining
+commands in the <span
+class="cmss-10">document</span><a
+ id="dx1-46003"></a><a
+ id="dx1-46004"></a> environment instead of the preamble, which is why the restriction
+is maintained for newer commands. This restriction is also reimposed for <span
+class="cmtt-10">\newglossaryentry</span>
+by the new <a
+href="#option1">Option&#x00A0;1</a>. (The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package automatically reimposes this
+restriction for Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a> but provides a package option to allow document
+definitions.)
+
+
+</p><!--l. 5845--><p class="noindent" >
+</p>
+<!--l. 5845--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">4.8.1 </span> <a
+ id="sec:techissues"></a>Technical Issues</h4>
+<!--l. 5848--><p class="noindent" >
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-47002x1">If you define an entry mid-way through your document, but subsequently shuffle
+ sections around, you could end up using an entry before it has been defined.
+ </li>
+ <li
+ class="enumerate" id="x1-47004x2">Entry information is required when displaying the glossary. If this occurs at the
+ start of the document, but the entries aren&#8217;t defined until later, then the entry
+ details are being looked up before the entry has been defined.
+ </li>
+ <li
+ class="enumerate" id="x1-47006x3">If you use a package, such as <span
+class="cmss-10">babel</span><a
+ id="dx1-47007"></a>, that makes certain characters active at the start
+ of the <span
+class="cmss-10">document</span><a
+ id="dx1-47008"></a><a
+ id="dx1-47009"></a> environment, there will be a&#x00A0;problem if those characters have
+ a&#x00A0;special significance when defining glossary entries. These characters include the
+ double-quote <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"</span></span></span> character, the exclamation mark <span
+class="cmtt-10">! </span>character, the question mark
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">?</span></span></span> character, and the pipe <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">|</span></span></span> character. They must not be active when defining
+ a&#x00A0;glossary entry where they occur in the <span
+class="cmss-10">sort</span><a
+ id="dx1-47010"></a> key (and they should be avoided in
+ the label if they may be active at any point in the document). Additionally, the
+ comma <span
+class="cmtt-10">, </span>character and the equals <span
+class="cmtt-10">= </span>character should not be active when using
+ commands that have &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; arguments.
+ </li></ol>
+<!--l. 5874--><p class="noindent" >To overcome the first two problems, as from version 4.0 the <span
+class="cmss-10">glossaries </span>package modifies the
+definition of <span
+class="cmtt-10">\newglossaryentry </span>at the beginning of the <span
+class="cmss-10">document</span><a
+ id="dx1-47011"></a><a
+ id="dx1-47012"></a> environment so that the
+definitions are written to an external file (<span
+class="cmtt-10">\jobname.glsdefs</span><a
+ id="dx1-47013"></a>) which is then read in at the
+start of the document on the next run. The entry will then only be defined in the
+<span
+class="cmss-10">document</span><a
+ id="dx1-47014"></a><a
+ id="dx1-47015"></a> environment if it doesn&#8217;t already exist. This means that the entry can now
+be looked up in the glossary, even if the glossary occurs at the beginning of the
+document.
+</p><!--l. 5884--><p class="indent" > There are drawbacks to this mechanism: if you modify an entry definition, you need a
+second run to see the effect of your modification; this method requires an extra <span
+class="cmtt-10">\newwrite</span>,
+which may exceed <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s maximum allocation; unexpected expansion issues could occur; the
+<span
+class="cmss-10">see</span><a
+ id="dx1-47016"></a> key isn&#8217;t stored, which means it can&#8217;t be added to the <span
+class="cmtt-10">.glsdefs</span><a
+ id="dx1-47017"></a> file when it&#8217;s
+created at the end of the document (and therefore won&#8217;t be present on subsequent
+runs).
+</p><!--l. 5892--><p class="indent" > The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package provides a setting (but only for Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>) that allows
+<span
+class="cmtt-10">\newglossaryentry </span>to occur in the document environment but doesn&#8217;t create the
+<span
+class="cmtt-10">.glsdefs</span><a
+ id="dx1-47018"></a> file. This circumvents some problems but it means that you can&#8217;t display
+any of the glossaries before all the entries have been defined (so it&#8217;s all right if all
+the glossaries are at the end of the document but not if any occur in the front
+matter).
+
+
+</p><!--l. 5900--><p class="noindent" >
+</p>
+<!--l. 5900--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">4.8.2 </span> <a
+ id="sec:goodpractice"></a>Good Practice Issues</h4>
+<!--l. 5903--><p class="noindent" >The above section covers technical issues that can cause your document to have compilation
+errors or produce incorrect output. This section focuses on good writing practice. The main
+reason cited by users wanting to define entries within the <span
+class="cmss-10">document</span><a
+ id="dx1-48001"></a><a
+ id="dx1-48002"></a> environment
+rather than in the preamble is that they want to write the definition as they type in
+their document text. This suggests a &#8220;stream of consciousness&#8221; style of writing
+that may be acceptable in certain literary genres but is inappropriate for factual
+documents.
+</p><!--l. 5912--><p class="indent" > When you write technical documents, regardless of whether it&#8217;s a PhD thesis or an article
+for a&#x00A0;journal or proceedings, you must plan what you write in advance. If you plan in
+advance, you should have a fairly good idea of the type of terminology that your
+document will contain, so while you are planning, create a new file with all your
+entry definitions. If, while you&#8217;re writing your document, you remember another
+term you need, then you can switch over to your definition file and add it. Most
+text editors have the ability to have more than one file open at a time. The other
+advantage to this approach is that if you forget the label, you can look it up in
+the definition file rather than searching through your document text to find the
+definition.
+
+
+</p>
+<!--l. 5925--><p class="indent" > </div>
+</p><!--l. 5925--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">5. <a
+ id="sec:numberlists"></a>Number lists</h2>
+</p><!--l. 5928--><p class="indent" > Each entry in the glossary has an associated <a
+href="#glo:numberlist">number list<a
+ id="dx1-49001"></a></a>. By default, these numbers refer
+to the pages on which that entry has been indexed (using any of the commands described in
+<a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to Glossary Entries<!--tex4ht:ref: sec:glslink --></a> and <a
+href="#sec:glsadd"><span
+class="tcrm-1000">&sect;</span>7 </a><a
+href="#sec:glsadd">Adding an Entry to the Glossary Without Generating
+Text<!--tex4ht:ref: sec:glsadd --></a>). The number list can be suppressed using the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-49002"></a> package option, or an
+alternative counter can be set as the default using the <span
+class="cmss-10">counter</span><a
+ id="dx1-49003"></a> package option. The number
+list is also referred to as the location list<a
+ id="dx1-49004"></a>.
+</p><!--l. 5937--><p class="indent" > <a
+href="#glo:numberlist">Number list<a
+ id="dx1-49005"></a>s</a> are more common with indexes rather than glossaries (although you can use
+the <span
+class="cmss-10">glossaries </span>package for indexes as well). However, the <span
+class="cmss-10">glossaries </span>package makes use of
+<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-49006"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-49007"></a></a> to hierarchically sort and collate the entries since they are readily
+available with most modern <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions. Since these are both designed as <a
+href="#glo:indexingapp">indexing
+applications</a> they both require that terms either have a valid location or a cross-reference.
+Even if you use <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-49008"></a>, the locations must still be provided and acceptable
+to the <a
+href="#glo:indexingapp">indexing application</a> or they will cause an error during the indexing stage,
+which will interrupt the document build. However, if you&#8217;re not interested in the
+locations, each entry only needs to be indexed once, so consider using <span
+class="cmss-10">indexonlyfirst</span><a
+ id="dx1-49009"></a>,
+which can improve the document build time by only indexing the <a
+href="#glo:firstuse">first use</a> of each
+term.
+</p><!--l. 5952--><p class="indent" > The <span
+class="cmtt-10">\glsaddall</span><a
+ id="dx1-49010"></a> command (see <a
+href="#sec:glsadd"><span
+class="tcrm-1000">&sect;</span>7 </a><a
+href="#sec:glsadd">Adding an Entry to the Glossary Without Generating
+Text<!--tex4ht:ref: sec:glsadd --></a>), which is used to automatically index all entries, iterates over all defined entries and
+does <span
+class="cmtt-10">\glsadd{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>for each entry (where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is that entry&#8217;s label). This means that
+<span
+class="cmtt-10">\glsaddall </span>automatically adds the same location to every entry&#8217;s <a
+href="#glo:numberlist">number list<a
+ id="dx1-49011"></a></a>, which looks
+weird if the number list<a
+ id="dx1-49012"></a> hasn&#8217;t been suppressed.
+</p><!--l. 5959--><p class="indent" > With <a
+href="#option4">Option&#x00A0;4</a>, the indexing is performed by <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-49013"></a></a>, which was specifically designed for
+the <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package. So it will allow any location format, and its <span
+class="cmtt-10">selection=all</span>
+option will select all entries without adding an unwanted location to the <a
+href="#glo:numberlist">number list<a
+ id="dx1-49014"></a></a>. If
+<a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-49015"></a></a> can deduce a numerical value for a location, it will attempt to form a range over
+consecutive locations, otherwise it won&#8217;t try to form a range and the location will just form
+an individual item in the list. <a
+href="#option1">Option&#x00A0;1</a> also allows any location but it doesn&#8217;t form
+ranges.
+</p>
+<!--l. 5969--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">5.1 </span> <a
+ id="sec:encap"></a>Encap Values</h3>
+<!--l. 5972--><p class="noindent" >Each location in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-50001"></a></a> is encapsulated with a command formed from the <span
+class="cmti-10">encap</span><a
+ id="dx1-50002"></a>
+value. By default this is the <span
+class="cmtt-10">\glsnumberformat</span><a
+ id="dx1-50003"></a> command, which corresponds to the encap
+<span
+class="cmtt-10">glsnumberformat</span>, but this may be overridden using the <span
+class="cmss-10">format</span><a
+ id="dx1-50004"></a> key in the optional argument
+to commands like <span
+class="cmtt-10">\gls</span>. (See <a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to Glossary Entries<!--tex4ht:ref: sec:glslink --></a>.) For example, you may want the
+location to appear in bold to indicate the principle use of a term or symbol. If the encap
+starts with an open parenthesis&#x00A0;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">(</span></span></span> this signifies the start of a range and if the encap starts
+with close parenthesis&#x00A0;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">)</span></span></span> this signifies the end of a range. These must always occur in
+matching pairs.
+</p><!--l. 5984--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides the command <span
+class="cmtt-10">\glsignore</span><a
+ id="dx1-50005"></a> which ignores its argument.
+This is the format used by <span
+class="cmtt-10">\glsaddallunused </span>to suppress the location, which works fine as
+long as no other locations are added to the <a
+href="#glo:numberlist">number list<a
+ id="dx1-50006"></a></a>. For example, if you use
+
+
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{sample}</span></span></span> on page&#x00A0;2 then reset the <a
+href="#glo:firstuseflag">first use flag</a> and then use <span
+class="cmtt-10">\glsaddallunused </span>on
+page&#x00A0;10, the <a
+href="#glo:numberlist">number list<a
+ id="dx1-50007"></a></a> for <span
+class="cmtt-10">sample </span>will be <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">2,</span><span
+class="cmtt-10">&#x00A0;\glsignore{10}</span></span></span> which will result in &#8220;2,&#x00A0;&#8221;
+which has a spurious comma.
+</p><!--l. 5993--><p class="indent" > This isn&#8217;t a problem with <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-50008"></a></a> because you&#8217;d use <span
+class="cmtt-10">selection=all </span>instead of
+<span
+class="cmtt-10">\glsaddallunused</span>, but even if you explicitly had, for example, <span
+class="cmtt-10">\gls[format=glsignore]</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>for some reason, <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-50009"></a></a> will recognise <span
+class="cmtt-10">glsignore </span>as a special encap indicating an
+ignored location, so it will select the entry but not add that location to the <a
+href="#glo:numberlist">number list<a
+ id="dx1-50010"></a></a>. It&#8217;s a
+problem for all the other options (except <a
+href="#option5">Option&#x00A0;5</a>, which doesn&#8217;t perform any
+indexing).
+</p><!--l. 6003--><p class="indent" > Complications can arise if you use different encap values for the same location. For
+example, suppose on page&#x00A0;10 you have both the default <span
+class="cmtt-10">glsnumberformat </span>and <span
+class="cmtt-10">textbf</span>
+encaps. While it may seem apparent that <span
+class="cmtt-10">textbf </span>should override <span
+class="cmtt-10">glsnumberformat </span>in this
+situation, the <a
+href="#glo:indexingapp">indexing application</a> may not know it. This is therefore something you need to
+be careful about if you use the <span
+class="cmss-10">format</span><a
+ id="dx1-50011"></a> key or if you use a command that implicitly sets
+it.
+</p><!--l. 6012--><p class="indent" > In the case of <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-50012"></a></a>, it only accepts one encap (according to the order of precedence given
+in the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-50013"></a></a> module) and discards the others for identical locations (for the same
+entry). This can cause a problem if a discarded location forms the start or end of a
+range.
+</p><!--l. 6017--><p class="indent" > In the case of <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-50014"></a></a>, it accepts different encaps for the same location, but warns
+about it. This leads to a <a
+href="#glo:numberlist">number list<a
+ id="dx1-50015"></a></a> with the same location repeated in different formats. If
+you use the <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-50016"></a></a> Perl script with <a
+href="#option2">Option&#x00A0;2</a> it will detect <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-50017"></a></a>&#8217;s warning
+and attempt to fix the problem, ensuring that the <span
+class="cmtt-10">glsnumberformat </span>encap always has the
+least precedence unless it includes a range identifier. Other conflicting encaps will have the
+last one override earlier ones for the same location with range identifiers taking
+priority.
+</p><!--l. 6027--><p class="indent" > No discard occurs with <a
+href="#option1">Option&#x00A0;1</a> so again you get the same location repeated in different
+formats. With <a
+href="#option4">Option&#x00A0;4</a>, <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-50018"></a></a> will discard according to order of precedence,
+giving priority to start and end range encaps. (See the <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-50019"></a></a> manual for further
+details.)
+</p><!--l. 6032--><p class="noindent" >
+</p>
+<!--l. 6032--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">5.2 </span> <a
+ id="sec:locationsyntax"></a>Locations</h3>
+<!--l. 6035--><p class="noindent" >Neither <a
+href="#option1">Option&#x00A0;1</a> nor <a
+href="#option4">Option&#x00A0;4</a> care about the location syntax as long as it&#8217;s valid
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;code (and doesn&#8217;t contain fragile commands). In both cases, the indexing is
+performed by writing a line to the <span
+class="cmtt-10">.aux </span>file. The write operation is deferred to avoid the
+problems associated with <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s asynchronous output routine. (See, for example, <a
+href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oddpage" >Finding if
+you&#8217;re on an odd or an even page</a> for more details on this issue.) Unfortunately Options&#x00A0;<a
+href="#option2">2</a>
+and&#x00A0;<a
+href="#option3">3</a> are far more problematic and need some complex code to deal with awkward
+locations.
+</p><!--l. 6046--><p class="indent" > If you know that your locations will always expand to a format acceptable to your chosen
+<a
+href="#glo:indexingapp">indexing application</a> then use the package option <span
+class="cmss-10">esclocations=false</span><a
+ id="dx1-51001"></a> to bypass this operation.
+This setting only affects Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a> as the problem doesn&#8217;t arise with the other
+
+
+indexing options.
+</p><!--l. 6052--><p class="indent" > Both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-51002"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51003"></a></a> are fussy about the syntax of the locations. In the
+case of <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-51004"></a></a>, only the numbering system obtained with <span
+class="cmtt-10">\arabic</span>, <span
+class="cmtt-10">\roman</span>,
+<span
+class="cmtt-10">\Roman</span>, <span
+class="cmtt-10">\alph </span>and <span
+class="cmtt-10">\Alph </span>or composites formed from them with the same separator
+(set with <span
+class="cmtt-10">\glsSetCompositor{</span>&#x27E8;<span
+class="cmti-10">char</span>&#x27E9;<span
+class="cmtt-10">}</span>) are accepted. (<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-51005"></a></a> won&#8217;t accept an
+empty location.) In the case of <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51006"></a></a>, you can define your own location classes,
+but if the location contains a robust command then the leading backslash must be
+escaped. The <span
+class="cmss-10">glossaries</span><a
+ id="dx1-51007"></a> package tries to do this, but it&#8217;s caught between two conflicting
+requirements:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-51009x1">The location must be fully expanded before <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\</span></span></span> can be converted to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\</span></span></span> (there&#8217;s no
+ point converting <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\thepage</span></span></span> to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\thepage</span></span></span>);
+ </li>
+ <li
+ class="enumerate" id="x1-51011x2">The page number can&#8217;t be expanded until the deferred write operation (so <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\c@page</span></span></span>
+ mustn&#8217;t expand in the previous step but <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\the\c@page</span></span></span> mustn&#8217;t be converted to
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\the\\c@page</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\number\c@page</span></span></span> mustn&#8217;t be converted to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\number\\c@page</span></span></span>
+ etc).</li></ol>
+<!--l. 6072--><p class="noindent" >There&#8217;s a certain amount of trickery needed to deal with this conflict and the code requires
+the location to be in a form that doesn&#8217;t embed the counter&#8217;s internal register in
+commands like <span
+class="cmtt-10">\value</span>. For example, suppose you have a robust command called
+<span
+class="cmtt-10">\tallynum </span>that takes a number as the argument and an expandable command called
+<span
+class="cmtt-10">\tally </span>that converts a counter name into the associated register or number to
+pass to <span
+class="cmtt-10">\tallynum</span>. Let&#8217;s suppose that this command is used to represent the page
+number:
+
+
+</p>
+ <div class="verbatim" id="verbatim-181">
+\renewcommand{\thepage}{\tally{page}}
+</div>
+<!--l. 6082--><p class="nopar" > Now let&#8217;s suppose that a term is indexed at the beginning of page&#x00A0;2 at the end of a
+paragraph that started on page&#x00A0;1. With <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51012"></a></a>, the location <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\tally{page}</span></span></span> needs to be
+written to the file as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\tallynum{2}</span></span></span>. If it&#8217;s written as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\tallynum{2}</span></span></span> then <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51013"></a></a> will
+interpret <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\t</span></span></span> as the character &#8220;t&#8221; (which means the location would appear as &#8220;tallynum2&#8221;). So
+<span
+class="cmss-10">glossaries</span><a
+ id="dx1-51014"></a> tries to expand <span
+class="cmtt-10">\thepage </span>without expanding <span
+class="cmtt-10">\c@page </span>and then escapes all the
+backslashes, except for the page counter&#8217;s internal command. The following definitions of
+<span
+class="cmtt-10">\tally </span>will work: </p>
+ <ul class="itemize1">
+ <li class="itemize">In the following, <span
+class="cmtt-10">\arabic </span>works as its internal command <span
+class="cmtt-10">\c@arabic </span>is temporarily
+ redefined to check for <span
+class="cmtt-10">\c@page</span>:
+
+
+ <div class="verbatim" id="verbatim-182">
+ \newcommand{\tally}[1]{\tallynum{\arabic{#1}}}
+</div>
+ <!--l. 6098--><p class="nopar" >
+ </p></li>
+ <li class="itemize">The form <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\expandafter\the\csname</span><span
+class="cmtt-10">&#x00A0;c@</span></span></span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\endcsname</span></span></span> also works (provided <span
+class="cmtt-10">\the</span>
+ is allowed to be temporarily redefined, see below):
+
+
+ <div class="verbatim" id="verbatim-183">
+ \newcommand{\tally}[1]{%
+ &#x00A0;<br />&#x00A0;\tallynum{\expandafter\the\csname&#x00A0;c@#1\endcsname}}
+</div>
+ <!--l. 6106--><p class="nopar" >
+ </p></li>
+ <li class="itemize"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\expandafter\the\value</span></span></span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;<span
+class="cmtt-10">} </span>now also works (with the same condition as
+ above):
+
+
+ <div class="verbatim" id="verbatim-184">
+ \newcommand{\tally}[1]{\tallynum{\expandafter\the\value{#1}}}
+</div>
+ <!--l. 6112--><p class="nopar" >
+ </p></li>
+ <li class="itemize">Another variation that will work:
+
+
+ <div class="verbatim" id="verbatim-185">
+ \newcommand{\tally}[1]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\expandafter\tallynum\expandafter{\the\csname&#x00A0;c@#1\endcsname}}
+</div>
+ <!--l. 6118--><p class="nopar" >
+ </p></li>
+ <li class="itemize">and also:
+
+
+ <div class="verbatim" id="verbatim-186">
+ \newcommand{\tally}[1]{\tallynum{\the\csname&#x00A0;c@#1\endcsname}}
+</div>
+ <!--l. 6123--><p class="nopar" ></p></li></ul>
+<!--l. 6125--><p class="noindent" >The following <span
+class="cmti-10">don&#8217;t work</span>: </p>
+ <ul class="itemize1">
+ <li class="itemize">This definition leads to the premature expansion of <span
+class="cmtt-10">\c@page </span>to &#8220;1&#8221; when, in this case,
+ it should be &#8220;2&#8221;:
+
+
+ <div class="verbatim" id="verbatim-187">
+ \newcommand{\tally}[1]{\tallynum{\the\value{#1}}}
+</div>
+ <!--l. 6131--><p class="nopar" >
+ </p></li>
+ <li class="itemize">This definition leads to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\c@page</span></span></span> in the glossary file:
+
+
+ <div class="verbatim" id="verbatim-188">
+ \newcommand{\tally}[1]{\tallynum{\csname&#x00A0;c@#1\endcsname}}
+</div>
+ <!--l. 6135--><p class="nopar" ></p></li></ul>
+<!--l. 6137--><p class="noindent" >If you have a numbering system where <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\</span></span></span>&#x27E8;<span
+class="cmti-10">cs name</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{page}</span></span></span> expands to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\</span></span></span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">\c@page</span>
+(for example, if <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\tally{page}</span></span></span> expands to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\tallynum\c@page</span></span></span>) then you need to
+use:
+</p><!--l. 6142--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddprotectedpagefmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-51015"></a> <span
+class="cmtt-10">\glsaddprotectedpagefmt{</span>&#x27E8;<span
+class="cmitt-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6144--><p class="noindent" >
+Note that the backslash must be omitted from &#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9; and the corresponding
+command must be able to process a count register as the (sole) argument.
+</p><!--l. 6149--><p class="indent" > For example, suppose you have a style <span
+class="cmtt-10">samplenum </span>that is implemented as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-189">
+&#x00A0;\newcommand*{\samplenum}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\expandafter\@samplenum\csname&#x00A0;c@#1\endcsname}
+&#x00A0;<br />&#x00A0;\newcommand*{\@samplenum}[1]{\two@digits{#1}}
+</div>
+<!--l. 6156--><p class="nopar" > (That is, it displays the value of the counter as a two-digit number.) Then to ensure the
+location is correct for entries in page-spanning paragraphs, you need to do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-190">
+\glsaddprotectedpagefmt{@samplenum}
+</div>
+<!--l. 6162--><p class="nopar" > (If you are using a different counter for the location, such as <span
+class="cmtt-10">section </span>or <span
+class="cmtt-10">equation</span>, you don&#8217;t
+need to worry about this provided the inner command is expandable.)
+</p><!--l. 6167--><p class="indent" > If the inner macro (as given by <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\</span></span></span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;) contains non-expandable
+commands then you may need to redefine <span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">page </span>after using
+<span
+class="cmtt-10">\glsaddprotectedpagefmt{</span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">}</span>. This command doesn&#8217;t take any arguments as
+<span
+class="cmti-10">the location is assumed to be given by </span><span
+class="cmitt-10">\c@page </span>because that&#8217;s the only occasion this
+command should be used. For example, suppose now my page counter format uses small caps
+Roman numerals:
+
+
+</p>
+ <div class="verbatim" id="verbatim-191">
+&#x00A0;\newcommand*{\samplenum}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\expandafter\@samplenum\csname&#x00A0;c@#1\endcsname}
+&#x00A0;<br />&#x00A0;\newcommand*{\@samplenum}[1]{\textsc{\romannumeral#1}}
+</div>
+<!--l. 6178--><p class="nopar" > Again, the inner macro needs to be identified using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-192">
+\glsaddprotectedpagefmt{@samplenum}
+</div>
+<!--l. 6182--><p class="nopar" > However, since <span
+class="cmtt-10">\textsc </span>isn&#8217;t fully expandable, the location is written to the file as
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\textsc</span><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;{i}</span></span></span> (for page&#x00A0;1), <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\textsc</span><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;{ii}</span></span></span> (for page&#x00A0;2), etc. This format may cause a
+problem for the <a
+href="#glo:indexingapp">indexing application</a> (particularly for <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-51016"></a></a>). To compensate for this,
+the <span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">page </span>command may be redefined so that it expands to a format
+that&#8217;s acceptable to the indexing application. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-193">
+\renewcommand*{\gls@samplenumpage}{\romannumeral\c@page}
+</div>
+<!--l. 6192--><p class="nopar" > While this modification means that the <a
+href="#glo:numberlist">number list<a
+ id="dx1-51017"></a></a> in the glossary won&#8217;t exactly match the
+format of the page numbers (displaying lower case Roman numbers instead of small cap
+Roman numerals) this method will at least work correctly for both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-51018"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51019"></a></a>. If
+you are using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51020"></a></a>, the following definition:
+
+
+</p>
+ <div class="verbatim" id="verbatim-194">
+&#x00A0;\renewcommand*{\gls@samplenumpage}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsbackslash\string\textsc{\romannumeral\c@page}}
+</div>
+<!--l. 6202--><p class="nopar" > combined with
+
+
+</p>
+ <div class="verbatim" id="verbatim-195">
+\GlsAddXdyLocation{romansc}{:sep&#x00A0;"\string\textsc\glsopenbrace"
+&#x00A0;<br />&#x00A0;"roman-numbers-lowercase"&#x00A0;:sep&#x00A0;"\glsclosebrace"}
+</div>
+<!--l. 6207--><p class="nopar" > will now have lowercase Roman numerals in the location list (see <a
+href="#sec:xindyloc"><span
+class="tcrm-1000">&sect;</span>11.2 </a><a
+href="#sec:xindyloc">Locations and
+Number lists<!--tex4ht:ref: sec:xindyloc --></a> for further details on that command). Take care of the backslashes. The location
+(which ends up in the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">:locref</span></span></span> attribute) needs <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\</span></span></span> but the location class (identified with
+<span
+class="cmtt-10">\GlsAddXdyLocation</span>) just has a single backslash. Note that this example will cause problems
+if your locations should be hyperlinks.
+</p><!--l. 6216--><p class="indent" > Another possibility that may work with both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-51021"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-51022"></a></a> is to redefine
+<span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">page </span>(<span
+class="cmtt-10">\gls@samplenumpage </span>in this example) to just expand to the
+decimal page number (<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\number\c@page</span></span></span>) and redefine <span
+class="cmtt-10">\glsnumberformat</span><a
+ id="dx1-51023"></a> to change the
+displayed format:
+
+
+</p>
+ <div class="verbatim" id="verbatim-196">
+\renewcommand*{\gls@samplenumpage}{\number\c@page}
+&#x00A0;<br />\renewcommand*{\glsnumberformat}[1]{\textsc{\romannumeral#1}}
+</div>
+<!--l. 6224--><p class="nopar" >
+</p><!--l. 6226--><p class="indent" > <div class="important" title="Important Note"> If you redefine <span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmti-10">internal cs name</span>&#x27E9;<span
+class="cmtt-10">page</span>, you must make sure that <span
+class="cmtt-10">\c@page </span>is expanded
+when it&#8217;s written to the file. (So don&#8217;t, for example, hide <span
+class="cmtt-10">\c@page </span>inside a robust command.)
+</div>
+</p><!--l. 6231--><p class="noindent" >
+</p><!--l. 6233--><p class="indent" > The mechanism that allows this to work temporarily redefines <span
+class="cmtt-10">\the</span><a
+ id="dx1-51024"></a> and <span
+class="cmtt-10">\number</span><a
+ id="dx1-51025"></a> while it
+processes the location. If this causes a problem you can disallow it using
+</p><!--l. 6236--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glswrallowprimitivemodsfalse</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-51026"></a> <span
+class="cmtt-10">\glswrallowprimitivemodsfalse </span></div><hr>
+</p><!--l. 6238--><p class="noindent" >
+but you will need to find some other way to ensure the location expands correctly.
+</p><!--l. 6242--><p class="noindent" >
+</p>
+<!--l. 6242--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">5.3 </span> <a
+ id="sec:ranges"></a>Range Formations</h3>
+<!--l. 6245--><p class="noindent" >Both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-52001"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-52002"></a></a> (Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>) concatenate a sequence of&#x00A0;3 or more
+consecutive pages into&#x00A0;a range. With <span
+class="cmtt-10">xindy</span><a
+ id="dx1-52003"></a> (<a
+href="#option3">Option&#x00A0;3</a>) you can vary the minimum sequence
+length using <span
+class="cmtt-10">\GlsSetXdyMinRangeLength</span><a
+ id="dx1-52004"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9;<span
+class="cmtt-10">} </span>where &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; is either an integer or the keyword
+<span
+class="cmtt-10">none </span>which indicates that there should be no range formation (see <a
+href="#sec:xindyloc"><span
+class="tcrm-1000">&sect;</span>11.2 </a><a
+href="#sec:xindyloc">Locations and
+Number lists<!--tex4ht:ref: sec:xindyloc --></a> for further details).
+</p><!--l. 6253--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\GlsSetXdyMinRangeLength </span>must be used before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-52005"></a> and has
+no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-52006"></a> is used. </div>
+</p><!--l. 6256--><p class="noindent" >
+</p><!--l. 6258--><p class="indent" > With both <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-52007"></a></a> and <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-52008"></a></a> (Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>), you can replace the separator and
+the closing number in the range using:
+</p><!--l. 6260--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsSetSuffixF</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52009"></a> <span
+class="cmtt-10">\glsSetSuffixF{</span>&#x27E8;<span
+class="cmitt-10">suffix</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6262--><p class="noindent" >
+</p><!--l. 6263--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsSetSuffixFF</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52010"></a> <span
+class="cmtt-10">\glsSetSuffixFF{</span>&#x27E8;<span
+class="cmitt-10">suffix</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6265--><p class="noindent" >
+where the former command specifies the suffix to use for a 2 page list and the latter specifies
+the suffix to use for longer lists. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-197">
+\glsSetSuffixF{f.}
+&#x00A0;<br />\glsSetSuffixFF{ff.}
+</div>
+<!--l. 6272--><p class="nopar" > Note that if you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-52011"></a></a> (<a
+href="#option3">Option&#x00A0;3</a>), you will also need to set the minimum range length
+to 1 if you want to change these suffixes:
+
+
+</p>
+ <div class="verbatim" id="verbatim-198">
+\GlsSetXdyMinRangeLength{1}
+</div>
+<!--l. 6278--><p class="nopar" > Note that if you use the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-52012"></a> package, you will need to use <span
+class="cmtt-10">\nohyperpage</span><a
+ id="dx1-52013"></a> in the suffix to
+ensure that the hyperlinks work correctly. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-199">
+\glsSetSuffixF{\nohyperpage{f.}}
+&#x00A0;<br />\glsSetSuffixFF{\nohyperpage{ff.}}
+</div>
+<!--l. 6285--><p class="nopar" >
+</p><!--l. 6287--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\glsSetSuffixF </span>and <span
+class="cmtt-10">\glsSetSuffixFF </span>must be used before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-52014"></a>
+and have no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-52015"></a> is used. </div>
+</p><!--l. 6291--><p class="noindent" >
+</p><!--l. 6293--><p class="indent" > It&#8217;s also possible to concatenate a sequence of consecutive locations into a range or have
+suffixes with <a
+href="#option4">Option&#x00A0;4</a>, but with <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-52016"></a></a> these implicit ranges can&#8217;t be merged with
+explicit ranges (created with the <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> encaps). See the <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-52017"></a></a> manual for further
+details.
+</p><!--l. 6299--><p class="indent" > <a
+href="#option1">Option&#x00A0;1</a> doesn&#8217;t form ranges. However, with this option you can iterate over an entry&#8217;s
+<a
+href="#glo:numberlist">number list<a
+ id="dx1-52018"></a></a> using:
+</p><!--l. 6301--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnumberlistloop</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52019"></a> <span
+class="cmtt-10">\glsnumberlistloop{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">handler cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">xr handler cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6304--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label and &#x27E8;<span
+class="cmti-10">handler cs</span>&#x27E9; is a handler control sequence of the
+form:
+</p><!--l. 6308--><p class="indent" > <hr><div title="Definition">&#x27E8;<span
+class="cmitt-10">handler cs</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. 6309--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9; is the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-52020"></a> prefix, &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; is the name of the counter used for the location,
+&#x27E8;<span
+class="cmti-10">format</span>&#x27E9; is the format used to display the location (e.g.&#x00A0;<span
+class="cmtt-10">textbf</span>) and &#x27E8;<span
+class="cmti-10">location</span>&#x27E9; is the location.
+The third argument is the control sequence to use for any cross-references in the list. This
+handler should have the syntax:
+</p><!--l. 6317--><p class="indent" > <hr><div title="Definition">&#x27E8;<span
+class="cmitt-10">xr handler cs</span>&#x27E9;<span
+class="cmtt-10">[</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. 6318--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">tag</span>&#x27E9; is the cross-referenced text (e.g.&#x00A0;&#8220;see&#8221;) and &#x27E8;<span
+class="cmti-10">xr list</span>&#x27E9; is a&#x00A0;comma-separated list of
+labels. (This actually has a third argument but it&#8217;s always empty when used with
+<a
+href="#option1">Option&#x00A0;1</a>.)
+</p><!--l. 6323--><p class="indent" > For example, if on page&#x00A0;12 I&#x00A0;have used
+
+
+</p>
+ <div class="verbatim" id="verbatim-200">
+\gls[format=textbf]{apple}
+</div>
+<!--l. 6327--><p class="nopar" > and on page&#x00A0;18 I&#x00A0;have used
+
+
+</p>
+ <div class="verbatim" id="verbatim-201">
+\gls[format=emph]{apple}
+</div>
+<!--l. 6331--><p class="nopar" > then
+
+
+</p>
+ <div class="verbatim" id="verbatim-202">
+\glsnumberlistloop{apple}{\myhandler}
+</div>
+<!--l. 6335--><p class="nopar" > will be equivalent to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-203">
+\myhandler{}{page}{textbf}{12}%
+&#x00A0;<br />\myhandler{}{page}{emph}{18}%
+</div>
+<!--l. 6340--><p class="nopar" > There is a predefined handler that&#8217;s used to display the <a
+href="#glo:numberlist">number list<a
+ id="dx1-52021"></a></a> in the glossary:
+</p><!--l. 6343--><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-52022"></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>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6345--><p class="noindent" >
+The predefined handler used for the cross-references in the glossary is:
+</p><!--l. 6348--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsseeformat[</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>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6349--><p class="noindent" >
+which is described in <a
+href="#sec:customxr"><span
+class="tcrm-1000">&sect;</span>8.1 </a><a
+href="#sec:customxr">Customising Cross-reference Text<!--tex4ht:ref: sec:customxr --></a>.
+</p><!--l. 6352--><p class="indent" > <div class="important" title="Important Note"> <span
+class="cmtt-10">\glsnumberlistloop </span>is not available for Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>. </div>
+</p><!--l. 6354--><p class="noindent" >
+</p><!--l. 6356--><p class="noindent" >
+</p>
+<!--l. 6356--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">5.4 </span> <a
+ id="sec:isthook"></a>Style Hook</h3>
+<!--l. 6359--><p class="noindent" >As from version 4.24, there&#8217;s a hook that&#8217;s used near the end of <span
+class="cmtt-10">\writeist</span><a
+ id="dx1-53001"></a> before the file is
+closed. You can set the code to be performed then using:
+</p><!--l. 6362--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetWriteIstHook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-53002"></a> <span
+class="cmtt-10">\GlsSetWriteIstHook{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6364--><p class="noindent" >
+If you want the &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; to write any information to the file, you need to use
+</p><!--l. 6367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glswrite</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-53003"></a> <span
+class="cmtt-10">\write\glswrite{</span>&#x27E8;<span
+class="cmitt-10">style information</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6369--><p class="noindent" >
+Make sure you use the correct format within &#x27E8;<span
+class="cmti-10">style information</span>&#x27E9;. For example, if you are using
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-53004"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-204">
+\GlsSetWriteIstHook{%
+&#x00A0;<br />&#x00A0;\write\glswrite{page_precedence&#x00A0;"arnAR"}%
+&#x00A0;<br />&#x00A0;\write\glswrite{line_max&#x00A0;80}%
+&#x00A0;<br />}
+</div>
+<!--l. 6377--><p class="nopar" > This changes the page type precedence<a
+ id="dx1-53005"></a> and the maximum line length used by
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-53006"></a>.
+</p><!--l. 6381--><p class="indent" > Remember that if you switch to <span
+class="cmtt-10">xindy</span><a
+ id="dx1-53007"></a>, this will no longer be valid code.
+
+
+</p>
+<!--l. 6384--><p class="indent" > </div>
+</p><!--l. 6384--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">6. <a
+ id="sec:glslink"></a>Links to Glossary Entries</h2>
+</p><!--l. 6387--><p class="indent" > Once you have defined a glossary entry using <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-54001"></a> (<a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining
+Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a>) or <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-54002"></a> (see <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and Other Abbreviations<!--tex4ht:ref: sec:acronyms --></a>), you
+can refer to that entry in the document using one of the commands listed in <a
+href="#sec:gls-like"><span
+class="tcrm-1000">&sect;</span>6.1
+</a><a
+href="#sec:gls-like">The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use Flag Queried)<!--tex4ht:ref: sec:gls-like --></a> or <a
+href="#sec:glstext-like"><span
+class="tcrm-1000">&sect;</span>6.2 </a><a
+href="#sec:glstext-like">The <span
+class="cmtt-10">\glstext</span>-Like
+Commands (First Use Flag Not Queried)<!--tex4ht:ref: sec:glstext-like --></a>. The text which appears at that point in the
+document when using one of these commands is referred to as the <a
+href="#glo:linktext">link text<a
+ id="dx1-54003"></a></a> (even if
+there are no hyperlinks). These commands also add a line to an external file that is
+used to generate the relevant entry in the glossary. This information includes an
+associated location that is added to the <a
+href="#glo:numberlist">number list<a
+ id="dx1-54004"></a></a> for that entry. By default, the
+location refers to the page number. For further information on number lists, see <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5
+</a><a
+href="#sec:numberlists">Number lists<!--tex4ht:ref: sec:numberlists --></a>. These external files need to be post-processed by <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-54005"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-54006"></a></a>
+unless you have chosen Options&#x00A0;<a
+href="#option1">1</a> or&#x00A0;<a
+href="#option4">4</a>. If you don&#8217;t use <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-54007"></a> these
+external files won&#8217;t be created. (Options&#x00A0;<a
+href="#option1">1</a> and&#x00A0;<a
+href="#option4">4</a> write the information to the <span
+class="cmtt-10">.aux</span><a
+ id="dx1-54008"></a>
+file.)
+</p><!--l. 6405--><p class="indent" > Note that repeated use of these commands for the same entry can cause the <a
+href="#glo:numberlist">number list<a
+ id="dx1-54009"></a></a> to
+become quite long, which may not be particular helpful to the reader. In this case,
+you can use the non-indexing commands described in <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using Glossary Terms
+Without Links<!--tex4ht:ref: sec:glsnolink --></a> or you can use the supplemental <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package, which
+provides a means to suppress the automated indexing of the commands listed in this
+chapter.
+</p><!--l. 6413--><p class="indent" > <div class="important" title="Important Note"> I strongly recommend that you don&#8217;t use the commands defined in this chapter in the
+arguments of sectioning or caption commands or any other command that has a moving
+argument.
+</p><!--l. 6418--><p class="indent" > Aside from problems with expansion issues, PDF bookmarks and possible nested
+hyperlinks in the table of contents (or list of whatever) any use of the commands
+described in <a
+href="#sec:gls-like"><span
+class="tcrm-1000">&sect;</span>6.1 </a><a
+href="#sec:gls-like">The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use Flag Queried)<!--tex4ht:ref: sec:gls-like --></a> will have their
+<a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;unset when they appear in the table of contents (or list of whatever).
+</div>
+</p><!--l. 6423--><p class="noindent" >
+</p><!--l. 6425--><p class="indent" > The above warning is particularly important if you are using the <span
+class="cmss-10">glossaries </span>package in
+conjunction with the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-54010"></a> package. Instead, use one of the <span
+class="cmti-10">expandable </span>commands listed in
+<a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using Glossary Terms Without Links<!--tex4ht:ref: sec:glsnolink --></a> (such as <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-54011"></a> <span
+class="cmti-10">but not </span>the non-expandable
+case changing versions like <span
+class="cmtt-10">\Glsentrytext</span><a
+ id="dx1-54012"></a>). Alternatively, provide an alternative via the
+optional argument to the sectioning/caption command or use <span
+class="cmss-10">hyperref</span><a
+ id="dx1-54013"></a>&#8217;s <span
+class="cmtt-10">\texorpdfstring</span><a
+ id="dx1-54014"></a>.
+Examples:
+
+
+</p>
+ <div class="verbatim" id="verbatim-205">
+\chapter{An&#x00A0;overview&#x00A0;of&#x00A0;\glsentrytext{perl}}
+&#x00A0;<br />\chapter[An&#x00A0;overview&#x00A0;of&#x00A0;Perl]{An&#x00A0;overview&#x00A0;of&#x00A0;\gls{perl}}
+&#x00A0;<br />\chapter{An&#x00A0;overview&#x00A0;of&#x00A0;\texorpdfstring{\gls{perl}}{Perl}}
+</div>
+<!--l. 6437--><p class="nopar" > If you want to retain the formatting that&#8217;s available through commands like <span
+class="cmtt-10">\acrshort </span>(for
+example, if you are using one of the small caps styles), then you might want to consider the
+<a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package which provides commands for this purpose.
+</p><!--l. 6444--><p class="indent" > If you want the <a
+href="#glo:linktext">link text<a
+ id="dx1-54015"></a></a> to produce a hyperlink to the corresponding entry details in the
+glossary, you should load the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-54016"></a> package <span
+class="cmti-10">before </span>the <span
+class="cmss-10">glossaries </span>package. That&#8217;s what I&#8217;ve
+done in this document, so if you see a hyperlinked term, such as <a
+href="#glo:linktext">link text<a
+ id="dx1-54017"></a></a>, you can click on
+the word or phrase and it will take you to a brief description in this document&#8217;s
+glossary.
+</p><!--l. 6452--><p class="indent" > <div class="important" title="Important Note"> If you use the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-54018"></a> package, I strongly recommend you use <span
+class="cmtt-10">pdflatex</span><a
+ id="dx1-54019"></a> rather than
+<span
+class="cmtt-10">latex</span><a
+ id="dx1-54020"></a> to compile your document, if possible. The DVI format of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;has limitations with
+the hyperlinks that can cause a problem when used with the <span
+class="cmss-10">glossaries </span>package. Firstly, the
+DVI format can&#8217;t break a hyperlink across a line whereas PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;can. This means that
+long glossary entries (for example, the full form of an acronym) won&#8217;t be able to break across
+a line with the DVI format. Secondly, the DVI format doesn&#8217;t correctly size hyperlinks in
+subscripts or superscripts. This means that if you define a term that may be used as a
+subscript or superscript, if you use the DVI format, it won&#8217;t come out the correct
+size.
+</p><!--l. 6466--><p class="indent" > These are limitations of the DVI format not of the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-54021"></a> package. </div>
+</p><!--l. 6468--><p class="noindent" >
+</p><!--l. 6470--><p class="indent" > It may be that you only want terms in certain glossaries to have hyperlinks, but not for
+other glossaries. In this case, you can use the package option <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-54022"></a> to identify the
+glossary lists that shouldn&#8217;t have hyperlinked <a
+href="#glo:linktext">link text<a
+ id="dx1-54023"></a></a>. See <a
+href="#sec:pkgopts-general"><span
+class="tcrm-1000">&sect;</span>2.1 </a><a
+href="#sec:pkgopts-general">General Options<!--tex4ht:ref: sec:pkgopts-general --></a> for further
+details.
+</p><!--l. 6476--><p class="indent" > The way the <a
+href="#glo:linktext">link text<a
+ id="dx1-54024"></a></a> is displayed depends on
+</p><!--l. 6477--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstextformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54025"></a> <span
+class="cmtt-10">\glstextformat{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6479--><p class="noindent" >
+For example, to make all <a
+href="#glo:linktext">link text<a
+ id="dx1-54026"></a></a> appear in a sans-serif font, do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-206">
+\renewcommand*{\glstextformat}[1]{\textsf{#1}}
+</div>
+<!--l. 6484--><p class="nopar" > Further customisation can be done via <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-54027"></a> or by redefining <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-54028"></a>. See
+<a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3 </a><a
+href="#sec:glsdisplay">Changing the format of the link text<!--tex4ht:ref: sec:glsdisplay --></a> for further details.
+</p><!--l. 6489--><p class="indent" > Each entry has an associated conditional referred to as the <a
+href="#glo:firstuseflag">first use flag</a>. Some of the
+commands described in this chapter automatically unset this flag and can also use it
+to determine what text should be displayed. These types of commands are the
+<a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands and are described in <a
+href="#sec:gls-like"><span
+class="tcrm-1000">&sect;</span>6.1 </a><a
+href="#sec:gls-like">The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use
+Flag Queried)<!--tex4ht:ref: sec:gls-like --></a>. The commands that don&#8217;t reference or change the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;are
+<a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands and are described in <a
+href="#sec:glstext-like"><span
+class="tcrm-1000">&sect;</span>6.2 </a><a
+href="#sec:glstext-like">The <span
+class="cmtt-10">\glstext</span>-Like Commands (First Use
+Flag Not Queried)<!--tex4ht:ref: sec:glstext-like --></a>. See <a
+href="#sec:glsunset"><span
+class="tcrm-1000">&sect;</span>14 </a><a
+href="#sec:glsunset">Unsetting and Resetting Entry Flags<!--tex4ht:ref: sec:glsunset --></a> for commands that unset
+(mark the entry as having been used) or reset (mark the entry as not used) the <a
+href="#glo:firstuseflag">first use
+flag</a>&#x00A0;without referencing the entries.
+</p><!--l. 6501--><p class="indent" > The <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands all take a first optional argument that is a
+comma-separated list of &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; options, described below. They also have a star-variant,
+which inserts <span
+class="cmtt-10">hyper=false </span>at the start of the list of options and a plus-variant, which
+inserts <span
+class="cmtt-10">hyper=true </span>at the start of the list of options. For example <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls*{sample}</span></span></span>
+is the same as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[hyper=false]{sample}</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls+{sample}</span></span></span> is the same as
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[hyper=true]{sample}</span></span></span>, whereas just <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{sample}</span></span></span> will use the default hyperlink
+setting which depends on a number of factors (such as whether the entry is in a glossary that
+has been identified in the <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-54029"></a> list). You can override the <span
+class="cmss-10">hyper</span><a
+ id="dx1-54030"></a> key in the variant&#8217;s
+optional argument, for example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls*[hyper=true]{sample}</span></span></span> but this creates redundancy
+and is best avoided. The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package provides the option to add a third custom
+variant.
+</p><!--l. 6518--><p class="indent" > <div class="important" title="Important Note"> Avoid nesting these commands. For example don&#8217;t do <span
+class="cmtt-10">\glslink{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\gls</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label2</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">} </span>as this is likely to cause problems. By implication, this means that
+you should avoid using any of these commands within the <span
+class="cmss-10">text</span><a
+ id="dx1-54031"></a>, <span
+class="cmss-10">first</span><a
+ id="dx1-54032"></a>, <span
+class="cmss-10">short</span><a
+ id="dx1-54033"></a> or <span
+class="cmss-10">long</span><a
+ id="dx1-54034"></a>
+keys (or their plural equivalent) or any other key that you plan to access through
+these commands. (For example, the <span
+class="cmss-10">symbol</span><a
+ id="dx1-54035"></a> key if you intend to use <span
+class="cmtt-10">\glssymbol</span>.)
+</div>
+</p><!--l. 6528--><p class="noindent" >
+</p><!--l. 6530--><p class="indent" > The keys listed below are available for the optional argument. The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package
+provides additional keys. (See the <span
+class="cmss-10">glossaries-extra </span>manual for further details.)
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">hyper</span><a
+ id="dx1-54036"></a> </dt><dd
+class="description">This is a boolean key which can be used to enable/disable the hyperlink
+ to the relevant entry in the glossary. If this key is omitted, the value is
+ determined by current settings, as indicated above. For example, when used with
+ a <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;command, if this is the first use and the <span
+class="cmss-10">hyperfirst=false</span><a
+ id="dx1-54037"></a> package
+ option has been used, then the default value is <span
+class="cmtt-10">hyper=false</span>. The hyperlink
+ can be forced on using <span
+class="cmtt-10">hyper=true </span>unless the hyperlinks have been suppressed
+ using <span
+class="cmtt-10">\glsdisablehyper</span><a
+ id="dx1-54038"></a>. You must load the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-54039"></a> package before the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-54040"></a>
+ package to ensure the hyperlinks work.
+
+
+ </dd><dt class="description">
+<span
+class="cmssbx-10">format</span><a
+ id="dx1-54041"></a> </dt><dd
+class="description">This specifies how to format the associated location number for this entry in the
+ glossary. This value is equivalent to the <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-54042"></a></a> encap value, and (as with
+ <span
+class="cmtt-10">\index</span><a
+ id="dx1-54043"></a>) the value needs to be the name of a command <span
+class="cmti-10">without </span>the initial
+ backslash. As with <span
+class="cmtt-10">\index</span><a
+ id="dx1-54044"></a>, the characters <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> can also be used to specify the
+ beginning and ending of a number range and they must be in matching pairs. (For
+ example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[format={(}]{sample}</span></span></span> on one page to start the range and later
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[format={)}]{sample}</span></span></span> to close the range.) Again as with <span
+class="cmtt-10">\index</span><a
+ id="dx1-54045"></a>, the command
+ should be the name of a command which takes an argument (which will be the
+ associated location). Be careful not to use a declaration (such as <span
+class="cmtt-10">bfseries</span>) instead of a
+ text block command (such as <span
+class="cmtt-10">textbf</span>) as the effect is not guaranteed to be
+ localised. If you want to apply more than one style to a given entry (e.g.&#x00A0;<span
+class="cmbx-10">bold</span>
+ and <span
+class="cmti-10">italic</span>) you will need to create a command that applies both formats,
+ e.g.&#x00A0;
+
+
+ <div class="verbatim" id="verbatim-207">
+ \newcommand*{\textbfem}[1]{\textbf{\emph{#1}}}
+</div>
+ <!--l. 6564--><p class="nopar" > and use that command.
+ </p><!--l. 6567--><p class="noindent" >In this document, the standard formats refer to the standard text block commands such
+ as <span
+class="cmtt-10">\textbf</span><a
+ id="dx1-54046"></a> or <span
+class="cmtt-10">\emph</span><a
+ id="dx1-54047"></a> or any of the commands listed in <a
+href="#tab:hyperxx">table&#x00A0;6.1</a>. You can combine
+ a range and format using <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">(</span></span></span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9; to start the range and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">)</span></span></span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9; to end
+ the range. The &#x27E8;<span
+class="cmti-10">format</span>&#x27E9; part must match. For example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">format={(emph}</span></span></span> and
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">format={)emph}</span></span></span>.
+ </p><!--l. 6574--><p class="noindent" ><div class="important" title="Important Note"> If you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-54048"></a></a> instead of <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-54049"></a></a>, you must specify any non-standard
+ formats that you want to use with the <span
+class="cmss-10">format</span><a
+ id="dx1-54050"></a> key using <span
+class="cmtt-10">\GlsAddXdyAttribute</span><a
+ id="dx1-54051"></a>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">name</span>&#x27E9;<span
+class="cmtt-10">}</span>. So if you use <span
+class="cmtt-10">xindy</span><a
+ id="dx1-54052"></a> with the above example, you would need to
+ add:
+
+
+</p>
+ <div class="verbatim" id="verbatim-208">
+ \GlsAddXdyAttribute{textbfem}
+</div>
+ <!--l. 6582--><p class="nopar" > See <a
+href="#sec:xindy"><span
+class="tcrm-1000">&sect;</span>11 </a><a
+href="#sec:xindy">Xindy (Option 3)<!--tex4ht:ref: sec:xindy --></a> for further details. </div>
+ </p><!--l. 6584--><p class="noindent" >
+ </p><!--l. 6586--><p class="noindent" >If you are using hyperlinks and you want to change the font of the hyperlinked location,
+ don&#8217;t use <span
+class="cmtt-10">\hyperpage</span><a
+ id="dx1-54053"></a> (provided by the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-54054"></a> package) as the locations may not refer
+ to a page number. Instead, the <span
+class="cmss-10">glossaries </span>package provides number formats listed in
+ <a
+href="#tab:hyperxx">table&#x00A0;6.1</a>.
+</p>
+ <div class="table">
+ <!--l. 6592--><p class="noindent" ><a
+ id="tab:hyperxx"></a></p><hr class="float" /><div class="float"
+>
+ <div class="caption"
+><span class="id">Table&#x00A0;6.1: </span><span
+class="content">Predefined Hyperlinked Location Formats</span></div><!--tex4ht:label?: x1-540551 -->
+<div class="tabular"> <table id="TBL-6" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-6-1g"><col
+id="TBL-6-1" /><col
+id="TBL-6-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-6-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-1"
+class="td11"> <span
+class="cmtt-10">hyperrm</span><a
+ id="dx1-54056"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-1-2"
+class="td11"> serif hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-1"
+class="td11"> <span
+class="cmtt-10">hypersf</span><a
+ id="dx1-54057"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-2-2"
+class="td11"> sans-serif hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-1"
+class="td11"> <span
+class="cmtt-10">hypertt</span><a
+ id="dx1-54058"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-3-2"
+class="td11"> monospaced hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-1"
+class="td11"> <span
+class="cmtt-10">hyperbf</span><a
+ id="dx1-54059"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-4-2"
+class="td11"> bold hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-1"
+class="td11"> <span
+class="cmtt-10">hypermd</span><a
+ id="dx1-54060"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-5-2"
+class="td11"> medium weight hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-1"
+class="td11"> <span
+class="cmtt-10">hyperit</span><a
+ id="dx1-54061"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-6-2"
+class="td11"> italic hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-1"
+class="td11"> <span
+class="cmtt-10">hypersl</span><a
+ id="dx1-54062"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-7-2"
+class="td11"> slanted hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-8-1"
+class="td11"> <span
+class="cmtt-10">hyperup</span><a
+ id="dx1-54063"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-8-2"
+class="td11"> upright hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-9-1"
+class="td11"> <span
+class="cmtt-10">hypersc</span><a
+ id="dx1-54064"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-9-2"
+class="td11"> small caps hyperlink </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-6-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-6-10-1"
+class="td11"> <span
+class="cmtt-10">hyperemph</span><a
+ id="dx1-54065"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-6-10-2"
+class="td11"> emphasized hyperlink </td></tr></table>
+</div>
+ </div><hr class="endfloat" />
+ </div>
+ <!--l. 6612--><p class="noindent" >Note that if the <span
+class="cmtt-10">\hyperlink</span><a
+ id="dx1-54066"></a> command hasn&#8217;t been defined, the <span
+class="cmtt-10">hyper</span>&#x27E8;<span
+class="cmti-10">xx</span>&#x27E9; formats are
+ equivalent to the analogous <span
+class="cmtt-10">text</span>&#x27E8;<span
+class="cmti-10">xx</span>&#x27E9; font commands (and <span
+class="cmtt-10">hyperemph </span>is equivalent to
+ <span
+class="cmtt-10">emph</span>). If you want to make a new format, you will need to define a command
+ which takes one argument and use that. For example, if you want the location
+ number to be in a bold sans-serif font, you can define a command called, say,
+ <span
+class="cmtt-10">\hyperbsf</span><a
+ id="dx1-54067"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-209">
+ \newcommand{\hyperbsf}[1]{\textbf{\hypersf{#1}}}
+</div>
+ <!--l. 6622--><p class="nopar" > and then use <span
+class="cmtt-10">hyperbsf </span>as the value for the <span
+class="cmss-10">format</span><a
+ id="dx1-54068"></a>
+ key.<span class="footnote-mark"><a
+href="#fn1x6" id="fn1x6-bk"><sup class="textsuperscript">6.1</sup></a></span><a
+ id="x1-54069f1"></a>
+ Remember that if you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-54070"></a></a>, you will need to add this to the list of location
+ attributes:
+
+
+</p>
+ <div class="verbatim" id="verbatim-210">
+ \GlsAddXdyAttribute{hyperbsf}
+</div>
+ <!--l. 6630--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">counter</span><a
+ id="dx1-54071"></a> </dt><dd
+class="description">This specifies which counter to use for this location. This overrides the default
+ counter used by this entry. (See also <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5 </a><a
+href="#sec:numberlists">Number lists<!--tex4ht:ref: sec:numberlists --></a>.)
+ </dd><dt class="description">
+<span
+class="cmssbx-10">local</span><a
+ id="dx1-54072"></a> </dt><dd
+class="description">This is a boolean key that only makes a difference when used with <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands
+ that change the entry&#8217;s <a
+href="#glo:firstuseflag">first use flag</a>. If <span
+class="cmtt-10">local=true</span>, the change to the first use flag will
+ be localised to the current scope. The default is <span
+class="cmtt-10">local=false</span>.
+ </dd></dl>
+<!--l. 6644--><p class="indent" > <div class="important" title="Important Note"> The <a
+href="#glo:linktext">link text<a
+ id="dx1-54073"></a></a> isn&#8217;t scoped by default. Any unscoped declarations in the <a
+href="#glo:linktext">link text<a
+ id="dx1-54074"></a></a> may
+affect subsequent text. </div>
+</p><!--l. 6647--><p class="noindent" >
+</p>
+<!--l. 6649--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.1 </span> <a
+ id="sec:gls-like"></a>The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use Flag Queried)</h3>
+<!--l. 6652--><p class="noindent" >This section describes the commands that unset (mark as used) the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;on
+completion, and in most cases they use the current state of the flag to determine the text to
+be displayed. As described above, these commands all have a star-variant (<span
+class="cmtt-10">hyper=false</span>) and
+a plus-variant (<span
+class="cmtt-10">hyper=true</span>) and have an optional first argument that is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9;
+list.
+</p><!--l. 6659--><p class="indent" > These commands use <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-55001"></a> or the equivalent definition provided by
+<span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-55002"></a> to determine the automatically generated text and its format (see <a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3
+</a><a
+href="#sec:glsdisplay">Changing the format of the link text<!--tex4ht:ref: sec:glsdisplay --></a>).
+</p><!--l. 6663--><p class="indent" > Apart from <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-55003"></a>, the commands described in this section also have a <span
+class="cmti-10">final </span>optional
+argument &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; which may be used to insert material into the automatically generated
+text.
+</p><!--l. 6667--><p class="indent" > <div class="important" title="Important Note"> Since the commands have a final optional argument, take care if you actually want to
+display an open square bracket after the command when the final optional argument is
+absent. Insert an empty set of braces <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{}</span></span></span> immediately before the opening square bracket to
+prevent it from being interpreted as the final argument. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-211">
+\gls{sample}&#x00A0;{}[Editor's&#x00A0;comment]
+</div>
+<!--l. 6676--><p class="nopar" >
+</p><!--l. 6678--><p class="indent" > Don&#8217;t use any of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;or <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands in the &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; argument.
+</div>
+</p><!--l. 6680--><p class="noindent" >
+</p><!--l. 6682--><p class="indent" > Take care using these commands within commands or environments that are processed
+multiple times as this can confuse the first use flag query and state change. This includes
+frames with overlays in <span
+class="cmss-10">beamer</span><a
+ id="dx1-55004"></a> and the <span
+class="cmss-10">tabularx </span>environment provided by <span
+class="cmss-10">tabularx</span><a
+ id="dx1-55005"></a>. The
+<span
+class="cmss-10">glossaries </span>package automatically deals with this issue in <span
+class="cmss-10">amsmath</span><a
+ id="dx1-55006"></a>&#8217;s <span
+class="cmss-10">align </span>environment. You can
+apply a patch to <span
+class="cmss-10">tabularx</span><a
+ id="dx1-55007"></a> by placing the following command (new to v4.28) in the
+preamble:
+</p><!--l. 6690--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspatchtabularx</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55008"></a> <span
+class="cmtt-10">\glspatchtabularx </span></div><hr>
+</p><!--l. 6692--><p class="noindent" >
+This does nothing if <span
+class="cmss-10">tabularx</span><a
+ id="dx1-55009"></a> hasn&#8217;t been loaded. There&#8217;s no patch available for <span
+class="cmss-10">beamer</span><a
+ id="dx1-55010"></a>. See
+<a
+href="#sec:glsunset"><span
+class="tcrm-1000">&sect;</span>14 </a><a
+href="#sec:glsunset">Unsetting and Resetting Entry Flags<!--tex4ht:ref: sec:glsunset --></a> for more details.
+</p><!--l. 6697--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\gls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55011"></a> <span
+class="cmtt-10">\gls[</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. 6699--><p class="noindent" >
+This command typically determines the <a
+href="#glo:linktext">link text<a
+ id="dx1-55012"></a></a> from the values of the <span
+class="cmss-10">text</span><a
+ id="dx1-55013"></a> or <span
+class="cmss-10">first</span><a
+ id="dx1-55014"></a> keys
+supplied when the entry was defined using <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-55015"></a>. However, if the entry was
+defined using <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-55016"></a> and <span
+class="cmtt-10">\setacronymstyle</span><a
+ id="dx1-55017"></a> was used, then the link text<a
+ id="dx1-55018"></a> will usually
+be determined from the <span
+class="cmss-10">long</span><a
+ id="dx1-55019"></a> or <span
+class="cmss-10">short</span><a
+ id="dx1-55020"></a> keys.
+</p><!--l. 6707--><p class="indent" > There are two upper case variants:
+</p><!--l. 6708--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Gls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55021"></a> <span
+class="cmtt-10">\Gls[</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. 6710--><p class="noindent" >
+and
+</p><!--l. 6712--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLS</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55022"></a> <span
+class="cmtt-10">\GLS[</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. 6714--><p class="noindent" >
+which make the first letter of the link text or all the link text upper case, respectively. For the
+former, the uppercasing of the first letter is performed by <span
+class="cmtt-10">\makefirstuc</span><a
+ id="dx1-55023"></a>.
+</p><!--l. 6719--><p class="indent" > <div class="important" title="Important Note"> The first letter uppercasing command <span
+class="cmtt-10">\makefirstuc </span>has limitations which must be taken
+into account if you use <span
+class="cmtt-10">\Gls </span>or any of the other commands that convert the first letter to
+uppercase. </div>
+</p><!--l. 6724--><p class="noindent" >
+The upper casing is performed as follows: </p>
+ <ul class="itemize1">
+ <li class="itemize">If the first thing in the <a
+href="#glo:linktext">link text<a
+ id="dx1-55024"></a></a> is a command follow by a group, the upper casing is
+ performed on the first object of the group. For example, if an entry has been defined
+ as
+
+
+ <div class="verbatim" id="verbatim-212">
+ \newglossaryentry{sample}{
+ &#x00A0;<br />&#x00A0;name={\emph{sample}&#x00A0;phrase},
+ &#x00A0;<br />&#x00A0;sort={sample&#x00A0;phrase},
+ &#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+</div>
+ <!--l. 6735--><p class="nopar" > Then <span
+class="cmtt-10">\Gls</span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{sample}</span></span></span> will set the <a
+href="#glo:linktext">link text<a
+ id="dx1-55025"></a></a>
+ to<span class="footnote-mark"><a
+href="#fn2x6" id="fn2x6-bk"><sup class="textsuperscript">6.2</sup></a></span><a
+ id="x1-55026f2"></a>
+
+
+</p>
+ <div class="verbatim" id="verbatim-213">
+ \emph{\MakeUppercase&#x00A0;sample}&#x00A0;phrase
+</div>
+ <!--l. 6741--><p class="nopar" > which will appear as <span
+class="cmti-10">Sample </span>phrase.
+ </p></li>
+ <li class="itemize">If the first thing in the <a
+href="#glo:linktext">link text<a
+ id="dx1-55027"></a></a> isn&#8217;t a command or is a command but isn&#8217;t followed by
+ a group, then the upper casing will be performed on that first thing. For example, if an
+ entry has been defined as:
+
+
+ <div class="verbatim" id="verbatim-214">
+ \newglossaryentry{sample}{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={\oe-ligature},
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={oe-ligature},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}
+ &#x00A0;<br />}
+</div>
+ <!--l. 6754--><p class="nopar" > Then <span
+class="cmtt-10">\Gls</span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{sample}</span></span></span> will set the <a
+href="#glo:linktext">link text<a
+ id="dx1-55028"></a></a> to
+
+
+</p>
+ <div class="verbatim" id="verbatim-215">
+ \MakeUppercase&#x00A0;\oe-ligature
+</div>
+ <!--l. 6758--><p class="nopar" > which will appear as &#338;-ligature.
+ </p></li>
+ <li class="itemize">If you have <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-55029"></a> v2.01 or above, an extra case is added. If the first thing is <span
+class="cmtt-10">\protect</span>
+ it will be discarded and the above rules will then be tried.
+ </li></ul>
+<!--l. 6766--><p class="noindent" >(Note the use of the <span
+class="cmss-10">sort</span><a
+ id="dx1-55030"></a> key in the above examples.)
+</p><!--l. 6768--><p class="indent" > There are hundreds of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;packages that altogether define thousands of commands
+with various syntax and it&#8217;s impossible for <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-55031"></a> to take them all into account. The above
+rules are quite simplistic and are designed for <a
+href="#glo:linktext">link text<a
+ id="dx1-55032"></a></a> that starts with a&#x00A0;text-block
+command (such as <span
+class="cmtt-10">\emph</span>) or a command that produces a character (such as <span
+class="cmtt-10">\oe</span>). This means
+that if your <a
+href="#glo:linktext">link text<a
+ id="dx1-55033"></a></a> starts with something that doesn&#8217;t adhere to <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-55034"></a>&#8217;s assumptions then
+things are likely to go wrong.
+</p><!--l. 6777--><p class="indent" > For example, starting with a math-shift symbol:
+
+
+</p>
+ <div class="verbatim" id="verbatim-216">
+\newglossaryentry{sample}{
+&#x00A0;<br />&#x00A0;&#x00A0;name={$a$},
+&#x00A0;<br />&#x00A0;&#x00A0;sort={a},
+&#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}
+&#x00A0;<br />}
+</div>
+<!--l. 6784--><p class="nopar" > This falls into case&#x00A0;2 above, so the <a
+href="#glo:linktext">link text<a
+ id="dx1-55035"></a></a> will be set to
+
+
+</p>
+ <div class="verbatim" id="verbatim-217">
+\MakeUppercase&#x00A0;$a$
+</div>
+<!--l. 6788--><p class="nopar" > This attempts to uppercase the math-shift <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">$</span></span></span>, which will go wrong. In this case it&#8217;s not
+appropriate to perform any case-changing, but it may be that you want to use <span
+class="cmtt-10">\Gls</span>
+programmatically without checking if the text contains any maths. In this case, the simplest
+solution is to insert an empty brace at the start:
+
+
+</p>
+ <div class="verbatim" id="verbatim-218">
+\newglossaryentry{sample}{
+&#x00A0;<br />&#x00A0;&#x00A0;name={{}$a$},
+&#x00A0;<br />&#x00A0;&#x00A0;sort={a},
+&#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}
+&#x00A0;<br />}
+</div>
+<!--l. 6801--><p class="nopar" > Now the <a
+href="#glo:linktext">link text<a
+ id="dx1-55036"></a></a> will be set to
+
+
+</p>
+ <div class="verbatim" id="verbatim-219">
+\MakeUppercase{}$a$
+</div>
+<!--l. 6805--><p class="nopar" > and the <span
+class="cmtt-10">\uppercase </span>becomes harmless.
+</p><!--l. 6808--><p class="indent" > Another issue occurs when the <a
+href="#glo:linktext">link text<a
+ id="dx1-55037"></a></a> starts with a command followed by an argument
+(case&#x00A0;1) but the argument is a label, identifier or something else that shouldn&#8217;t have a
+case-change. A common example is when the <a
+href="#glo:linktext">link text<a
+ id="dx1-55038"></a></a> starts with one of the commands
+described in this chapter. (But you haven&#8217;t done that, have you? What with the warning not
+to do it at the beginning of the chapter.) Or when the <a
+href="#glo:linktext">link text<a
+ id="dx1-55039"></a></a> starts with one of the
+non-linking commands described in <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using Glossary Terms Without Links<!--tex4ht:ref: sec:glsnolink --></a>. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-220">
+\newglossaryentry{sample}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />\newglossaryentry{sample2}{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={\glsentrytext{sample}&#x00A0;two},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;sort={sample&#x00A0;two},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={another&#x00A0;example}
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 6823--><p class="nopar" > Now the <a
+href="#glo:linktext">link text<a
+ id="dx1-55040"></a></a> will be set to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-221">
+\glsentrytext{\MakeUppercase&#x00A0;sample}&#x00A0;two
+</div>
+<!--l. 6827--><p class="nopar" > This will generate an error because there&#8217;s no entry with the label given by
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\MakeUppercase</span><span
+class="cmtt-10">&#x00A0;sample</span></span></span>. The best solution here is to write the term out in the <span
+class="cmss-10">text</span><a
+ id="dx1-55041"></a> field and
+use the command in the <span
+class="cmss-10">name</span><a
+ id="dx1-55042"></a> field. If you don&#8217;t use <span
+class="cmtt-10">\glsname </span>anywhere in your document,
+you can use <span
+class="cmtt-10">\gls </span>in the <span
+class="cmss-10">name</span><a
+ id="dx1-55043"></a> field:
+
+
+</p>
+ <div class="verbatim" id="verbatim-222">
+\newglossaryentry{sample}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />\newglossaryentry{sample2}{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={\gls{sample}&#x00A0;two},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;sort={sample&#x00A0;two},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;text={sample&#x00A0;two},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={another&#x00A0;example}
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 6841--><p class="nopar" >
+</p><!--l. 6843--><p class="indent" > If the <a
+href="#glo:linktext">link text<a
+ id="dx1-55044"></a></a> starts with a command that has an optional argument or with multiple
+arguments where the actual text isn&#8217;t in the first argument, then <span
+class="cmtt-10">\makefirstuc </span>will also fail.
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-223">
+\newglossaryentry{sample}{
+&#x00A0;<br />&#x00A0;name={\textcolor{blue}{sample}&#x00A0;phrase},
+&#x00A0;<br />&#x00A0;sort={sample&#x00A0;phrase},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+</div>
+<!--l. 6852--><p class="nopar" > Now the <a
+href="#glo:linktext">link text<a
+ id="dx1-55045"></a></a> will be set to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-224">
+\textcolor{\MakeUppercase&#x00A0;blue}{sample}&#x00A0;phrase
+</div>
+<!--l. 6856--><p class="nopar" > This won&#8217;t work because <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\MakeUppercase</span><span
+class="cmtt-10">&#x00A0;blue</span></span></span> isn&#8217;t a recognised colour name. In this case
+you will have to define a helper command where the first argument is the text. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-225">
+\newglossaryentry{sample}{
+&#x00A0;<br />\newcommand*{\blue}[1]{\textcolor{blue}{#1}}
+&#x00A0;<br />&#x00A0;name={\blue{sample}&#x00A0;phrase},
+&#x00A0;<br />&#x00A0;sort={sample&#x00A0;phrase},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+</div>
+<!--l. 6866--><p class="nopar" > In fact, since the whole design ethos of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is the separation of content and style, it&#8217;s
+better to use a semantic command. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-226">
+\newglossaryentry{sample}{
+&#x00A0;<br />\newcommand*{\keyword}[1]{\textcolor{blue}{#1}}
+&#x00A0;<br />&#x00A0;name={\keyword{sample}&#x00A0;phrase},
+&#x00A0;<br />&#x00A0;sort={sample&#x00A0;phrase},
+&#x00A0;<br />&#x00A0;description={an&#x00A0;example}}
+</div>
+<!--l. 6876--><p class="nopar" > For further details see the <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-55046"></a> user manual.
+</p><!--l. 6879--><p class="indent" > There are plural forms that are analogous to <span
+class="cmtt-10">\gls</span>:
+</p><!--l. 6880--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55047"></a> <span
+class="cmtt-10">\glspl[</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. 6882--><p class="noindent" >
+</p><!--l. 6883--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55048"></a> <span
+class="cmtt-10">\Glspl[</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. 6885--><p class="noindent" >
+</p><!--l. 6886--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55049"></a> <span
+class="cmtt-10">\GLSpl[</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. 6888--><p class="noindent" >
+These typically determine the link text from the <span
+class="cmss-10">plural</span><a
+ id="dx1-55050"></a> or <span
+class="cmss-10">firstplural</span><a
+ id="dx1-55051"></a> keys supplied when the
+entry was defined using <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-55052"></a> or, if the entry is an abbreviation and
+<span
+class="cmtt-10">\setacronymstyle </span>was used, from the <span
+class="cmss-10">longplural</span><a
+ id="dx1-55053"></a> or <span
+class="cmss-10">shortplural</span><a
+ id="dx1-55054"></a> keys.
+</p><!--l. 6895--><p class="indent" > <div class="important" title="Important Note"> Be careful when you use glossary entries in math mode especially if you are using <span
+class="cmss-10">hyperref</span><a
+ id="dx1-55055"></a>
+as it can affect the spacing of subscripts and superscripts. For example, suppose you have
+defined the following entry:
+
+
+</p>
+ <div class="verbatim" id="verbatim-227">
+\newglossaryentry{Falpha}{name={F_\alpha},
+&#x00A0;<br />description=sample}
+</div>
+<!--l. 6903--><p class="nopar" > and later you use it in math mode:
+
+
+</p>
+ <div class="verbatim" id="verbatim-228">
+$\gls{Falpha}^2$
+</div>
+<!--l. 6907--><p class="nopar" > This will result in <span
+class="cmmi-10">F</span><sub><span
+class="cmmi-7">&#x03B1;</span></sub><sup><span
+class="cmr-7">2</span></sup> instead of <span
+class="cmmi-10">F</span><sub><span
+class="cmmi-7">&#x03B1;</span></sub><sup><span
+class="cmr-7">2</span></sup>. In this situation it&#8217;s best to bring the superscript into
+the hyperlink using the final &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; optional argument:
+
+
+</p>
+ <div class="verbatim" id="verbatim-229">
+$\gls{Falpha}[^2]$
+</div>
+<!--l. 6913--><p class="nopar" > </div>
+</p><!--l. 6914--><p class="noindent" >
+</p><!--l. 6916--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdisp</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-55056"></a> <span
+class="cmtt-10">\glsdisp[</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">link text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6918--><p class="noindent" >
+This behaves in the same way as the above commands, except that the &#x27E8;<span
+class="cmti-10">link text</span>&#x27E9; is explicitly
+set. There&#8217;s no final optional argument as any inserted material can be added to the &#x27E8;<span
+class="cmti-10">link text</span>&#x27E9;
+argument.
+</p><!--l. 6924--><p class="indent" > <div class="important" title="Important Note"> Don&#8217;t use any of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;or <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands in the &#x27E8;<span
+class="cmti-10">link text</span>&#x27E9; argument of
+<span
+class="cmtt-10">\glsdisp</span>. </div>
+</p><!--l. 6927--><p class="noindent" >
+</p><!--l. 6929--><p class="noindent" >
+</p>
+<!--l. 6929--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.2 </span> <a
+ id="sec:glstext-like"></a>The <span
+class="cmtt-10">\glstext</span>-Like Commands (First Use Flag Not Queried)</h3>
+<!--l. 6932--><p class="noindent" >This section describes the commands that don&#8217;t change or reference the <a
+href="#glo:firstuseflag">first use flag</a>.
+As described above, these commands all have a star-variant (<span
+class="cmtt-10">hyper=false</span>) and a
+plus-variant (<span
+class="cmtt-10">hyper=true</span>) and have an optional first argument that is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9;
+list. These commands also don&#8217;t use <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-56001"></a> or the equivalent definition
+provided by <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-56002"></a> (see <a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3 </a><a
+href="#sec:glsdisplay">Changing the format of the link text<!--tex4ht:ref: sec:glsdisplay --></a>).
+Additional commands for abbreviations are described in <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13 </a><a
+href="#sec:acronyms">Acronyms and Other
+Abbreviations<!--tex4ht:ref: sec:acronyms --></a>.
+</p><!--l. 6942--><p class="indent" > Apart from <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-56003"></a>, the commands described in this section also have a <span
+class="cmti-10">final</span>
+optional argument &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; which may be used to insert material into the automatically
+generated text. See the caveat above in <a
+href="#sec:gls-like"><span
+class="tcrm-1000">&sect;</span>6.1 </a><a
+href="#sec:gls-like">The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use Flag
+Queried)<!--tex4ht:ref: sec:gls-like --></a>.
+</p><!--l. 6947--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56004"></a> <span
+class="cmtt-10">\glslink[</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">link text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6949--><p class="noindent" >
+This command explicitly sets the <a
+href="#glo:linktext">link text<a
+ id="dx1-56005"></a></a> as given in the final argument.
+</p><!--l. 6953--><p class="indent" > <div class="important" title="Important Note"> Don&#8217;t use any of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;or <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands in the argument of
+<span
+class="cmtt-10">\glslink</span>. By extension, this means that you can&#8217;t use them in the value of fields that are
+used to form <a
+href="#glo:linktext">link text<a
+ id="dx1-56006"></a></a>. </div>
+</p><!--l. 6958--><p class="noindent" >
+</p><!--l. 6960--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56007"></a> <span
+class="cmtt-10">\glstext[</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. 6962--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-56008"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56009"></a></a>.
+
+
+</p><!--l. 6966--><p class="indent" > There are also analogous commands:
+</p><!--l. 6967--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glstext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56010"></a> <span
+class="cmtt-10">\Glstext[</span>&#x27E8;<span
+class="cmitt-10">options</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. 6969--><p class="noindent" >
+</p><!--l. 6970--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLStext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56011"></a> <span
+class="cmtt-10">\GLStext[</span>&#x27E8;<span
+class="cmitt-10">options</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. 6972--><p class="noindent" >
+These convert the first character or all the characters to uppercase, respectively. See the note
+on <span
+class="cmtt-10">\Gls </span>above for details on the limitations of converting the first letter to upper
+case.
+</p><!--l. 6977--><p class="indent" > There&#8217;s no equivalent command for title-casing, but you can use the more generic
+command <span
+class="cmtt-10">\glsentrytitlecase</span><a
+ id="dx1-56012"></a> in combination with <span
+class="cmtt-10">\glslink</span>. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-230">
+\glslink{sample}{\glsentrytitlecase{sample}{text}}
+</div>
+<!--l. 6982--><p class="nopar" > (See <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using Glossary Terms Without Links<!--tex4ht:ref: sec:glsnolink --></a>.)
+</p><!--l. 6985--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56013"></a> <span
+class="cmtt-10">\glsfirst[</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. 6987--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">first</span><a
+ id="dx1-56014"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56015"></a></a>.
+</p><!--l. 6991--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 6992--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56016"></a> <span
+class="cmtt-10">\Glsfirst[</span>&#x27E8;<span
+class="cmitt-10">options</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. 6994--><p class="noindent" >
+</p><!--l. 6995--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56017"></a> <span
+class="cmtt-10">\GLSfirst[</span>&#x27E8;<span
+class="cmitt-10">options</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. 6997--><p class="noindent" >
+</p><!--l. 6999--><p class="indent" > <div class="important" title="Important Note"> The value of the <span
+class="cmss-10">first</span><a
+ id="dx1-56018"></a> key (and <span
+class="cmss-10">firstplural</span><a
+ id="dx1-56019"></a> key) doesn&#8217;t necessarily match the text produced
+by <span
+class="cmtt-10">\gls</span><a
+ id="dx1-56020"></a> (or <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-56021"></a>) on <a
+href="#glo:firstuse">first use</a>&#x00A0;as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56022"></a></a> used by <span
+class="cmtt-10">\gls</span><a
+ id="dx1-56023"></a> may be modified
+through commands like <span
+class="cmtt-10">\defglsentry</span><a
+ id="dx1-56024"></a>. (Similarly, the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-56025"></a> and <span
+class="cmss-10">plural</span><a
+ id="dx1-56026"></a> keys
+don&#8217;t necessarily match the link text<a
+ id="dx1-56027"></a> used by <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glspl </span>on subsequent use.)
+</div>
+</p><!--l. 7007--><p class="noindent" >
+</p><!--l. 7009--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56028"></a> <span
+class="cmtt-10">\glsplural[</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. 7011--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">plural</span><a
+ id="dx1-56029"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56030"></a></a>.
+</p><!--l. 7015--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7016--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56031"></a> <span
+class="cmtt-10">\Glsplural[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7018--><p class="noindent" >
+</p><!--l. 7019--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56032"></a> <span
+class="cmtt-10">\GLSplural[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7021--><p class="noindent" >
+</p><!--l. 7023--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56033"></a> <span
+class="cmtt-10">\glsfirstplural[</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. 7025--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-56034"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56035"></a></a>.
+</p><!--l. 7029--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7030--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56036"></a> <span
+class="cmtt-10">\Glsfirstplural[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7032--><p class="noindent" >
+</p><!--l. 7033--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56037"></a> <span
+class="cmtt-10">\GLSfirstplural[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7035--><p class="noindent" >
+</p><!--l. 7037--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56038"></a> <span
+class="cmtt-10">\glsname[</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. 7039--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-56039"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56040"></a></a>. Note that this may be
+different from the values of the <span
+class="cmss-10">text</span><a
+ id="dx1-56041"></a> or <span
+class="cmss-10">first</span><a
+ id="dx1-56042"></a> keys. In general it&#8217;s better to use <span
+class="cmtt-10">\glstext </span>or
+<span
+class="cmtt-10">\glsfirst </span>instead of <span
+class="cmtt-10">\glsname</span>.
+</p><!--l. 7045--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7046--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56043"></a> <span
+class="cmtt-10">\Glsname[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7048--><p class="noindent" >
+</p><!--l. 7049--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56044"></a> <span
+class="cmtt-10">\GLSname[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7051--><p class="noindent" >
+</p><!--l. 7053--><p class="indent" > <div class="important" title="Important Note"> In general it&#8217;s best to avoid <span
+class="cmtt-10">\Glsname </span>with acronyms. Instead, consider using <span
+class="cmtt-10">\Acrlong</span>,
+<span
+class="cmtt-10">\Acrshort </span>or <span
+class="cmtt-10">\Acrfull</span>. </div>
+</p><!--l. 7056--><p class="noindent" >
+</p><!--l. 7058--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56045"></a> <span
+class="cmtt-10">\glssymbol[</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. 7060--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">symbol</span><a
+ id="dx1-56046"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56047"></a></a>.
+</p><!--l. 7064--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7065--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glssymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56048"></a> <span
+class="cmtt-10">\Glssymbol[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7067--><p class="noindent" >
+</p><!--l. 7068--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSsymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56049"></a> <span
+class="cmtt-10">\GLSsymbol[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7070--><p class="noindent" >
+</p><!--l. 7072--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56050"></a> <span
+class="cmtt-10">\glsdesc[</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. 7074--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">description</span><a
+ id="dx1-56051"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56052"></a></a>.
+</p><!--l. 7078--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7079--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56053"></a> <span
+class="cmtt-10">\Glsdesc[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7081--><p class="noindent" >
+</p><!--l. 7082--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56054"></a> <span
+class="cmtt-10">\GLSdesc[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7084--><p class="noindent" >
+</p><!--l. 7086--><p class="indent" > If you want the title case version you can use
+
+
+</p>
+ <div class="verbatim" id="verbatim-231">
+\glslink{sample}{\glsentrytitlecase{sample}{desc}}
+</div>
+<!--l. 7089--><p class="nopar" >
+</p><!--l. 7091--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuseri</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56055"></a> <span
+class="cmtt-10">\glsuseri[</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. 7093--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">user1</span><a
+ id="dx1-56056"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56057"></a></a>.
+</p><!--l. 7097--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7098--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsuseri</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56058"></a> <span
+class="cmtt-10">\Glsuseri[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7100--><p class="noindent" >
+</p><!--l. 7101--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSuseri</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56059"></a> <span
+class="cmtt-10">\GLSuseri[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7103--><p class="noindent" >
+</p><!--l. 7105--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuserii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56060"></a> <span
+class="cmtt-10">\glsuserii[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7107--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">user2</span><a
+ id="dx1-56061"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56062"></a></a>.
+</p><!--l. 7111--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7112--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsuserii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56063"></a> <span
+class="cmtt-10">\Glsuserii[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7114--><p class="noindent" >
+</p><!--l. 7115--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSuserii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56064"></a> <span
+class="cmtt-10">\GLSuserii[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7117--><p class="noindent" >
+</p><!--l. 7119--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuseriii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56065"></a> <span
+class="cmtt-10">\glsuseriii[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7121--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">user3</span><a
+ id="dx1-56066"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56067"></a></a>.
+</p><!--l. 7125--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7126--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsuseriii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56068"></a> <span
+class="cmtt-10">\Glsuseriii[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7128--><p class="noindent" >
+</p><!--l. 7129--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSuseriii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56069"></a> <span
+class="cmtt-10">\GLSuseriii[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7131--><p class="noindent" >
+</p><!--l. 7133--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuseriv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56070"></a> <span
+class="cmtt-10">\glsuseriv[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7135--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">user4</span><a
+ id="dx1-56071"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56072"></a></a>.
+</p><!--l. 7139--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7140--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsuseriv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56073"></a> <span
+class="cmtt-10">\Glsuseriv[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7142--><p class="noindent" >
+</p><!--l. 7143--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSuseriv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56074"></a> <span
+class="cmtt-10">\GLSuseriv[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7145--><p class="noindent" >
+</p><!--l. 7147--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuserv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56075"></a> <span
+class="cmtt-10">\glsuserv[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7149--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">user5</span><a
+ id="dx1-56076"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56077"></a></a>.
+</p><!--l. 7153--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7154--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsuserv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56078"></a> <span
+class="cmtt-10">\Glsuserv[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7156--><p class="noindent" >
+</p><!--l. 7157--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSuserv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56079"></a> <span
+class="cmtt-10">\GLSuserv[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7159--><p class="noindent" >
+</p><!--l. 7161--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuservi</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56080"></a> <span
+class="cmtt-10">\glsuservi[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7163--><p class="noindent" >
+This command always uses the value of the <span
+class="cmss-10">user6</span><a
+ id="dx1-56081"></a> key as the <a
+href="#glo:linktext">link text<a
+ id="dx1-56082"></a></a>.
+</p><!--l. 7167--><p class="indent" > There are also analogous uppercasing commands:
+</p><!--l. 7168--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsuservi</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56083"></a> <span
+class="cmtt-10">\Glsuservi[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7170--><p class="noindent" >
+</p><!--l. 7171--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSuservi</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-56084"></a> <span
+class="cmtt-10">\GLSuservi[</span>&#x27E8;<span
+class="cmitt-10">options</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. 7173--><p class="noindent" >
+</p><!--l. 7175--><p class="noindent" >
+</p>
+<!--l. 7175--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.3 </span> <a
+ id="sec:glsdisplay"></a>Changing the format of the link text</h3>
+<!--l. 7178--><p class="noindent" >The default format of the <a
+href="#glo:linktext">link text<a
+ id="dx1-57001"></a></a> for the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands is governed
+by<span class="footnote-mark"><a
+href="#fn3x6" id="fn3x6-bk"><sup class="textsuperscript">6.3</sup></a></span><a
+ id="x1-57002f3"></a>:
+</p><!--l. 7182--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57006"></a> <span
+class="cmtt-10">\glsentryfmt </span></div><hr>
+</p><!--l. 7184--><p class="noindent" >
+This may be redefined but if you only want the change the display style for a given glossary,
+then you need to use
+</p><!--l. 7187--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\defglsentryfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57007"></a> <span
+class="cmtt-10">\defglsentryfmt[</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7189--><p class="noindent" >
+instead of redefining <span
+class="cmtt-10">\glsentryfmt</span>. The optional first argument &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is the glossary type.
+This defaults to <span
+class="cmtt-10">\glsdefaulttype</span><a
+ id="dx1-57008"></a> if omitted. The second argument is the entry format
+definition.
+</p><!--l. 7195--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\glsentryfmt </span>is the default display format for entries. Once the display format
+has been changed for an individual glossary using <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-57009"></a>, redefining
+<span
+class="cmtt-10">\glsentryfmt </span>won&#8217;t have an effect on that glossary, you must instead use <span
+class="cmtt-10">\defglsentryfmt</span>
+again. Note that glossaries that have been identified as lists of acronyms (via the package
+option <span
+class="cmss-10">acronymlists</span><a
+ id="dx1-57010"></a> or the command <span
+class="cmtt-10">\DeclareAcronymList</span><a
+ id="dx1-57011"></a>, see <a
+href="#sec:pkgopts-acronym"><span
+class="tcrm-1000">&sect;</span>2.5 </a><a
+href="#sec:pkgopts-acronym">Acronym Options<!--tex4ht:ref: sec:pkgopts-acronym --></a>) use
+<span
+class="cmtt-10">\defglsentryfmt </span>to set their display style. </div>
+
+
+</p><!--l. 7205--><p class="noindent" >
+</p><!--l. 7207--><p class="indent" > Within the &#x27E8;<span
+class="cmti-10">definition</span>&#x27E9; argument of <span
+class="cmtt-10">\defglsentryfmt</span>, or if you want to redefine
+<span
+class="cmtt-10">\glsentryfmt</span>, you may use the following commands:
+</p><!--l. 7211--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslabel</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57012"></a> <span
+class="cmtt-10">\glslabel </span></div><hr>
+</p><!--l. 7213--><p class="noindent" >
+This is the label of the entry being referenced. As from version 4.08, you can also access the
+glossary entry type using:
+</p><!--l. 7216--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstype</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57013"></a> <span
+class="cmtt-10">\glstype </span></div><hr>
+</p><!--l. 7218--><p class="noindent" >
+This is defined using <span
+class="cmtt-10">\edef</span><a
+ id="dx1-57014"></a> so the replacement text is the actual glossary type rather than
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrytype{\glslabel}</span></span></span>.
+</p><!--l. 7222--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscustomtext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57015"></a> <span
+class="cmtt-10">\glscustomtext </span></div><hr>
+</p><!--l. 7224--><p class="noindent" >
+This is the custom text supplied in <span
+class="cmtt-10">\glsdisp</span>. It&#8217;s always empty for <span
+class="cmtt-10">\gls</span><a
+ id="dx1-57016"></a>, <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-57017"></a> and their
+upper case variants. (You can use <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-57018"></a>&#8217;s <span
+class="cmtt-10">\ifdefempty </span>to determine if <span
+class="cmtt-10">\glscustomtext </span>is
+empty.)
+</p><!--l. 7230--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinsert</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57019"></a> <span
+class="cmtt-10">\glsinsert </span></div><hr>
+</p><!--l. 7232--><p class="noindent" >
+The custom text supplied in the final optional argument to <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glspl </span>and their upper case
+variants.
+</p><!--l. 7236--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57020"></a> <span
+class="cmtt-10">\glsifplural{</span>&#x27E8;<span
+class="cmitt-10">true text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7238--><p class="noindent" >
+If <span
+class="cmtt-10">\glspl</span>, <span
+class="cmtt-10">\Glspl </span>or <span
+class="cmtt-10">\GLSpl </span>was used, this command does &#x27E8;<span
+class="cmti-10">true text</span>&#x27E9; otherwise it does &#x27E8;<span
+class="cmti-10">false</span>
+<span
+class="cmti-10">text</span>&#x27E9;.
+</p><!--l. 7242--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscapscase</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57021"></a> <span
+class="cmtt-10">\glscapscase{</span>&#x27E8;<span
+class="cmitt-10">no case</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">first uc</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">all caps</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7244--><p class="noindent" >
+If <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glspl </span>or <span
+class="cmtt-10">\glsdisp </span>were used, this does &#x27E8;<span
+class="cmti-10">no case</span>&#x27E9;. If <span
+class="cmtt-10">\Gls </span>or <span
+class="cmtt-10">\Glspl </span>were used, this
+does &#x27E8;<span
+class="cmti-10">first uc</span>&#x27E9;. If <span
+class="cmtt-10">\GLS </span>or <span
+class="cmtt-10">\GLSpl </span>were used, this does &#x27E8;<span
+class="cmti-10">all caps</span>&#x27E9;.
+</p><!--l. 7249--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifhyperon</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57022"></a> <span
+class="cmtt-10">\glsifhyperon{</span>&#x27E8;<span
+class="cmitt-10">hyper true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">hyper false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7251--><p class="noindent" >
+This will do &#x27E8;<span
+class="cmti-10">hyper true</span>&#x27E9; if the hyperlinks are on for the current reference, otherwise it will
+do &#x27E8;<span
+class="cmti-10">hyper false</span>&#x27E9;. The hyperlink may be off even if it wasn&#8217;t explicitly switched off
+with the <span
+class="cmss-10">hyper</span><a
+ id="dx1-57023"></a> key or the use of a starred command. It may be off because the
+<span
+class="cmss-10">hyperref</span><a
+ id="dx1-57024"></a> package hasn&#8217;t been loaded or because <span
+class="cmtt-10">\glsdisablehyper</span><a
+ id="dx1-57025"></a> has been used or
+because the entry is in a glossary type that&#8217;s had the hyperlinks switched off (using
+<span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-57026"></a>) or because it&#8217;s the <a
+href="#glo:firstuse">first use</a>&#x00A0;and the hyperlinks have been suppressed on first
+use.
+</p><!--l. 7262--><p class="indent" > Note that <span
+class="cmtt-10">\glsifhyper</span><a
+ id="dx1-57027"></a> is now deprecated. If you want to know if the command used to
+reference this entry was used with the star or plus variant, you can use:
+</p><!--l. 7265--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslinkvar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57028"></a> <span
+class="cmtt-10">\glslinkvar{</span>&#x27E8;<span
+class="cmitt-10">unmodified</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">star</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">plus</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7267--><p class="noindent" >
+This will do &#x27E8;<span
+class="cmti-10">unmodified</span>&#x27E9; if the unmodified version was used, or will do &#x27E8;<span
+class="cmti-10">star</span>&#x27E9; if the starred
+version was used, or will do &#x27E8;<span
+class="cmti-10">plus</span>&#x27E9; if the plus version was used. Note that this doesn&#8217;t
+take into account if the <span
+class="cmss-10">hyper</span><a
+ id="dx1-57029"></a> key was used to override the default setting, so this
+command shouldn&#8217;t be used to guess whether or not the hyperlink is on for this
+
+
+reference.
+</p><!--l. 7276--><p class="indent" > Note that you can also use commands such as <span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-57030"></a> within the definition of
+<span
+class="cmtt-10">\glsentryfmt </span>(see <a
+href="#sec:glsunset"><span
+class="tcrm-1000">&sect;</span>14 </a><a
+href="#sec:glsunset">Unsetting and Resetting Entry Flags<!--tex4ht:ref: sec:glsunset --></a>).
+</p><!--l. 7279--><p class="indent" > The commands <span
+class="cmtt-10">\glslabel</span><a
+ id="dx1-57031"></a>, <span
+class="cmtt-10">\glstype</span><a
+ id="dx1-57032"></a>, <span
+class="cmtt-10">\glsifplural</span><a
+ id="dx1-57033"></a>, <span
+class="cmtt-10">\glscapscase</span><a
+ id="dx1-57034"></a>, <span
+class="cmtt-10">\glscustomtext</span><a
+ id="dx1-57035"></a> and
+<span
+class="cmtt-10">\glsinsert</span><a
+ id="dx1-57036"></a> are typically updated at the start of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands
+so they can usually be accessed in the hook user commands, such as <span
+class="cmtt-10">\glspostlinkhook</span><a
+ id="dx1-57037"></a> and
+<span
+class="cmtt-10">\glslinkpostsetkeys</span><a
+ id="dx1-57038"></a>.
+</p><!--l. 7285--><p class="indent" > <div class="important" title="Important Note"> This means that using commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-57039"></a> within the fields that are accessed using the
+<a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;or <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands (such as the <span
+class="cmss-10">first</span><a
+ id="dx1-57040"></a>, <span
+class="cmss-10">text</span><a
+ id="dx1-57041"></a>, <span
+class="cmss-10">long</span><a
+ id="dx1-57042"></a> or <span
+class="cmss-10">short</span><a
+ id="dx1-57043"></a> keys) will cause a
+problem. The entry formatting performed by <span
+class="cmtt-10">\glsentryfmt </span>and related commands isn&#8217;t
+scoped (otherwise if would cause problems for <span
+class="cmtt-10">\glspostlinkhook </span>which may need to look
+ahead as well as look behind). This means that any nested commands will, at the very least,
+change the label stored in <span
+class="cmtt-10">\glslabel</span>. </div>
+</p><!--l. 7295--><p class="noindent" >
+</p><!--l. 7297--><p class="indent" > If you only want to make minor modifications to <span
+class="cmtt-10">\glsentryfmt</span>, you can use
+</p><!--l. 7299--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgenentryfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57044"></a> <span
+class="cmtt-10">\glsgenentryfmt </span></div><hr>
+</p><!--l. 7301--><p class="noindent" >
+This uses the above commands to display just the <span
+class="cmss-10">first</span><a
+ id="dx1-57045"></a>, <span
+class="cmss-10">text</span><a
+ id="dx1-57046"></a>, <span
+class="cmss-10">plural</span><a
+ id="dx1-57047"></a> or <span
+class="cmss-10">firstplural</span><a
+ id="dx1-57048"></a> keys (or the
+custom text) with the insert text appended.
+</p><!--l. 7306--><p class="indent" > Alternatively, if want to change the entry format for abbreviations (defined via
+<span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-57049"></a>) you can use:
+</p><!--l. 7308--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgenacfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57050"></a> <span
+class="cmtt-10">\glsgenacfmt </span></div><hr>
+</p><!--l. 7310--><p class="noindent" >
+This uses the values from the <span
+class="cmss-10">long</span><a
+ id="dx1-57051"></a>, <span
+class="cmss-10">short</span><a
+ id="dx1-57052"></a>, <span
+class="cmss-10">longplural</span><a
+ id="dx1-57053"></a> and <span
+class="cmss-10">shortplural</span><a
+ id="dx1-57054"></a> keys, rather than
+using the <span
+class="cmss-10">text</span><a
+ id="dx1-57055"></a>, <span
+class="cmss-10">plural</span><a
+ id="dx1-57056"></a>, <span
+class="cmss-10">first</span><a
+ id="dx1-57057"></a> and <span
+class="cmss-10">firstplural</span><a
+ id="dx1-57058"></a> keys. The first use singular text is obtained
+via:
+</p><!--l. 7315--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\genacrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57059"></a> <span
+class="cmtt-10">\genacrfullformat{</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. 7317--><p class="noindent" >
+instead of from the <span
+class="cmss-10">first</span><a
+ id="dx1-57060"></a> key, and the first use plural text is obtained via:
+</p><!--l. 7320--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\genplacrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57061"></a> <span
+class="cmtt-10">\genplacrfullformat{</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. 7322--><p class="noindent" >
+instead of from the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-57062"></a> key. In both cases, &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label and &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; is the
+insert text provided in the final optional argument of commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-57063"></a>. The default
+behaviour is to do the long form (or plural long form) followed by &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; and a&#x00A0;space
+and the short form (or plural short form) in parentheses, where the short form
+is in the argument of <span
+class="cmtt-10">\firstacronymfont</span><a
+ id="dx1-57064"></a>. There are also first letter upper case
+versions:
+</p><!--l. 7331--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Genacrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57065"></a> <span
+class="cmtt-10">\Genacrfullformat{</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. 7333--><p class="noindent" >
+and
+</p><!--l. 7335--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Genplacrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57066"></a> <span
+class="cmtt-10">\Genplacrfullformat{</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. 7337--><p class="noindent" >
+By default these perform a protected expansion on their no-case-change equivalents and then
+use <span
+class="cmtt-10">\makefirstuc</span><a
+ id="dx1-57067"></a> to convert the first character to upper case. If there are issues
+caused by this expansion, you will need to redefine those commands to explicitly
+
+
+use commands like <span
+class="cmtt-10">\Glsentrylong</span><a
+ id="dx1-57068"></a> (which is what the predefined acronym styles,
+such as <span
+class="cmss-10">long-short</span><a
+ id="dx1-57069"></a>, do). Otherwise, you only need to redefine <span
+class="cmtt-10">\genacrfullformat</span><a
+ id="dx1-57070"></a>
+and <span
+class="cmtt-10">\genplacrfullformat</span><a
+ id="dx1-57071"></a> to change the behaviour of <span
+class="cmtt-10">\glsgenacfmt</span><a
+ id="dx1-57072"></a>. See <a
+href="#sec:acronyms"><span
+class="tcrm-1000">&sect;</span>13
+</a><a
+href="#sec:acronyms">Acronyms and Other Abbreviations<!--tex4ht:ref: sec:acronyms --></a> for further details on changing the style of
+acronyms.
+</p><!--l. 7349--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\glsentryfmt </span>(or the formatting given by <span
+class="cmtt-10">\defglsentryfmt</span>) is not used by
+the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands. </div>
+</p><!--l. 7352--><p class="noindent" >
+</p><!--l. 7354--><p class="indent" > As from version 4.16, both the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands use
+</p><!--l. 7356--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslinkpostsetkeys</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57073"></a> <span
+class="cmtt-10">\glslinkpostsetkeys </span></div><hr>
+</p><!--l. 7358--><p class="noindent" >
+after the &#x27E8;<span
+class="cmti-10">options</span>&#x27E9; are set. This macro does nothing by default but can be redefined. (For
+example, to switch off the hyperlink under certain conditions.) This version also
+introduces
+</p><!--l. 7362--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspostlinkhook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-57074"></a> <span
+class="cmtt-10">\glspostlinkhook </span></div><hr>
+</p><!--l. 7364--><p class="noindent" >
+which is done after the link text has been displayed and also <span
+class="cmti-10">after </span>the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;has been
+unset (see example&#x00A0;<a
+href="#x1-72077r25">25<!--tex4ht:ref: ex:dotabbr --></a>).
+<a
+ id="x1-57075r8"></a>
+</p><!--l. 7369--><p class="noindent" ><span
+class="cmbx-12">Example 8</span><span
+class="cmbx-12">&#x00A0;(Custom Entry Display in Text)</span><a
+ id="x1-57076"></a>
+</p><!--l. 7370--><p class="indent" > Suppose you want a glossary of measurements and units, you can use the <span
+class="cmss-10">symbol</span><a
+ id="dx1-57077"></a> key to
+store the unit:
+
+
+</p>
+ <div class="verbatim" id="verbatim-232">
+\newglossaryentry{distance}{name=distance,
+&#x00A0;<br />description={The&#x00A0;length&#x00A0;between&#x00A0;two&#x00A0;points},
+&#x00A0;<br />symbol={km}}
+</div>
+<!--l. 7376--><p class="nopar" > and now suppose you want <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{distance}</span></span></span> to produce &#8220;distance (km)&#8221; on <a
+href="#glo:firstuse">first use</a>, then
+you can redefine <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-57078"></a> as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-233">
+\renewcommand*{\glsentryfmt}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsgenentryfmt
+&#x00A0;<br />&#x00A0;&#x00A0;\ifglsused{\glslabel}{}{\space&#x00A0;(\glsentrysymbol{\glslabel})}%
+&#x00A0;<br />}
+</div>
+<!--l. 7385--><p class="nopar" >
+</p><!--l. 7387--><p class="indent" > (Note that I&#8217;ve used <span
+class="cmtt-10">\glsentrysymbol</span><a
+ id="dx1-57079"></a> rather than <span
+class="cmtt-10">\glssymbol</span><a
+ id="dx1-57080"></a> to avoid nested
+hyperlinks.)
+</p><!--l. 7390--><p class="indent" > Note also that all of the <a
+href="#glo:linktext">link text<a
+ id="dx1-57081"></a></a> will be formatted according to <span
+class="cmtt-10">\glstextformat</span><a
+ id="dx1-57082"></a>
+(described earlier). So if you do, say:
+
+
+</p>
+ <div class="verbatim" id="verbatim-234">
+\renewcommand{\glstextformat}[1]{\textbf{#1}}
+&#x00A0;<br />\renewcommand*{\glsentryfmt}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsgenentryfmt
+&#x00A0;<br />&#x00A0;&#x00A0;\ifglsused{\glslabel}{}{\space(\glsentrysymbol{\glslabel})}%
+&#x00A0;<br />}
+</div>
+<!--l. 7398--><p class="nopar" > then <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{distance}</span></span></span> will produce &#8220;<span
+class="cmbx-10">distance (km)</span>&#8221;.
+</p><!--l. 7401--><p class="indent" > For a complete document, see the sample file <a
+href="#x1-11114r38"><span
+class="cmtt-10">sample-entryfmt.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 7402--><p class="noindent" >
+</p><!--l. 7402--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-57083r9"></a>
+<!--l. 7404--><p class="noindent" ><span
+class="cmbx-12">Example 9</span><span
+class="cmbx-12">&#x00A0;(Custom Format for Particular Glossary)</span><a
+ id="x1-57084"></a>
+</p><!--l. 7405--><p class="indent" > Suppose you have created a new glossary called <span
+class="cmtt-10">notation </span>and you want to change
+the way the entry is displayed on <a
+href="#glo:firstuse">first use</a>&#x00A0;so that it includes the symbol, you can
+do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-235">
+\defglsentryfmt[notation]{\glsgenentryfmt
+&#x00A0;<br />&#x00A0;\ifglsused{\glslabel}{}{\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;(denoted&#x00A0;\glsentrysymbol{\glslabel})}}
+</div>
+<!--l. 7412--><p class="nopar" > Now suppose you have defined an entry as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-236">
+\newglossaryentry{set}{type=notation,
+&#x00A0;<br />&#x00A0;&#x00A0;name=set,
+&#x00A0;<br />&#x00A0;&#x00A0;description={A&#x00A0;collection&#x00A0;of&#x00A0;objects},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={$S$}
+&#x00A0;<br />}
+</div>
+<!--l. 7420--><p class="nopar" > The <a
+href="#glo:firstuse">first time</a> you reference this entry it will be displayed as: &#8220;set (denoted <span
+class="cmmi-10">S</span>)&#8221; (assuming
+<span
+class="cmtt-10">\gls</span><a
+ id="dx1-57085"></a> was used).
+</p><!--l. 7424--><p class="indent" > Alternatively, if you expect all the symbols to be set in math mode, you can
+do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-237">
+\defglsentryfmt[notation]{\glsgenentryfmt
+&#x00A0;<br />&#x00A0;\ifglsused{\glslabel}{}{\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;(denoted&#x00A0;$\glsentrysymbol{\glslabel}$)}}
+</div>
+<!--l. 7430--><p class="nopar" > and define entries like this:
+
+
+</p>
+ <div class="verbatim" id="verbatim-238">
+\newglossaryentry{set}{type=notation,
+&#x00A0;<br />&#x00A0;&#x00A0;name=set,
+&#x00A0;<br />&#x00A0;&#x00A0;description={A&#x00A0;collection&#x00A0;of&#x00A0;objects},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={S}
+&#x00A0;<br />}
+</div>
+<!--l. 7438--><p class="nopar" > </p>
+<div class="center"
+>
+<!--l. 7439--><p class="noindent" >
+</p><!--l. 7439--><p class="noindent" >____________________________</p></div>
+<!--l. 7441--><p class="indent" > Remember that if you use the <span
+class="cmss-10">symbol</span><a
+ id="dx1-57086"></a> key, you need to use a glossary style that displays
+the symbol, as many of the styles ignore it.
+</p><!--l. 7445--><p class="noindent" >
+</p>
+<!--l. 7445--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.4 </span> <a
+ id="sec:disablehyperlinks"></a>Enabling and disabling hyperlinks to glossary entries</h3>
+<!--l. 7448--><p class="noindent" >If you load the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-58001"></a> or <span
+class="cmss-10">html</span><a
+ id="dx1-58002"></a> packages prior to loading the <span
+class="cmss-10">glossaries </span>package, the
+<a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands will automatically have hyperlinks to the relevant
+glossary entry, unless the <span
+class="cmss-10">hyper</span><a
+ id="dx1-58003"></a> option has been switched off (either explicitly or through
+implicit means, such as via the <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-58004"></a> package option).
+</p><!--l. 7455--><p class="indent" > You can disable or enable links using:
+</p><!--l. 7456--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdisablehyper</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-58005"></a> <span
+class="cmtt-10">\glsdisablehyper </span></div><hr>
+</p><!--l. 7458--><p class="noindent" >
+and
+</p><!--l. 7460--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsenablehyper</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-58006"></a> <span
+class="cmtt-10">\glsenablehyper </span></div><hr>
+</p><!--l. 7462--><p class="noindent" >
+respectively. The effect can be localised by placing the commands within a group. Note that
+you should only use <span
+class="cmtt-10">\glsenablehyper </span>if the commands <span
+class="cmtt-10">\hyperlink</span><a
+ id="dx1-58007"></a> and <span
+class="cmtt-10">\hypertarget</span><a
+ id="dx1-58008"></a> have
+been defined (for example, by the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-58009"></a> package).
+</p><!--l. 7468--><p class="indent" > You can disable just the <a
+href="#glo:firstuse">first use</a> links using the package option <span
+class="cmss-10">hyperfirst=false</span><a
+ id="dx1-58010"></a>. Note
+that this option only affects the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands that recognise the <a
+href="#glo:firstuseflag">first use
+flag</a>.
+<a
+ id="x1-58011r10"></a>
+</p><!--l. 7472--><p class="noindent" ><span
+class="cmbx-12">Example 10</span><span
+class="cmbx-12">&#x00A0;(First Use With Hyperlinked Footnote Description)</span><a
+ id="x1-58012"></a>
+</p><!--l. 7473--><p class="indent" > Suppose I want the first use to have a hyperlink to the description in a footnote instead of
+hyperlinking to the relevant place in the glossary. First I need to disable the hyperlinks on
+first use via the package option <span
+class="cmss-10">hyperfirst=false</span><a
+ id="dx1-58013"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-239">
+\usepackage[hyperfirst=false]{glossaries}
+</div>
+<!--l. 7479--><p class="nopar" > Now I need to redefine <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-58014"></a> (see <a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3 </a><a
+href="#sec:glsdisplay">Changing the format of the link
+text<!--tex4ht:ref: sec:glsdisplay --></a>):
+
+
+</p>
+ <div class="verbatim" id="verbatim-240">
+\renewcommand*{\glsentryfmt}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsgenentryfmt
+&#x00A0;<br />&#x00A0;&#x00A0;\ifglsused{\glslabel}{}{\footnote{\glsentrydesc{\glslabel}}}%
+&#x00A0;<br />}
+</div>
+<!--l. 7487--><p class="nopar" >
+</p><!--l. 7489--><p class="indent" > Now the first use won&#8217;t have hyperlinked text, but will be followed by a footnote. See the
+sample file <a
+href="#x1-11028r10"><span
+class="cmtt-10">sample-FnDesc.tex</span></a> for a complete document. </p>
+<div class="center"
+>
+<!--l. 7492--><p class="noindent" >
+</p><!--l. 7492--><p class="noindent" >____________________________</p></div>
+<!--l. 7494--><p class="indent" > Note that the <span
+class="cmss-10">hyperfirst</span><a
+ id="dx1-58015"></a> option applies to all defined glossaries. It may be that you only
+want to disable the hyperlinks on <a
+href="#glo:firstuse">first use</a> for glossaries that have a different form on first use.
+This can be achieved by noting that since the entries that require hyperlinking for all
+instances have identical first and subsequent text, they can be unset via <span
+class="cmtt-10">\glsunsetall</span><a
+ id="dx1-58016"></a> (see
+<a
+href="#sec:glsunset"><span
+class="tcrm-1000">&sect;</span>14 </a><a
+href="#sec:glsunset">Unsetting and Resetting Entry Flags<!--tex4ht:ref: sec:glsunset --></a>) so that the <span
+class="cmss-10">hyperfirst</span><a
+ id="dx1-58017"></a> option doesn&#8217;t get
+applied.
+<a
+ id="x1-58018r11"></a>
+</p><!--l. 7504--><p class="noindent" ><span
+class="cmbx-12">Example 11</span><span
+class="cmbx-12">&#x00A0;(Suppressing Hyperlinks on First Use Just For</span>
+<span
+class="cmbx-12">Acronyms)</span><a
+ id="x1-58019"></a>
+</p><!--l. 7505--><p class="indent" > Suppose I want to suppress the hyperlink on <a
+href="#glo:firstuse">first use</a> for acronyms but not for entries in
+the main glossary. I&#x00A0;can load the <span
+class="cmss-10">glossaries </span>package using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-241">
+\usepackage[hyperfirst=false,acronym]{glossaries}
+</div>
+<!--l. 7510--><p class="nopar" > Once all glossary entries have been defined I&#x00A0;then do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-242">
+\glsunsetall[main]
+</div>
+<!--l. 7514--><p class="nopar" >
+</p>
+<div class="center"
+>
+<!--l. 7516--><p class="noindent" >
+</p><!--l. 7516--><p class="noindent" >____________________________</p></div>
+<!--l. 7518--><p class="indent" > For more complex requirements, you might find it easier to switch off all hyperlinks via
+<span
+class="cmtt-10">\glsdisablehyper</span><a
+ id="dx1-58020"></a> and put the hyperlinks (where required) within the definition of
+<span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-58021"></a> (see <a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3 </a><a
+href="#sec:glsdisplay">Changing the format of the link text<!--tex4ht:ref: sec:glsdisplay --></a>) via <span
+class="cmtt-10">\glshyperlink</span><a
+ id="dx1-58022"></a> (see <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9
+</a><a
+href="#sec:glsnolink">Using Glossary Terms Without Links<!--tex4ht:ref: sec:glsnolink --></a>).
+<a
+ id="x1-58023r12"></a>
+</p><!--l. 7525--><p class="noindent" ><span
+class="cmbx-12">Example 12</span><span
+class="cmbx-12">&#x00A0;(Only Hyperlink in Text Mode Not Math Mode)</span><a
+ id="x1-58024"></a>
+</p><!--l. 7526--><p class="indent" > This is a bit of a contrived example, but suppose, for some reason, I only want the
+<a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands to have hyperlinks when used in text mode, but not in math mode.
+I&#x00A0;can do this by adding the glossary to the list of nohypertypes and redefining
+<span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-58025"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-243">
+\GlsDeclareNoHyperList{main}
+&#x00A0;<br />\renewcommand*{\glsentryfmt}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifmmode
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsgenentryfmt
+&#x00A0;<br />&#x00A0;&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsifhyperon
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsgenentryfmt}%&#x00A0;hyperlink&#x00A0;already&#x00A0;on
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glshyperlink[\glsgenentryfmt]{\glslabel}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\fi
+&#x00A0;<br />}
+</div>
+<!--l. 7543--><p class="nopar" > Note that this doesn&#8217;t affect the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands, which will have the hyperlinks off
+unless they&#8217;re forced on using the plus variant.
+</p><!--l. 7548--><p class="indent" > See the sample file <a
+href="#x1-11112r37"><span
+class="cmtt-10">sample-nomathhyper.tex</span></a> for a complete document. </p>
+<div class="center"
+>
+<!--l. 7550--><p class="noindent" >
+</p><!--l. 7550--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-58026r13"></a>
+<!--l. 7552--><p class="noindent" ><span
+class="cmbx-12">Example 13</span><span
+class="cmbx-12">&#x00A0;(One Hyper Link Per Entry Per Chapter)</span><a
+ id="x1-58027"></a>
+</p><!--l. 7553--><p class="indent" > Here&#8217;s a more complicated example that will only have the hyperlink on the first time an
+entry is used per chapter. This doesn&#8217;t involve resetting the <a
+href="#glo:firstuseflag">first use flag</a>. Instead it adds
+a&#x00A0;new key using <span
+class="cmtt-10">\glsaddstoragekey</span><a
+ id="dx1-58028"></a> (see <a
+href="#sec:glsaddstoragekey"><span
+class="tcrm-1000">&sect;</span>4.3.2 </a><a
+href="#sec:glsaddstoragekey">Storage Keys<!--tex4ht:ref: sec:glsaddstoragekey --></a>) that keeps track of the
+chapter number that the entry was last used in:
+
+
+</p>
+ <div class="verbatim" id="verbatim-244">
+\glsaddstoragekey{chapter}{0}{\glschapnum}
+</div>
+<!--l. 7560--><p class="nopar" > This creates a new user command called <span
+class="cmtt-10">\glschapnum </span>that&#8217;s analogous to <span
+class="cmtt-10">\glsentrytext</span>.
+The default value for this key is&#x00A0;0. I&#x00A0;then define my glossary entries as usual.
+</p><!--l. 7565--><p class="indent" > Next I redefine the hook <span
+class="cmtt-10">\glslinkpostsetkeys</span><a
+ id="dx1-58029"></a> (see <a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3 </a><a
+href="#sec:glsdisplay">Changing the format of the link
+text<!--tex4ht:ref: sec:glsdisplay --></a>) so that it determines the current chapter number (which is stored in <span
+class="cmtt-10">\currentchap</span>
+using <span
+class="cmtt-10">\edef</span>). This value is then compared with the value of the entry&#8217;s <span
+class="cmtt-10">chapter </span>key that I
+defined earlier. If they&#8217;re the same, this entry has already been used in this chapter so the
+hyperlink is switched off using <span
+class="cmss-10">xkeyval</span><a
+ id="dx1-58030"></a>&#8217;s <span
+class="cmtt-10">\setkeys </span>command. If the chapter number isn&#8217;t the
+same, then this entry hasn&#8217;t been used in the current chapter. The <span
+class="cmtt-10">chapter </span>field is
+updated using <span
+class="cmtt-10">\glsfieldxdef</span><a
+ id="dx1-58031"></a> (<a
+href="#sec:fetchset"><span
+class="tcrm-1000">&sect;</span>16.3 </a><a
+href="#sec:fetchset">Fetching and Updating the Value of a Field<!--tex4ht:ref: sec:fetchset --></a>)
+provided the user hasn&#8217;t switched off the hyperlink. (This test is performed using
+<span
+class="cmtt-10">\glsifhyperon</span>.
+
+
+</p>
+ <div class="verbatim" id="verbatim-245">
+\renewcommand*{\glslinkpostsetkeys}{%
+&#x00A0;<br />&#x00A0;\edef\currentchap{\arabic{chapter}}%
+&#x00A0;<br />&#x00A0;\ifnum\currentchap=\glschapnum{\glslabel}\relax
+&#x00A0;<br />&#x00A0;&#x00A0;\setkeys{glslink}{hyper=false}%
+&#x00A0;<br />&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;\glsifhyperon{\glsfieldxdef{\glslabel}{chapter}{\currentchap}}{}%
+&#x00A0;<br />&#x00A0;\fi
+&#x00A0;<br />}
+</div>
+<!--l. 7586--><p class="nopar" > Note that this will be confused if you use <span
+class="cmtt-10">\gls </span>etc when the chapter counter is&#x00A0;0. (That is,
+before the first <span
+class="cmtt-10">\chapter</span>.)
+</p><!--l. 7590--><p class="indent" > See the sample file <a
+href="#x1-11106r32"><span
+class="cmtt-10">sample-chap-hyperfirst.tex</span></a> for a complete document.
+</p>
+<div class="center"
+>
+<!--l. 7592--><p class="noindent" >
+</p><!--l. 7592--><p class="noindent" >____________________________</p></div>
+
+
+<!--l. 7594--><p class="indent" > </div>
+</p><!--l. 7594--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">7. <a
+ id="sec:glsadd"></a>Adding an Entry to the Glossary Without Generating Text</h2>
+</p><!--l. 7597--><p class="indent" > It is possible to add a line to the glossary file without generating any text at that point in
+the document using:
+</p><!--l. 7599--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsadd</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-59001"></a> <span
+class="cmtt-10">\glsadd[</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></div><hr>
+</p><!--l. 7601--><p class="noindent" >
+This is similar to the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands, only it doesn&#8217;t produce any text (so
+therefore, there is no <span
+class="cmss-10">hyper</span><a
+ id="dx1-59002"></a> key available in &#x27E8;<span
+class="cmti-10">options</span>&#x27E9; but all the other options that can be
+used with <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands can be passed to <span
+class="cmtt-10">\glsadd</span>). For example, to
+add a page range to the glossary number list for the entry whose label is given by
+<span
+class="cmtt-10">set</span>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-246">
+\glsadd[format=(]{set}
+&#x00A0;<br />Lots&#x00A0;of&#x00A0;text&#x00A0;about&#x00A0;sets&#x00A0;spanning&#x00A0;many&#x00A0;pages.
+&#x00A0;<br />\glsadd[format=)]{set}
+</div>
+<!--l. 7612--><p class="nopar" >
+</p><!--l. 7614--><p class="indent" > To add all entries that have been defined, use:
+</p><!--l. 7615--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddall</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-59003"></a> <span
+class="cmtt-10">\glsaddall[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 7617--><p class="noindent" >
+The optional argument is the same as for <span
+class="cmtt-10">\glsadd</span>, except there is also a key <span
+class="cmss-10">types</span><a
+ id="dx1-59004"></a> which can
+be used to specify which glossaries to use. This should be a comma separated list. For
+example, if you only want to add all the entries belonging to the list of acronyms (specified by
+the glossary type <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-59005"></a>) and a list of notation (specified by the glossary type
+<span
+class="cmtt-10">notation</span>) then you can do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-247">
+\glsaddall[types={\acronymtype,notation}]
+</div>
+<!--l. 7628--><p class="nopar" >
+</p><!--l. 7630--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\glsadd </span>and <span
+class="cmtt-10">\glsaddall </span>add the current location to the <a
+href="#glo:numberlist">number list<a
+ id="dx1-59006"></a></a>. In the
+case of <span
+class="cmtt-10">\glsaddall</span>, all entries in the glossary will have the same location in the number list.
+If you want to use <span
+class="cmtt-10">\glsaddall</span>, it&#8217;s best to suppress the number list with the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-59007"></a>
+package option. (See sections&#x00A0;<a
+href="#sec:pkgopts-printglos">2.3<!--tex4ht:ref: sec:pkgopts-printglos --></a> and&#x00A0;<a
+href="#sec:numberlists">5<!--tex4ht:ref: sec:numberlists --></a>.) </div>
+</p><!--l. 7637--><p class="noindent" >
+</p><!--l. 7639--><p class="indent" > There is now a variation of <span
+class="cmtt-10">\glsaddall </span>that skips any entries that have already been
+used:
+</p><!--l. 7641--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddallunused</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-59008"></a> <span
+class="cmtt-10">\glsaddallunused[</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 7643--><p class="noindent" >
+This command uses <span
+class="cmtt-10">\glsadd[format=@gobble] </span>which will ignore this location in the number
+list. The optional argument &#x27E8;<span
+class="cmti-10">list</span>&#x27E9; is a comma-separated list of glossary types. If omitted, it
+defaults to the list of all defined glossaries.
+</p><!--l. 7649--><p class="indent" > If you want to use <span
+class="cmtt-10">\glsaddallunused</span>, it&#8217;s best to place the command at the end of the
+document to ensure that all the commands you intend to use have already been
+used. Otherwise you could end up with a spurious comma or dash in the location
+list.
+<a
+ id="x1-59009r14"></a>
+</p><!--l. 7654--><p class="noindent" ><span
+class="cmbx-12">Example 14</span><span
+class="cmbx-12">&#x00A0;(Dual Entries)</span><a
+ id="x1-59010"></a>
+</p><!--l. 7655--><p class="indent" > The example file <a
+href="#x1-11069r22"><span
+class="cmtt-10">sample-dual.tex</span></a> makes use of <span
+class="cmtt-10">\glsadd </span>to allow for an entry that
+should appear both in the main glossary and in the list of acronyms. This example sets up the
+list of acronyms using the <span
+class="cmss-10">acronym</span><a
+ id="dx1-59011"></a> package option:
+
+
+</p>
+ <div class="verbatim" id="verbatim-248">
+\usepackage[acronym]{glossaries}
+</div>
+<!--l. 7661--><p class="nopar" > A new command is then defined to make it easier to define dual entries:
+
+
+</p>
+ <div class="verbatim" id="verbatim-249">
+\newcommand*{\newdualentry}[5][]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\newglossaryentry{main-#2}{name={#4},%
+&#x00A0;<br />&#x00A0;&#x00A0;text={#3\glsadd{#2}},%
+&#x00A0;<br />&#x00A0;&#x00A0;description={#5},%
+&#x00A0;<br />&#x00A0;&#x00A0;#1
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\newacronym{#2}{#3\glsadd{main-#2}}{#4}%
+&#x00A0;<br />}
+</div>
+<!--l. 7673--><p class="nopar" > This has the following syntax: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\newdualentry</span><a
+ id="dx1-59012"></a><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">abbrv</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">description</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> You can then define a new dual entry:
+
+
+ <div class="verbatim" id="verbatim-250">
+\newdualentry{svm}%&#x00A0;label
+&#x00A0;<br />&#x00A0;&#x00A0;{SVM}%&#x00A0;abbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;{support&#x00A0;vector&#x00A0;machine}%&#x00A0;long&#x00A0;form
+&#x00A0;<br />&#x00A0;&#x00A0;{Statistical&#x00A0;pattern&#x00A0;recognition&#x00A0;technique}%&#x00A0;description
+</div>
+<!--l. 7684--><p class="nopar" > Now you can reference the acronym with <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> or you can reference the entry in the
+main glossary with <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{main-svm}</span></span></span>. </p>
+<div class="center"
+>
+<!--l. 7687--><p class="noindent" >
+</p><!--l. 7687--><p class="noindent" >____________________________</p></div>
+
+
+<!--l. 7689--><p class="indent" > </div>
+</p><!--l. 7689--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">8. <a
+ id="sec:crossref"></a>Cross-Referencing Entries</h2>
+</p><!--l. 7692--><p class="indent" > <div class="important" title="Important Note"> You must use <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-60001"></a> (Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>) or <span
+class="cmtt-10">\makenoidxglossaries</span><a
+ id="dx1-60002"></a>
+(<a
+href="#option1">Option&#x00A0;1</a>) <span
+class="cmti-10">before </span>defining any terms that cross-reference entries. If any of the terms that
+you have cross-referenced don&#8217;t appear in the glossary, check that you have put
+<span
+class="cmtt-10">\makeglossaries</span>/<span
+class="cmtt-10">\makenoidxglossaries </span>before all entry definitions. The <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>
+package provides better cross-reference handling. </div>
+</p><!--l. 7700--><p class="noindent" >
+</p><!--l. 7702--><p class="indent" > There are several ways of cross-referencing entries in the glossary:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-60004x1">You can use commands such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-60005"></a> in the entries description. For example:
+
+
+ <div class="verbatim" id="verbatim-251">
+ \newglossaryentry{apple}{name=apple,
+ &#x00A0;<br />description={firm,&#x00A0;round&#x00A0;fruit.&#x00A0;See&#x00A0;also&#x00A0;\gls{pear}}}
+</div>
+ <!--l. 7711--><p class="nopar" > Note that with this method, if you don&#8217;t use the cross-referenced term in the main part
+ of the document, you will need two runs of <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-60006"></a></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-252">
+ latex&#x00A0;filename
+ &#x00A0;<br />makeglossaries&#x00A0;filename
+ &#x00A0;<br />latex&#x00A0;filename
+ &#x00A0;<br />makeglossaries&#x00A0;filename
+ &#x00A0;<br />latex&#x00A0;filename
+</div>
+ <!--l. 7721--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-60008x2">As described in <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a>, you can use the <span
+class="cmss-10">see</span><a
+ id="dx1-60009"></a> key when you define
+ the entry. For example:
+
+
+ <div class="verbatim" id="verbatim-253">
+ \newglossaryentry{MaclaurinSeries}{name={Maclaurin
+ &#x00A0;<br />series},
+ &#x00A0;<br />description={Series&#x00A0;expansion},
+ &#x00A0;<br />see={TaylorsTheorem}}
+</div>
+ <!--l. 7730--><p class="nopar" > Note that in this case, the entry with the <span
+class="cmss-10">see</span><a
+ id="dx1-60010"></a> key will automatically be added to the
+ glossary, but the cross-referenced entry won&#8217;t. You therefore need to ensure that you
+ use the cross-referenced term with the commands described in <a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to
+ Glossary Entries<!--tex4ht:ref: sec:glslink --></a> or <a
+href="#sec:glsadd"><span
+class="tcrm-1000">&sect;</span>7 </a><a
+href="#sec:glsadd">Adding an Entry to the Glossary Without Generating
+ Text<!--tex4ht:ref: sec:glsadd --></a>.
+ </p><!--l. 7737--><p class="noindent" >The &#8220;see&#8221; tag is produce using <span
+class="cmtt-10">\seename</span><a
+ id="dx1-60011"></a>, but can be overridden in specific instances
+ using square brackets at the start of the <span
+class="cmss-10">see</span><a
+ id="dx1-60012"></a> value. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-254">
+ \newglossaryentry{MaclaurinSeries}{name={Maclaurin
+ &#x00A0;<br />series},
+ &#x00A0;<br />description={Series&#x00A0;expansion},
+ &#x00A0;<br />see=[see&#x00A0;also]{TaylorsTheorem}}
+</div>
+ <!--l. 7745--><p class="nopar" > Take care if you want to use the optional argument of commands such as <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-60013"></a>
+ or <span
+class="cmtt-10">\newterm</span><a
+ id="dx1-60014"></a> as the value will need to be grouped. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-255">
+ \newterm{seal}
+ &#x00A0;<br />\newterm[see={[see&#x00A0;also]seal}]{sea&#x00A0;lion}
+</div>
+ <!--l. 7752--><p class="nopar" > Similarly if the value contains a list. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-256">
+ \glossaryentry{lemon}{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={lemon},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={Yellow&#x00A0;citrus&#x00A0;fruit}
+ &#x00A0;<br />}
+ &#x00A0;<br />\glossaryentry{lime}
+ &#x00A0;<br />{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={lime},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={Green&#x00A0;citrus&#x00A0;fruit}
+ &#x00A0;<br />}
+ &#x00A0;<br />\glossaryentry{citrus}
+ &#x00A0;<br />{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={citrus},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={Plant&#x00A0;in&#x00A0;the&#x00A0;Rutaceae&#x00A0;family},
+ &#x00A0;<br />&#x00A0;&#x00A0;see={lemon,lime}
+ &#x00A0;<br />}
+</div>
+ <!--l. 7770--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-60016x3">After you have defined the entry, use
+ <!--l. 7773--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssee</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-60017"></a> <span
+class="cmtt-10">\glssee[</span>&#x27E8;<span
+class="cmitt-10">tag</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">xr label list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 7775--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">xr label list</span>&#x27E9; is a comma-separated list of entry labels to be cross-referenced, &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;
+ is the label of the entry doing the cross-referencing and &#x27E8;<span
+class="cmti-10">tag</span>&#x27E9; is the &#8220;see&#8221; tag. (The
+ default value of &#x27E8;<span
+class="cmti-10">tag</span>&#x27E9; is <span
+class="cmtt-10">\seename</span><a
+ id="dx1-60018"></a>.) For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-257">
+ \glssee[see&#x00A0;also]{series}{FourierSeries,TaylorsTheorem}
+</div>
+ <!--l. 7783--><p class="nopar" > Note that this automatically adds the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; to the glossary
+ but doesn&#8217;t add the cross-referenced entries (specified by &#x27E8;<span
+class="cmti-10">xr label list</span>&#x27E9;) to the
+ glossary.</p></li></ol>
+<!--l. 7789--><p class="indent" > In both cases&#x00A0;2 and 3 above, the cross-referenced information appears in the <a
+href="#glo:numberlist">number list<a
+ id="dx1-60019"></a></a>,
+whereas in case&#x00A0;1, the cross-referenced information appears in the description. (See the
+<a
+href="#x1-11030r12"><span
+class="cmtt-10">sample-crossref.tex</span></a> example file that comes with this package.) This means that in
+cases&#x00A0;2 and&#x00A0;3, the cross-referencing information won&#8217;t appear if you have suppressed the
+number list<a
+ id="dx1-60020"></a>. In this case, you will need to activate the number list<a
+ id="dx1-60021"></a> for the given entries using
+<span
+class="cmss-10">nonumberlist=false</span><a
+ id="dx1-60022"></a>. Alternatively, if you just use the <span
+class="cmss-10">see</span><a
+ id="dx1-60023"></a> key instead of <span
+class="cmtt-10">\glssee</span><a
+ id="dx1-60024"></a>, you
+can automatically activate the number list<a
+ id="dx1-60025"></a> using the <span
+class="cmss-10">seeautonumberlist</span><a
+ id="dx1-60026"></a> package
+option.
+</p>
+<!--l. 7801--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">8.1 </span> <a
+ id="sec:customxr"></a>Customising Cross-reference Text</h3>
+<!--l. 7804--><p class="noindent" >When you use either the <span
+class="cmss-10">see</span><a
+ id="dx1-61001"></a> key or the command <span
+class="cmtt-10">\glssee</span>, the cross-referencing information
+will be typeset in the glossary according to:
+</p><!--l. 7807--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsseeformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-61002"></a> <span
+class="cmtt-10">\glsseeformat[</span>&#x27E8;<span
+class="cmitt-10">tag</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">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7809--><p class="noindent" >
+The default definition of <span
+class="cmtt-10">\glsseeformat </span>is: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\emph{</span>&#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;<span
+class="cmtt-10">} \glsseelist{</span>&#x27E8;<span
+class="cmti-10">label-list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /><spacer type=vertical size=10></span>
+Note that the location is always ignored.<span class="footnote-mark"><a
+href="#fn1x8" id="fn1x8-bk"><sup class="textsuperscript">8.1</sup></a></span><a
+ id="x1-61003f1"></a>
+For example, if you want the tag to appear in bold, you can
+do:<span class="footnote-mark"><a
+href="#fn2x8" id="fn2x8-bk"><sup class="textsuperscript">8.2</sup></a></span><a
+ id="x1-61005f2"></a>
+
+
+</p>
+ <div class="verbatim" id="verbatim-258">
+\renewcommand*{\glsseeformat}[3][\seename]{\textbf{#1}
+&#x00A0;<br />&#x00A0;\glsseelist{#2}}
+</div>
+<!--l. 7825--><p class="nopar" >
+</p><!--l. 7828--><p class="indent" > The list of labels is dealt with by <span
+class="cmtt-10">\glsseelist</span>, which iterates through the list and
+typesets each entry in the label. The entries are separated by
+</p><!--l. 7831--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsseesep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-61008"></a> <span
+class="cmtt-10">\glsseesep </span></div><hr>
+</p><!--l. 7833--><p class="noindent" >
+or (for the last pair)
+</p><!--l. 7835--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsseelastsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-61009"></a> <span
+class="cmtt-10">\glsseelastsep </span></div><hr>
+</p><!--l. 7837--><p class="noindent" >
+These default to &#8220;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">,\space</span></span></span>&#8221; and &#8220;<span
+class="cmtt-10">\space\andname</span><a
+ id="dx1-61010"></a><span
+class="cmtt-10">\space</span>&#8221; respectively. The list entry text is
+displayed using:
+</p><!--l. 7841--><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-61011"></a> <span
+class="cmtt-10">\glsseeitemformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7843--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-61012"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.<span class="footnote-mark"><a
+href="#fn3x8" id="fn3x8-bk"><sup class="textsuperscript">8.3</sup></a></span><a
+ id="x1-61013f3"></a>
+For example, to make the cross-referenced list use small caps:
+
+
+</p>
+ <div class="verbatim" id="verbatim-259">
+\renewcommand{\glsseeitemformat}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\textsc{\glsentrytext{#1}}}
+</div>
+<!--l. 7851--><p class="nopar" >
+</p><!--l. 7853--><p class="indent" > <div class="important" title="Important Note"> You can use <span
+class="cmtt-10">\glsseeformat</span><a
+ id="dx1-61016"></a> and <span
+class="cmtt-10">\glsseelist</span><a
+ id="dx1-61017"></a> in the main body of the text, but they
+won&#8217;t automatically add the cross-referenced entries to the glossary. If you want them added
+with that location, you can do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-260">
+Some&#x00A0;information&#x00A0;(see&#x00A0;also
+&#x00A0;<br />\glsseelist{FourierSeries,TaylorsTheorem}%
+&#x00A0;<br />\glsadd{FourierSeries}\glsadd{TaylorsTheorem}).
+</div>
+<!--l. 7862--><p class="nopar" > </div>
+</p><!--l. 7863--><p class="noindent" >
+
+
+</p>
+<!--l. 7865--><p class="indent" > </div>
+</p><!--l. 7865--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">9. <a
+ id="sec:glsnolink"></a>Using Glossary Terms Without Links</h2>
+</p><!--l. 7868--><p class="indent" > The commands described in this section display entry details without adding any
+information to the glossary. They don&#8217;t use <span
+class="cmtt-10">\glstextformat</span><a
+ id="dx1-62001"></a>, they don&#8217;t have any optional
+arguments, they don&#8217;t affect the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;and, apart from <span
+class="cmtt-10">\glshyperlink</span><a
+ id="dx1-62002"></a>, they don&#8217;t
+produce hyperlinks.
+</p><!--l. 7874--><p class="indent" > <div class="important" title="Important Note"> Commands that aren&#8217;t expandable will be ignored by PDF bookmarks, so you will need
+to provide an alternative via <span
+class="cmss-10">hyperref</span><a
+ id="dx1-62003"></a>&#8217;s <span
+class="cmtt-10">\texorpdfstring </span>if you want to use them in
+sectioning commands. (This isn&#8217;t specific to the <span
+class="cmss-10">glossaries </span>package.) See the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-62004"></a>
+documentation for further details. All the commands that convert the first letter to upper
+case aren&#8217;t expandable. The other commands depend on whether their corresponding keys
+were assigned non-expandable values. </div>
+</p><!--l. 7883--><p class="noindent" >
+</p><!--l. 7885--><p class="indent" > If you want to title case a field, you can use:
+</p><!--l. 7886--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrytitlecase</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62005"></a> <span
+class="cmtt-10">\glsentrytitlecase{</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. 7888--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label identifying the glossary entry, &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; is the field label (see <a
+href="#tab:fieldmap">table&#x00A0;4.1</a>).
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-261">
+\glsentrytitlecase{sample}{desc}
+</div>
+<!--l. 7894--><p class="nopar" > (If you want title-casing in your glossary style, you might want to investigate the
+<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-62006"></a> package.)
+</p><!--l. 7898--><p class="indent" > Note that this command has the same limitations as <span
+class="cmtt-10">\makefirstuc </span>which is used by
+commands like <span
+class="cmtt-10">\Gls </span>and <span
+class="cmtt-10">\Glsentryname </span>to upper-case the first letter (see the notes about
+<span
+class="cmtt-10">\Gls </span>in <a
+href="#sec:gls-like"><span
+class="tcrm-1000">&sect;</span>6.1 </a><a
+href="#sec:gls-like">The <span
+class="cmtt-10">\gls</span>-Like Commands (First Use Flag Queried)<!--tex4ht:ref: sec:gls-like --></a>).
+</p><!--l. 7902--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62007"></a> <span
+class="cmtt-10">\glsentryname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7904--><p class="noindent" >
+</p><!--l. 7905--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62008"></a> <span
+class="cmtt-10">\Glsentryname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7907--><p class="noindent" >
+These commands display the name of the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, as specified by the
+<span
+class="cmss-10">name</span><a
+ id="dx1-62009"></a> key. <span
+class="cmtt-10">\Glsentryname </span>makes the first letter upper case. Neither of these commands check
+for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. The first form <span
+class="cmtt-10">\glsentryname </span>is expandable (unless the name
+contains unexpandable commands). Note that this may be different from the values of the
+<span
+class="cmss-10">text</span><a
+ id="dx1-62010"></a> or <span
+class="cmss-10">first</span><a
+ id="dx1-62011"></a> keys. In general it&#8217;s better to use <span
+class="cmtt-10">\glsentrytext </span>or <span
+class="cmtt-10">\glsentryfirst </span>instead of
+<span
+class="cmtt-10">\glsentryname</span>.
+</p><!--l. 7918--><p class="indent" > <div class="important" title="Important Note"> In general it&#8217;s best to avoid <span
+class="cmtt-10">\Glsentryname </span>with abbreviations. Instead, consider using
+<span
+class="cmtt-10">\Glsentrylong</span>, <span
+class="cmtt-10">\Glsentryshort </span>or <span
+class="cmtt-10">\Glsentryfull</span>. </div>
+</p><!--l. 7921--><p class="noindent" >
+</p><!--l. 7923--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossentryname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62012"></a> <span
+class="cmtt-10">\glossentryname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7925--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsnamefont</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsentryname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">} </span>but also checks for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+This command is not expandable. It&#8217;s used in the predefined glossary styles, so if you want to
+change the way the name is formatted in the glossary, you can redefine <span
+class="cmtt-10">\glsnamefont </span>to use
+the required fonts. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-262">
+\renewcommand*{\glsnamefont}[1]{\textmd{\sffamily&#x00A0;#1}}
+</div>
+<!--l. 7934--><p class="nopar" >
+</p><!--l. 7935--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glossentryname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62013"></a> <span
+class="cmtt-10">\Glossentryname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7937--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glossentryname </span>but makes the first letter of the name upper case.
+</p><!--l. 7941--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrytext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62014"></a> <span
+class="cmtt-10">\glsentrytext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7943--><p class="noindent" >
+</p><!--l. 7944--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrytext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62015"></a> <span
+class="cmtt-10">\Glsentrytext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7946--><p class="noindent" >
+These commands display the subsequent use text for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, as
+specified by the <span
+class="cmss-10">text</span><a
+ id="dx1-62016"></a> key. <span
+class="cmtt-10">\Glsentrytext </span>makes the first letter upper case. The first form is
+expandable (unless the text contains unexpandable commands). The second form is not
+expandable. Neither checks for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 7954--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62017"></a> <span
+class="cmtt-10">\glsentryplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7956--><p class="noindent" >
+</p><!--l. 7957--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62018"></a> <span
+class="cmtt-10">\Glsentryplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7959--><p class="noindent" >
+These commands display the subsequent use plural text for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;,
+as specified by the <span
+class="cmss-10">plural</span><a
+ id="dx1-62019"></a> key. <span
+class="cmtt-10">\Glsentryplural </span>makes the first letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the existence of
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 7968--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62020"></a> <span
+class="cmtt-10">\glsentryfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7970--><p class="noindent" >
+</p><!--l. 7971--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62021"></a> <span
+class="cmtt-10">\Glsentryfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7973--><p class="noindent" >
+These commands display the <a
+href="#glo:firstusetext">first use text</a>&#x00A0;for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;,
+as specified by the <span
+class="cmss-10">first</span><a
+ id="dx1-62022"></a> key. <span
+class="cmtt-10">\Glsentryfirst </span>makes the first letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the existence of
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 7981--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62023"></a> <span
+class="cmtt-10">\glsentryfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7983--><p class="noindent" >
+</p><!--l. 7984--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62024"></a> <span
+class="cmtt-10">\Glsentryfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7986--><p class="noindent" >
+These commands display the plural form of the <a
+href="#glo:firstusetext">first use text</a>&#x00A0;for the glossary entry given by
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, as specified by the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-62025"></a> key. <span
+class="cmtt-10">\Glsentryfirstplural </span>makes the first letter upper
+case. The first form is expandable (unless the value of that key contains unexpandable
+
+
+commands). The second form is not expandable. Neither checks for the existence of
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 7995--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrydesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62026"></a> <span
+class="cmtt-10">\glsentrydesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7997--><p class="noindent" >
+</p><!--l. 7998--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrydesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62027"></a> <span
+class="cmtt-10">\Glsentrydesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8000--><p class="noindent" >
+These commands display the description for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. <span
+class="cmtt-10">\Glsentrydesc</span>
+makes the first letter upper case. The first form is expandable (unless the value of that key
+contains unexpandable commands). The second form is not expandable. Neither checks for
+the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 8007--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossentrydesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62028"></a> <span
+class="cmtt-10">\glossentrydesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8009--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsentrydesc{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>but also checks for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. This
+command is not expandable. It&#8217;s used in the predefined glossary styles to display the
+description.
+</p><!--l. 8014--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glossentrydesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62029"></a> <span
+class="cmtt-10">\Glossentrydesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8016--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glossentrydesc </span>but converts the first letter to upper case. This command is not
+expandable.
+</p><!--l. 8020--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrydescplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62030"></a> <span
+class="cmtt-10">\glsentrydescplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8022--><p class="noindent" >
+</p><!--l. 8023--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrydescplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62031"></a> <span
+class="cmtt-10">\Glsentrydescplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8025--><p class="noindent" >
+These commands display the plural description for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+<span
+class="cmtt-10">\Glsentrydescplural </span>makes the first letter upper case. The first form is expandable (unless
+the value of that key contains unexpandable commands). The second form is not expandable.
+Neither checks for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 8034--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrysymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62032"></a> <span
+class="cmtt-10">\glsentrysymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8036--><p class="noindent" >
+</p><!--l. 8037--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrysymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62033"></a> <span
+class="cmtt-10">\Glsentrysymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8039--><p class="noindent" >
+These commands display the symbol for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. <span
+class="cmtt-10">\Glsentrysymbol</span>
+makes the first letter upper case. The first form is expandable (unless the value of that key
+contains unexpandable commands). The second form is not expandable. Neither checks for
+the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 8047--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsletentryfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62034"></a> <span
+class="cmtt-10">\glsletentryfield{</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>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8049--><p class="noindent" >
+This command doesn&#8217;t display anything. It merely fetches the value associated with the given
+field (where the available field names are listed in <a
+href="#tab:fieldmap">table&#x00A0;4.1</a>) and stores the result in the
+control sequence &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;. For example, to store the description for the entry whose label is &#8220;apple&#8221;
+in the control sequence <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\tmp</span></span></span>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-263">
+\glsletentryfield{\tmp}{apple}{desc}
+</div>
+<!--l. 8058--><p class="nopar" >
+</p><!--l. 8060--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossentrysymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62035"></a> <span
+class="cmtt-10">\glossentrysymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8062--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsentrysymbol{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>but also checks for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. This command
+is not expandable. It&#8217;s used in some of the predefined glossary styles to display the
+symbol.
+</p><!--l. 8067--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glossentrysymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62036"></a> <span
+class="cmtt-10">\Glossentrysymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8069--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glossentrysymbol </span>but converts the first letter to upper case. This command is
+not expandable.
+</p><!--l. 8073--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrysymbolplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62037"></a> <span
+class="cmtt-10">\glsentrysymbolplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8075--><p class="noindent" >
+</p><!--l. 8076--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrysymbolplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62038"></a> <span
+class="cmtt-10">\Glsentrysymbolplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8078--><p class="noindent" >
+These commands display the plural symbol for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+<span
+class="cmtt-10">\Glsentrysymbolplural </span>makes the first letter upper case. The first form is expandable
+(unless the value of that key contains unexpandable commands). The second form is not
+expandable. Neither checks for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 8086--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryuseri</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62039"></a> <span
+class="cmtt-10">\glsentryuseri{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8088--><p class="noindent" >
+</p><!--l. 8089--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryuseri</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62040"></a> <span
+class="cmtt-10">\Glsentryuseri{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8091--><p class="noindent" >
+</p><!--l. 8092--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryuserii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62041"></a> <span
+class="cmtt-10">\glsentryuserii{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8094--><p class="noindent" >
+</p><!--l. 8095--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryuserii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62042"></a> <span
+class="cmtt-10">\Glsentryuserii{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8097--><p class="noindent" >
+</p><!--l. 8098--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryuseriii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62043"></a> <span
+class="cmtt-10">\glsentryuseriii{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8100--><p class="noindent" >
+</p><!--l. 8101--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryuseriii</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62044"></a> <span
+class="cmtt-10">\Glsentryuseriii{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8103--><p class="noindent" >
+</p><!--l. 8104--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryuseriv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62045"></a> <span
+class="cmtt-10">\glsentryuseriv{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8106--><p class="noindent" >
+</p><!--l. 8107--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryuseriv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62046"></a> <span
+class="cmtt-10">\Glsentryuseriv{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+</p><!--l. 8109--><p class="noindent" >
+</p><!--l. 8110--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryuserv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62047"></a> <span
+class="cmtt-10">\glsentryuserv{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8112--><p class="noindent" >
+</p><!--l. 8113--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryuserv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62048"></a> <span
+class="cmtt-10">\Glsentryuserv{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8115--><p class="noindent" >
+</p><!--l. 8116--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryuservi</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62049"></a> <span
+class="cmtt-10">\glsentryuservi{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8118--><p class="noindent" >
+</p><!--l. 8119--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryuservi</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62050"></a> <span
+class="cmtt-10">\Glsentryuservi{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8121--><p class="noindent" >
+These commands display the value of the user keys for the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. The
+lower case forms are expandable (unless the value of the key contains unexpandable
+commands). The commands beginning with an upper case letter convert the first letter of the
+required value to upper case and are not expandable. None of these commands check for the
+existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 8130--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glshyperlink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62051"></a> <span
+class="cmtt-10">\glshyperlink[</span>&#x27E8;<span
+class="cmitt-10">link 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. 8132--><p class="noindent" >
+This command provides a hyperlink to the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; <span
+class="cmbx-10">but does not add</span>
+<span
+class="cmbx-10">any information to the glossary file</span>. The link text is given by <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-62052"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>by
+default<span class="footnote-mark"><a
+href="#fn1x9" id="fn1x9-bk"><sup class="textsuperscript">9.1</sup></a></span><a
+ id="x1-62053f1"></a>,
+but can be overridden using the optional argument. Note that the hyperlink will be
+suppressed if you have used <span
+class="cmtt-10">\glsdisablehyper</span><a
+ id="dx1-62057"></a> or if you haven&#8217;t loaded the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-62058"></a>
+package.
+</p><!--l. 8143--><p class="indent" > <div class="important" title="Important Note"> If you use <span
+class="cmtt-10">\glshyperlink</span>, you need to ensure that the relevant entry has been added to
+the glossary using any of the commands described in <a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to Glossary Entries<!--tex4ht:ref: sec:glslink --></a> or <a
+href="#sec:glsadd"><span
+class="tcrm-1000">&sect;</span>7
+</a><a
+href="#sec:glsadd">Adding an Entry to the Glossary Without Generating Text<!--tex4ht:ref: sec:glsadd --></a> otherwise you will end up with an
+undefined link. </div>
+</p><!--l. 8148--><p class="noindent" >
+</p><!--l. 8150--><p class="indent" > The next two commands are only available with <a
+href="#option1">Option&#x00A0;1</a> or with the <span
+class="cmss-10">savenumberlist</span><a
+ id="dx1-62059"></a>
+package option:
+</p><!--l. 8152--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrynumberlist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62060"></a> <span
+class="cmtt-10">\glsentrynumberlist{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8154--><p class="noindent" >
+</p><!--l. 8155--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdisplaynumberlist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62061"></a> <span
+class="cmtt-10">\glsdisplaynumberlist{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8157--><p class="noindent" >
+Both display the <a
+href="#glo:numberlist">number list<a
+ id="dx1-62062"></a></a> for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. When used with <a
+href="#option1">Option&#x00A0;1</a> a&#x00A0;rerun
+is required to ensure this list is up-to-date, when used with Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> a run of
+<a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-62063"></a></a> (or <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-62064"></a></a>/<a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-62065"></a></a>) followed by one or two runs of <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is
+required.
+</p><!--l. 8164--><p class="indent" > The first command, <span
+class="cmtt-10">\glsentrynumberlist</span>, simply displays the number list as is. The
+second command, <span
+class="cmtt-10">\glsdisplaynumberlist</span>, formats the list using:
+</p><!--l. 8167--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnumlistsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62066"></a> <span
+class="cmtt-10">\glsnumlistsep </span></div><hr>
+
+
+</p><!--l. 8169--><p class="noindent" >
+as the separator between all but the last two elements and
+</p><!--l. 8171--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnumlistlastsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-62067"></a> <span
+class="cmtt-10">\glsnumlistlastsep </span></div><hr>
+</p><!--l. 8173--><p class="noindent" >
+between the final two elements. The defaults are <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">,&#x2423;</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">&#x2423;\&amp;&#x2423;</span></span></span>, respectively.
+</p><!--l. 8177--><p class="indent" > <div class="important" title="Important Note"> <span
+class="cmtt-10">\glsdisplaynumberlist </span>is fairly experimental. It works with <a
+href="#option1">Option&#x00A0;1</a>, but for
+Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> it only works when the default counter format is used (that is, when the
+<span
+class="cmss-10">format</span><a
+ id="dx1-62068"></a> key is set to <span
+class="cmtt-10">glsnumberformat</span>). This command will only work with <span
+class="cmss-10">hyperref</span><a
+ id="dx1-62069"></a> if you
+choose <a
+href="#option1">Option&#x00A0;1</a>. If you try using this command with Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> and <span
+class="cmss-10">hyperref</span><a
+ id="dx1-62070"></a>,
+<span
+class="cmtt-10">\glsentrynumberlist </span>will be used instead. </div>
+</p><!--l. 8185--><p class="noindent" >
+</p><!--l. 8187--><p class="indent" > For further information see &#8220;Displaying entry details without adding information to the
+glossary&#8221; in the documented code (<span
+class="cmtt-10">glossaries-code.pdf</span>).
+
+
+</p>
+<!--l. 8191--><p class="indent" > </div>
+</p><!--l. 8191--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">10. <a
+ id="sec:printglossary"></a>Displaying a glossary</h2>
+</p><!--l. 8194--><p class="indent" > All defined glossaries may be displayed using:
+ </p><dl class="description"><dt class="description">
+<a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">
+ <!--l. 8197--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printnoidxglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63001"></a> <span
+class="cmtt-10">\printnoidxglossaries </span></div><hr>
+ </p><!--l. 8199--><p class="noindent" >
+ (Must be used with <span
+class="cmtt-10">\makenoidxglossaries</span><a
+ id="dx1-63002"></a> in the preamble.)
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">Options</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option2"><span
+class="cmbx-10">2</span></a> <span
+class="cmbx-10">and</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option3"><span
+class="cmbx-10">3</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">
+ <!--l. 8203--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63003"></a> <span
+class="cmtt-10">\printglossaries </span></div><hr>
+ </p><!--l. 8205--><p class="noindent" >
+ (Must be used with <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-63004"></a> in the preamble.)</p></dd></dl>
+<!--l. 8209--><p class="indent" > These commands will display all the glossaries in the order in which they were defined.
+Note that, in the case of Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>, no glossaries will appear until you have either used
+the Perl script <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-63005"></a></a> or Lua script <a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-63006"></a></a> or have directly used
+<a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-63007"></a></a> or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-63008"></a></a> (as described in <a
+href="#sec:makeglossaries"><span
+class="tcrm-1000">&sect;</span>1.5 </a><a
+href="#sec:makeglossaries">Generating the Associated Glossary Files<!--tex4ht:ref: sec:makeglossaries --></a>).
+(While the external files are missing, these commands will just do <span
+class="cmtt-10">\null </span>for each
+missing glossary to assist dictionary style documents that just use <span
+class="cmtt-10">\glsaddall</span>
+without inserting any text. If you use <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>, it will insert a heading and
+boilerplate text when the external files are missing. The extension package also provides
+<span
+class="cmtt-10">\printunsrtglossaries </span>as an alternative. See the <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> manual for further
+details.)
+</p><!--l. 8223--><p class="indent" > If the glossary still does not appear after you re-<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;your document, check the
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-63009"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-63010"></a> log files to see if there is a problem. With <a
+href="#option1">Option&#x00A0;1</a>, you just need two
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;runs to make the glossaries appear, but you may need further runs to make the
+<a
+href="#glo:numberlist">number list<a
+ id="dx1-63011"></a>s</a> up-to-date.
+</p><!--l. 8229--><p class="indent" > An individual glossary can be displayed using:
+ </p><dl class="description"><dt class="description">
+<a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">
+ <!--l. 8232--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printnoidxglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63012"></a> <span
+class="cmtt-10">\printnoidxglossary[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 8234--><p class="noindent" >
+ (Must be used with <span
+class="cmtt-10">\makenoidxglossaries</span><a
+ id="dx1-63013"></a> in the preamble.)
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">Options</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option2"><span
+class="cmbx-10">2</span></a> <span
+class="cmbx-10">and</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option3"><span
+class="cmbx-10">3</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">
+ <!--l. 8238--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63014"></a> <span
+class="cmtt-10">\printglossary[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 8240--><p class="noindent" >
+ (Must be used with <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-63015"></a> in the preamble.)</p></dd></dl>
+<!--l. 8243--><p class="noindent" >where &#x27E8;<span
+class="cmti-10">options</span>&#x27E9; is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; list of options. (Again, when the associated external file is missing,
+<span
+class="cmtt-10">\null </span>is inserted into the document.)
+
+
+</p><!--l. 8247--><p class="indent" > The following keys are available:
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">type</span><a
+ id="dx1-63016"></a> </dt><dd
+class="description">The value of this key specifies which glossary to print. If omitted, the default glossary is
+ assumed. For example, to print the list of acronyms:
+
+
+ <div class="verbatim" id="verbatim-264">
+ \printglossary[type=\acronymtype]
+</div>
+ <!--l. 8254--><p class="nopar" > Note that you can&#8217;t display an ignored glossary, so don&#8217;t try setting <span
+class="cmss-10">type</span><a
+ id="dx1-63017"></a> to the name of
+ a glossary that was defined using <span
+class="cmtt-10">\newignoredglossary</span><a
+ id="dx1-63018"></a>, described in <a
+href="#sec:newglossary"><span
+class="tcrm-1000">&sect;</span>12 </a><a
+href="#sec:newglossary">Defining New
+ Glossaries<!--tex4ht:ref: sec:newglossary --></a>. (You can display an ignored glossary with <span
+class="cmtt-10">\printunsrtglossary </span>provided
+ by <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>.)
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">title</span><a
+ id="dx1-63019"></a> </dt><dd
+class="description">This is the glossary&#8217;s title (overriding the title specified when the glossary was
+ defined).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">toctitle</span><a
+ id="dx1-63020"></a> </dt><dd
+class="description">This is the title to use for the table of contents (if the <span
+class="cmss-10">toc</span><a
+ id="dx1-63021"></a> package option has been
+ used). It may also be used for the page header, depending on the page style. If omitted,
+ the value of <span
+class="cmss-10">title</span><a
+ id="dx1-63022"></a> is used.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">style</span><a
+ id="dx1-63023"></a> </dt><dd
+class="description">This specifies which glossary style to use for this glossary, overriding the effect of the
+ <span
+class="cmss-10">style</span><a
+ id="dx1-63024"></a> package option or <span
+class="cmtt-10">\glossarystyle</span><a
+ id="dx1-63025"></a>.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">numberedsection</span><a
+ id="dx1-63026"></a> </dt><dd
+class="description">This specifies whether to use a numbered section for this glossary,
+ overriding the effect of the <span
+class="cmss-10">numberedsection</span><a
+ id="dx1-63027"></a> package option. This key has the same
+ syntax as the <span
+class="cmss-10">numberedsection</span><a
+ id="dx1-63028"></a> package option, described in <a
+href="#sec:pkgopts-sec"><span
+class="tcrm-1000">&sect;</span>2.2 </a><a
+href="#sec:pkgopts-sec">Sectioning, Headings
+ and TOC Options<!--tex4ht:ref: sec:pkgopts-sec --></a>.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">nonumberlist</span><a
+ id="dx1-63029"></a> </dt><dd
+class="description">This is a boolean key. If true (<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">nonumberlist=true</span></span></span>) the numberlist is
+ suppressed for this glossary. If false (<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">nonumberlist=false</span></span></span>) the numberlist is displayed
+ for this glossary.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">nogroupskip</span><a
+ id="dx1-63030"></a> </dt><dd
+class="description">This is a boolean key. If true the vertical gap between groups is suppressed for
+ this glossary.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">nopostdot</span><a
+ id="dx1-63031"></a> </dt><dd
+class="description">This is a boolean key. If true the full stop after the description is suppressed for
+ this glossary.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">entrycounter</span><a
+ id="dx1-63032"></a> </dt><dd
+class="description">This is a boolean key. Behaves similar to the package option of the same name.
+ The corresponding package option must be used to make <span
+class="cmtt-10">\glsrefentry</span><a
+ id="dx1-63033"></a> work
+ correctly.
+
+
+ </dd><dt class="description">
+<span
+class="cmssbx-10">subentrycounter</span><a
+ id="dx1-63034"></a> </dt><dd
+class="description">This is a boolean key. Behaves similar to the package option of the same
+ name. If you want to set both <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-63035"></a> and <span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-63036"></a>, make sure you specify
+ <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-63037"></a> first. The corresponding package option must be used to make
+ <span
+class="cmtt-10">\glsrefentry</span><a
+ id="dx1-63038"></a> work correctly.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">sort</span><a
+ id="dx1-63039"></a> </dt><dd
+class="description">This key is only available for <a
+href="#option1">Option&#x00A0;1</a>. Possible values are: <span
+class="cmtt-10">word </span>(word order), <span
+class="cmtt-10">letter</span>
+ (letter order), <span
+class="cmtt-10">standard </span>(word or letter ordering taken from the <span
+class="cmss-10">order</span><a
+ id="dx1-63040"></a> package option),
+ <span
+class="cmtt-10">use </span>(order of use), <span
+class="cmtt-10">def </span>(order of definition) <span
+class="cmtt-10">nocase </span>(case-insensitive) or <span
+class="cmtt-10">case</span>
+ (case-sensitive). Note that the word and letter comparisons (that is, everything other
+ than <span
+class="cmtt-10">sort=use </span>and <span
+class="cmtt-10">sort=def</span>) just use a simple character code comparison. For a
+ locale-sensitive sort, you must use either <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-63041"></a></a> (<a
+href="#option3">Option&#x00A0;3</a>) or <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-63042"></a></a> (<a
+href="#option4">Option&#x00A0;4</a>).
+ Note that <a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-63043"></a></a> provides many other sort options.
+ <!--l. 8318--><p class="noindent" ><div class="important" title="Important Note"> If you use the <span
+class="cmtt-10">use </span>or <span
+class="cmtt-10">def </span>values make sure that you select a glossary style that doesn&#8217;t
+ have a visual indicator between groups, as the grouping no longer makes sense. Consider
+ using the <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-63044"></a> option. </div>
+ </p><!--l. 8323--><p class="noindent" >
+ </p><!--l. 8326--><p class="noindent" >The
+ word
+ and
+ letter
+ order
+ sort
+ methods
+ use
+ <span
+class="cmss-10">datatool</span><a
+ id="dx1-63045"></a>&#8217;s
+ <span
+class="cmtt-10">\dtlwordindexcompare</span><a
+ id="dx1-63046"></a>
+ and
+ <span
+class="cmtt-10">\dtlletterindexcompare</span><a
+ id="dx1-63047"></a>
+ handlers.
+ The
+ case-insensitive
+ sort
+ method
+ uses
+ <span
+class="cmss-10">datatool</span><a
+ id="dx1-63048"></a>&#8217;s
+ <span
+class="cmtt-10">\dtlicompare</span><a
+ id="dx1-63049"></a>
+ handler.
+ The
+ case-sensitive
+ sort
+ method
+ uses
+ <span
+class="cmss-10">datatool</span><a
+ id="dx1-63050"></a>&#8217;s
+
+
+ <span
+class="cmtt-10">\dtlcompare</span><a
+ id="dx1-63051"></a>
+ handler.
+ See
+ the
+ <span
+class="cmss-10">datatool</span><a
+ id="dx1-63052"></a>
+ documentation
+ for
+ further
+ details.
+ </p><!--l. 8335--><p class="noindent" >If you don&#8217;t get an error with <span
+class="cmtt-10">sort=use </span>and <span
+class="cmtt-10">sort=def </span>but you do get an error with one
+ of the other sort options, then you probably need to use the <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-63053"></a> package
+ option or make sure none of the entries have fragile commands in their <span
+class="cmss-10">sort</span><a
+ id="dx1-63054"></a>
+ field.</p></dd></dl>
+<!--l. 8342--><p class="indent" > By default, the glossary is started either by <span
+class="cmtt-10">\chapter*</span><a
+ id="dx1-63055"></a> or by <span
+class="cmtt-10">\section*</span><a
+ id="dx1-63056"></a>, depending on
+whether or not <span
+class="cmtt-10">\chapter</span><a
+ id="dx1-63057"></a> is defined. This can be overridden by the <span
+class="cmss-10">section</span><a
+ id="dx1-63058"></a> package option or
+the <span
+class="cmtt-10">\setglossarysection</span><a
+ id="dx1-63059"></a> command. Numbered sectional units can be obtained using
+the <span
+class="cmss-10">numberedsection</span><a
+ id="dx1-63060"></a> package option. Each glossary sets the page header via the
+command
+</p><!--l. 8348--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsglossarymark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63061"></a> <span
+class="cmtt-10">\glsglossarymark</span><a
+ id="dx1-63062"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8350--><p class="noindent" >
+If this mechanism is unsuitable for your chosen class file or page style package, you will need
+to redefine <span
+class="cmtt-10">\glsglossarymark</span><a
+ id="dx1-63063"></a>. Further information about these options and commands is
+given in <a
+href="#sec:pkgopts-sec"><span
+class="tcrm-1000">&sect;</span>2.2 </a><a
+href="#sec:pkgopts-sec">Sectioning, Headings and TOC Options<!--tex4ht:ref: sec:pkgopts-sec --></a>.
+</p><!--l. 8356--><p class="indent" > Information can be added to the start of the glossary (after the title and before the main
+body of the glossary) by redefining
+</p><!--l. 8358--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossarypreamble</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63064"></a> <span
+class="cmtt-10">\glossarypreamble </span></div><hr>
+</p><!--l. 8360--><p class="noindent" >
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-265">
+\renewcommand{\glossarypreamble}{Numbers&#x00A0;in&#x00A0;italic
+&#x00A0;<br />indicate&#x00A0;primary&#x00A0;definitions.}
+</div>
+<!--l. 8365--><p class="nopar" > This needs to be done before the glossary is displayed.
+</p><!--l. 8368--><p class="indent" > If you want a different preamble per glossary you can use
+</p><!--l. 8369--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setglossarypreamble</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63065"></a> <span
+class="cmtt-10">\setglossarypreamble[</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">preamble text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8371--><p class="noindent" >
+If &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is omitted, <span
+class="cmtt-10">\glsdefaulttype </span>is used.
+</p><!--l. 8374--><p class="indent" > For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-266">
+\setglossarypreamble{Numbers&#x00A0;in&#x00A0;italic
+&#x00A0;<br />indicate&#x00A0;primary&#x00A0;definitions.}
+</div>
+<!--l. 8378--><p class="nopar" > This will print the given preamble text for the main glossary, but not have any preamble text
+for any other glossaries.
+</p><!--l. 8382--><p class="indent" > There is an analogous command to <span
+class="cmtt-10">\glossarypreamble </span>called
+</p><!--l. 8383--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossarypostamble</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63066"></a> <span
+class="cmtt-10">\glossarypostamble </span></div><hr>
+</p><!--l. 8385--><p class="noindent" >
+which is placed at the end of each glossary.
+<a
+ id="x1-63067r15"></a>
+</p><!--l. 8388--><p class="noindent" ><span
+class="cmbx-12">Example 15</span><span
+class="cmbx-12">&#x00A0;(Switch to Two Column Mode for Glossary)</span><a
+ id="x1-63068"></a>
+</p><!--l. 8389--><p class="indent" > Suppose you are using the <span
+class="cmss-10">superheaderborder</span><a
+ id="dx1-63069"></a>
+style<span class="footnote-mark"><a
+href="#fn1x10" id="fn1x10-bk"><sup class="textsuperscript">10.1</sup></a></span><a
+ id="x1-63070f1"></a>,
+and you want the glossary to be in two columns, but after the glossary you want to switch
+back to one column mode, you could do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-267">
+\renewcommand*{\glossarysection}[2][]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\twocolumn[{\chapter*{#2}}]%
+&#x00A0;<br />&#x00A0;&#x00A0;\setlength\glsdescwidth{0.6\linewidth}%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsglossarymark{\glossarytoctitle}%
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand*{\glossarypostamble}{\onecolumn}
+</div>
+<!--l. 8403--><p class="nopar" >
+</p>
+<div class="center"
+>
+<!--l. 8405--><p class="noindent" >
+</p><!--l. 8405--><p class="noindent" >____________________________</p></div>
+<!--l. 8407--><p class="indent" > Within each glossary, each entry name is formatted according to
+</p><!--l. 8408--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnamefont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-63074"></a> <span
+class="cmtt-10">\glsnamefont{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8410--><p class="noindent" >
+which takes one argument: the entry name. This command is always used regardless of the
+glossary style. By default, <span
+class="cmtt-10">\glsnamefont </span>simply displays its argument in whatever the
+surrounding font happens to be. This means that in the list-like glossary styles (defined in
+the <span
+class="cmss-10">glossary-list</span><a
+ id="dx1-63075"></a> style file) the name will appear in bold, since the name is placed
+in the optional argument of <span
+class="cmtt-10">\item</span>, whereas in the tabular styles (defined in the
+<span
+class="cmss-10">glossary-long</span><a
+ id="dx1-63076"></a> and <span
+class="cmss-10">glossary-super</span><a
+ id="dx1-63077"></a> style files) the name will appear in the normal font. The
+hierarchical glossary styles (defined in the <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-63078"></a> style file) also set the name in
+bold.
+</p><!--l. 8423--><p class="indent" > If you want to change the font for the description, or if you only want to change the name
+font for some types of entries but not others, you might want to consider using the
+<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-63079"></a> package.
+<a
+ id="x1-63080r16"></a>
+</p><!--l. 8429--><p class="noindent" ><span
+class="cmbx-12">Example 16</span><span
+class="cmbx-12">&#x00A0;(Changing the Font Used to Display Entry Names in the</span>
+<span
+class="cmbx-12">Glossary)</span><a
+ id="x1-63081"></a>
+</p><!--l. 8430--><p class="indent" > Suppose you want all the entry names to appear in medium weight small caps in your
+glossaries, then you can do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-268">
+\renewcommand{\glsnamefont}[1]{\textsc{\mdseries&#x00A0;#1}}
+</div>
+<!--l. 8434--><p class="nopar" > </p>
+<div class="center"
+>
+<!--l. 8435--><p class="noindent" >
+</p><!--l. 8435--><p class="noindent" >____________________________</p></div>
+
+
+<!--l. 8437--><p class="indent" > </div>
+</p><!--l. 8437--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">11. <a
+ id="sec:xindy"></a>Xindy (Option 3)</h2>
+</p><!--l. 8440--><p class="indent" > If you want to use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-64001"></a></a> to sort the glossary, you must use the package option
+<span
+class="cmss-10">xindy</span><a
+ id="dx1-64002"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-269">
+\usepackage[xindy]{glossaries}
+</div>
+<!--l. 8444--><p class="nopar" > This ensures that the glossary information is written in <span
+class="cmtt-10">xindy</span><a
+ id="dx1-64003"></a> syntax.
+</p><!--l. 8448--><p class="indent" > <a
+href="#sec:makeglossaries"><span
+class="tcrm-1000">&sect;</span>1.5 </a><a
+href="#sec:makeglossaries">Generating the Associated Glossary Files<!--tex4ht:ref: sec:makeglossaries --></a> covers how to use the external <a
+href="#glo:indexingapp">indexing
+application</a>, and <a
+href="#sec:locationsyntax"><span
+class="tcrm-1000">&sect;</span>5.2 </a><a
+href="#sec:locationsyntax">Locations<!--tex4ht:ref: sec:locationsyntax --></a> covers the issues involved in the location syntax. This section
+covers the commands provided by the <span
+class="cmss-10">glossaries </span>package that allow you to adjust the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-64004"></a></a>
+style file (<span
+class="cmtt-10">.xdy</span><a
+ id="dx1-64005"></a>) and parameters.
+</p><!--l. 8455--><p class="indent" > To assist writing information to the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-64006"></a></a> style file, the <span
+class="cmss-10">glossaries </span>package provides the
+following commands:
+</p><!--l. 8458--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsopenbrace</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-64007"></a> <span
+class="cmtt-10">\glsopenbrace </span></div><hr>
+</p><!--l. 8460--><p class="noindent" >
+</p><!--l. 8461--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsclosebrace</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-64008"></a> <span
+class="cmtt-10">\glsclosebrace </span></div><hr>
+</p><!--l. 8463--><p class="noindent" >
+which produce an open and closing brace. (This is needed because <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> don&#8217;t expand to
+a simple brace character when written to a file.) Similarly, you can write a percent character
+using:
+</p><!--l. 8468--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspercentchar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-64009"></a> <span
+class="cmtt-10">\glspercentchar </span></div><hr>
+</p><!--l. 8470--><p class="noindent" >
+and a tilde character using:
+</p><!--l. 8472--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstildechar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-64010"></a> <span
+class="cmtt-10">\glstildechar </span></div><hr>
+</p><!--l. 8474--><p class="noindent" >
+For example, a newline character is specified in a <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-64011"></a></a> style file using <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">~n</span></span></span> so you can use
+<span
+class="cmtt-10">\glstildechar n </span>to write this correctly (or you can do <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\string~n</span></span></span>). A backslash can be
+written to a file using
+</p><!--l. 8479--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsbackslash</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-64012"></a> <span
+class="cmtt-10">\glsbackslash </span></div><hr>
+</p><!--l. 8481--><p class="noindent" >
+</p><!--l. 8483--><p class="indent" > In addition, if you are using a package that makes the double quote character active (e.g.
+<span
+class="cmss-10">ngerman</span><a
+ id="dx1-64013"></a>) you can use:
+</p><!--l. 8485--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsquote</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-64014"></a> <span
+class="cmtt-10">\glsquote{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8487--><p class="noindent" >
+which will produce <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"</span></span></span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"</span></span></span>. Alternatively, you can use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\string"</span></span></span> to write the double-quote
+character. This document assumes that the double quote character has not been made active,
+so the examples just use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"</span></span></span> for clarity.
+</p><!--l. 8493--><p class="indent" > If you want greater control over the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-64015"></a></a> style file than is available through the
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;commands provided by the <span
+class="cmss-10">glossaries </span>package, you will need to edit the <span
+class="cmtt-10">xindy</span><a
+ id="dx1-64016"></a>
+style file. In which case, you must use <span
+class="cmtt-10">\noist</span><a
+ id="dx1-64017"></a> to prevent the style file from being
+overwritten by the <span
+class="cmss-10">glossaries </span>package. For additional information about <span
+class="cmtt-10">xindy</span><a
+ id="dx1-64018"></a>, read
+the <span
+class="cmtt-10">xindy</span><a
+ id="dx1-64019"></a> documentation. I&#8217;m sorry I can&#8217;t provide any assistance with writing
+<span
+class="cmtt-10">xindy</span><a
+ id="dx1-64020"></a> style files. If you need help, I recommend you ask on the <span
+class="cmtt-10">xindy</span><a
+ id="dx1-64021"></a> mailing list
+(<a
+href="http://xindy.sourceforge.net/mailing-list.html" class="url" ><span
+class="cmtt-10">http://xindy.sourceforge.net/mailing-list.html</span></a>).
+
+
+</p>
+<!--l. 8504--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.1 </span> <a
+ id="sec:langenc"></a>Language and Encodings</h3>
+<!--l. 8507--><p class="noindent" >When you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-65001"></a></a>, you need to specify the language and encoding used (unless you
+have written your own custom <span
+class="cmtt-10">xindy</span><a
+ id="dx1-65002"></a> style file that defines the relevant alphabet
+and sort rules). If you use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-65003"></a></a>, this information is obtained from the
+document&#8217;s auxiliary (<span
+class="cmtt-10">.aux</span><a
+ id="dx1-65004"></a>) file. The <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-65005"></a></a> script attempts to find the root
+language given your document settings, but in the event that it gets it wrong or if
+<span
+class="cmtt-10">xindy</span><a
+ id="dx1-65006"></a> doesn&#8217;t support that language, then you can specify the required language
+using:
+</p><!--l. 8516--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetXdyLanguage</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-65007"></a> <span
+class="cmtt-10">\GlsSetXdyLanguage[</span>&#x27E8;<span
+class="cmitt-10">glossary type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">language</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8518--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">language</span>&#x27E9; is the name of the language. The optional argument can be used if you have
+multiple glossaries in different languages. If &#x27E8;<span
+class="cmti-10">glossary type</span>&#x27E9; is omitted, it will be applied to all
+glossaries, otherwise the language setting will only be applied to the glossary given by
+&#x27E8;<span
+class="cmti-10">glossary type</span>&#x27E9;.
+</p><!--l. 8526--><p class="indent" > If the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-65008"></a> package is used, the encoding will be obtained from the value of
+<span
+class="cmtt-10">\inputencodingname</span><a
+ id="dx1-65009"></a>. Alternatively, you can specify the encoding using:
+</p><!--l. 8529--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetXdyCodePage</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-65010"></a> <span
+class="cmtt-10">\GlsSetXdyCodePage{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8531--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; is the name of the encoding. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-270">
+\GlsSetXdyCodePage{utf8}
+</div>
+<!--l. 8535--><p class="nopar" >
+</p><!--l. 8537--><p class="indent" > Note that you can also specify the language and encoding using the package option
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">xindy={language=</span></span></span>&#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">,codepage=</span></span></span>&#x27E8;<span
+class="cmti-10">code</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">}</span></span></span>. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-271">
+\usepackage[xindy={language=english,codepage=utf8}]{glossaries}
+</div>
+<!--l. 8543--><p class="nopar" >
+</p><!--l. 8545--><p class="indent" > If you write your own custom <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-65011"></a></a> style file that includes the language settings, you need
+to set the language to nothing:
+
+
+</p>
+ <div class="verbatim" id="verbatim-272">
+\GlsSetXdyLanguage{}
+</div>
+<!--l. 8550--><p class="nopar" > (and remember to use <span
+class="cmtt-10">\noist</span><a
+ id="dx1-65012"></a> to prevent the style file from being overwritten).
+</p><!--l. 8554--><p class="indent" > <div class="important" title="Important Note"> The commands <span
+class="cmtt-10">\GlsSetXdyLanguage </span>and <span
+class="cmtt-10">\GlsSetXdyCodePage </span>have no effect if
+you don&#8217;t use <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-65013"></a></a>. If you call <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-65014"></a></a> without <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-65015"></a> you
+need to remember to set the language and encoding using the <span
+class="cmtt-10">-L</span><a
+ id="dx1-65016"></a> and <span
+class="cmtt-10">-C</span><a
+ id="dx1-65017"></a> switches.
+</div>
+</p><!--l. 8560--><p class="noindent" >
+</p><!--l. 8562--><p class="noindent" >
+</p>
+<!--l. 8562--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.2 </span> <a
+ id="sec:xindyloc"></a>Locations and Number lists</h3>
+<!--l. 8565--><p class="noindent" >If you use <span
+class="cmss-10">xindy</span><a
+ id="dx1-66001"></a>, the <span
+class="cmss-10">glossaries </span>package needs to know which counters you will be using in the
+<a
+href="#glo:numberlist">number list<a
+ id="dx1-66002"></a></a> in order to correctly format the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66003"></a></a> style file. Counters specified using the
+<span
+class="cmss-10">counter</span><a
+ id="dx1-66004"></a> package option or the &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; option of <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-66005"></a> are automatically taken
+care of, but if you plan to use a different counter in the <span
+class="cmss-10">counter</span><a
+ id="dx1-66006"></a> key for commands
+like <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-66007"></a>, then you need to identify these counters <span
+class="cmti-10">before </span><span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66008"></a>
+using:
+</p><!--l. 8573--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsAddXdyCounters</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-66009"></a> <span
+class="cmtt-10">\GlsAddXdyCounters{</span>&#x27E8;<span
+class="cmitt-10">counter list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8575--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">counter list</span>&#x27E9; is a comma-separated list of counter names.
+</p><!--l. 8578--><p class="indent" > The most likely attributes used in the <span
+class="cmss-10">format</span><a
+ id="dx1-66010"></a> key (<span
+class="cmtt-10">textrm</span><a
+ id="dx1-66011"></a>, <span
+class="cmtt-10">hyperrm</span><a
+ id="dx1-66012"></a> etc) are automatically
+added to the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66013"></a></a> style file, but if you want to use another attribute, you need to add it
+using:
+</p><!--l. 8582--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsAddXdyAttribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-66014"></a> <span
+class="cmtt-10">\GlsAddXdyAttribute{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8584--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the attribute, as used in the <span
+class="cmss-10">format</span><a
+ id="dx1-66015"></a> key.
+</p><!--l. 8588--><p class="indent" > Take care if you have multiple instances of the same location with different formats. The
+duplicate locations will be discarded according to the order in which the attributes are
+listed. Consider defining semantic commands to use for primary references. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-273">
+\newcommand*{\primary}[1]{\textbf{#1}}
+&#x00A0;<br />\GlsAddXdyAttribute{primary}
+</div>
+<!--l. 8596--><p class="nopar" > Then in the document:
+
+
+</p>
+ <div class="verbatim" id="verbatim-274">
+A&#x00A0;\gls[format=primary]{duck}&#x00A0;is&#x00A0;an&#x00A0;aquatic&#x00A0;bird.
+&#x00A0;<br />There&#x00A0;are&#x00A0;lots&#x00A0;of&#x00A0;different&#x00A0;types&#x00A0;of&#x00A0;\gls{duck}.
+</div>
+<!--l. 8601--><p class="nopar" > This will give the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">format=primary</span></span></span> instance preference over the next use that doesn&#8217;t use the
+<span
+class="cmss-10">format</span><a
+ id="dx1-66016"></a> key.
+<a
+ id="x1-66017r17"></a>
+</p><!--l. 8605--><p class="noindent" ><span
+class="cmbx-12">Example 17</span><span
+class="cmbx-12">&#x00A0;(Custom Font for Displaying a Location)</span><a
+ id="x1-66018"></a>
+</p><!--l. 8606--><p class="indent" > Suppose I want a bold, italic, hyperlinked location. I first need to define a command that
+will do this:
+
+
+</p>
+ <div class="verbatim" id="verbatim-275">
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+</div>
+<!--l. 8610--><p class="nopar" > but with <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66019"></a></a>, I also need to add this as an allowed attribute:
+
+
+</p>
+ <div class="verbatim" id="verbatim-276">
+\GlsAddXdyAttribute{hyperbfit}
+</div>
+<!--l. 8615--><p class="nopar" > Now I can use it in the optional argument of commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-66020"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-277">
+Here&#x00A0;is&#x00A0;a&#x00A0;\gls[format=hyperbfit]{sample}&#x00A0;entry.
+</div>
+<!--l. 8620--><p class="nopar" > (where <span
+class="cmtt-10">sample </span>is the label of the required entry). </p>
+<div class="center"
+>
+<!--l. 8622--><p class="noindent" >
+</p><!--l. 8622--><p class="noindent" >____________________________</p></div>
+<!--l. 8624--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\GlsAddXdyAttribute </span>has no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-66021"></a> is used or if <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66022"></a> is
+omitted. <span
+class="cmtt-10">\GlsAddXdyAttribute </span>must be used before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66023"></a>. Additionally,
+<span
+class="cmtt-10">\GlsAddXdyCounters </span>must come before <span
+class="cmtt-10">\GlsAddXdyAttribute</span>. </div>
+</p><!--l. 8630--><p class="noindent" >
+</p><!--l. 8632--><p class="indent" > If the location numbers include formatting commands, then you need to add a location
+style in the appropriate format using
+</p><!--l. 8634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsAddXdyLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-66024"></a> <span
+class="cmtt-10">\GlsAddXdyLocation[</span>&#x27E8;<span
+class="cmitt-10">prefix-location</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8636--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the format and &#x27E8;<span
+class="cmti-10">definition</span>&#x27E9; is the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66025"></a></a> definition. The optional
+argument &#x27E8;<span
+class="cmti-10">prefix-location</span>&#x27E9; is needed if <span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; either isn&#8217;t defined or is different from
+<span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;. Be sure to also read <a
+href="#sec:locationsyntax"><span
+class="tcrm-1000">&sect;</span>5.2 </a><a
+href="#sec:locationsyntax">Locations<!--tex4ht:ref: sec:locationsyntax --></a> for some issues that you may
+encounter.
+</p><!--l. 8644--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\GlsAddXdyLocation </span>has no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-66026"></a> is used or if <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66027"></a> is
+omitted. <span
+class="cmtt-10">\GlsAddXdyLocation </span>must be used before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66028"></a>. </div>
+</p><!--l. 8648--><p class="noindent" >
+<a
+ id="x1-66029r18"></a>
+</p><!--l. 8650--><p class="noindent" ><span
+class="cmbx-12">Example 18</span><span
+class="cmbx-12">&#x00A0;(Custom Numbering System for Locations)</span><a
+ id="x1-66030"></a>
+</p><!--l. 8651--><p class="indent" > Suppose I decide to use a somewhat eccentric numbering system for sections where I
+redefine <span
+class="cmtt-10">\thesection </span>as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-278">
+\renewcommand*{\thesection}{[\thechapter]\arabic{section}}
+</div>
+<!--l. 8655--><p class="nopar" > If I haven&#8217;t done <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">counter=section</span></span></span> in the package option, I need to specify that the counter
+will be used as a location number:
+
+
+</p>
+ <div class="verbatim" id="verbatim-279">
+\GlsAddXdyCounters{section}
+</div>
+<!--l. 8661--><p class="nopar" > Next I need to add the location style (<span
+class="cmtt-10">\thechapter </span>is assumed to be the standard
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\arabic{chapter}</span></span></span>):
+
+
+</p>
+ <div class="verbatim" id="verbatim-280">
+\GlsAddXdyLocation{section}{:sep&#x00A0;"["&#x00A0;"arabic-numbers"&#x00A0;:sep&#x00A0;"]"
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-numbers"
+&#x00A0;<br />}
+</div>
+<!--l. 8668--><p class="nopar" > Note that if I have further decided to use the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-66031"></a> package and want to redefine
+<span
+class="cmtt-10">\theHsection </span>as:
+
+
+</p>
+ <div class="verbatim" id="verbatim-281">
+\renewcommand*{\theHsection}{\thepart.\thesection}
+&#x00A0;<br />\renewcommand*{\thepart}{\Roman{part}}
+</div>
+<!--l. 8674--><p class="nopar" > then I need to modify the <span
+class="cmtt-10">\GlsAddXdyLocation </span>code above to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-282">
+\GlsAddXdyLocation["roman-numbers-uppercase"]{section}{:sep&#x00A0;"["
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-numbers"&#x00A0;:sep&#x00A0;"]"&#x00A0;"arabic-numbers"
+&#x00A0;<br />}
+</div>
+<!--l. 8680--><p class="nopar" > Since <span
+class="cmtt-10">\Roman</span><a
+ id="dx1-66032"></a> will result in an empty string if the counter is zero, it&#8217;s a good idea to add an
+extra location to catch this:
+
+
+</p>
+ <div class="verbatim" id="verbatim-283">
+\GlsAddXdyLocation{zero.section}{:sep&#x00A0;"["
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-numbers"&#x00A0;:sep&#x00A0;"]"&#x00A0;"arabic-numbers"
+&#x00A0;<br />}
+</div>
+<!--l. 8687--><p class="nopar" > This example is illustrated in the sample file <a
+href="#x1-11086r25"><span
+class="cmtt-10">samplexdy2.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 8690--><p class="noindent" >
+</p><!--l. 8690--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-66033r19"></a>
+<!--l. 8692--><p class="noindent" ><span
+class="cmbx-12">Example 19</span><span
+class="cmbx-12">&#x00A0;(Locations as Dice)</span><a
+ id="x1-66034"></a>
+</p><!--l. 8693--><p class="indent" > Suppose I want a rather eccentric page numbering system that&#8217;s represented by the
+number of dots on dice. The <span
+class="cmss-10">stix</span><a
+ id="dx1-66035"></a> package provides <span
+class="cmtt-10">\dicei</span>, &#x2026;, <span
+class="cmtt-10">\dicevi </span>that represent the six
+sides of a die. I can define a command that takes a number as its argument. If the
+number is less than seven, the appropriate <span
+class="cmtt-10">\dice</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9; command is used otherwise it
+does <span
+class="cmtt-10">\dicevi </span>the required number of times with the leftover in a final <span
+class="cmtt-10">\dice</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9;. For
+example, the number 16 is represented by <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dicevi\dicevi\diceiv</span></span></span> (6 + 6 + 4 = 16).
+I&#8217;ve called this command <span
+class="cmtt-10">\tallynum </span>to match the example given earlier in <a
+href="#sec:locationsyntax"><span
+class="tcrm-1000">&sect;</span>5.2
+</a><a
+href="#sec:locationsyntax">Locations<!--tex4ht:ref: sec:locationsyntax --></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-284">
+\newrobustcmd{\tallynum}[1]{%
+&#x00A0;<br />&#x00A0;\ifnum\number#1&#x003C;7
+&#x00A0;<br />&#x00A0;&#x00A0;$\csname&#x00A0;dice\romannumeral#1\endcsname$%
+&#x00A0;<br />&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;$\dicevi$%
+&#x00A0;<br />&#x00A0;&#x00A0;\expandafter\tallynum\expandafter{\numexpr#1-6}%
+&#x00A0;<br />&#x00A0;\fi
+&#x00A0;<br />}
+</div>
+<!--l. 8713--><p class="nopar" > Here&#8217;s the counter command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-285">
+newcommand{\tally}[1]{\tallynum{\arabic{#1}}}
+</div>
+<!--l. 8717--><p class="nopar" > The <span
+class="cmss-10">page</span><a
+ id="dx1-66036"></a> counter representation (<span
+class="cmtt-10">\thepage</span>) needs to be changed to use this command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-286">
+\renewcommand*{\thepage}{\tally{page}}
+</div>
+<!--l. 8722--><p class="nopar" > The <span
+class="cmtt-10">\tally </span>command expands to <span
+class="cmtt-10">\tallynum {</span>&#x27E8;<span
+class="cmti-10">number</span>&#x27E9;<span
+class="cmtt-10">} </span>so this needs a location class that
+matches this format:
+
+
+</p>
+ <div class="verbatim" id="verbatim-287">
+\GlsAddXdyLocation{tally}{%
+&#x00A0;<br />&#x00A0;:sep&#x00A0;"\string\tallynum\space\glsopenbrace"
+&#x00A0;<br />&#x00A0;"arabic-numbers"
+&#x00A0;<br />&#x00A0;:sep&#x00A0;"\glsclosebrace"
+&#x00A0;<br />}
+</div>
+<!--l. 8731--><p class="nopar" > The space between <span
+class="cmtt-10">\tallynum </span>and <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">number</span>&#x27E9;<span
+class="cmtt-10">} </span>is significant to <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66037"></a></a> so <span
+class="cmtt-10">\space </span>is
+required.
+</p><!--l. 8735--><p class="indent" > Note that <span
+class="cmtt-10">\GlsAddXdyLocation{</span>&#x27E8;<span
+class="cmti-10">name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">definition</span>&#x27E9;<span
+class="cmtt-10">} </span>will define commands in the
+form:
+</p><!--l. 8738--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsX</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">X</span></span></span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">Hprefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8739--><p class="noindent" >
+for each counter that has been identified either by the <span
+class="cmss-10">counter</span><a
+ id="dx1-66038"></a> package option, the &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;
+option for <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-66039"></a> or in the argument of <span
+class="cmtt-10">\GlsAddXdyCounters</span><a
+ id="dx1-66040"></a>. The first argument
+&#x27E8;<span
+class="cmti-10">Hprefix</span>&#x27E9; is only relevant when used with the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-66041"></a> package and indicates that <span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;
+is given by <span
+class="cmtt-10">\Hprefix</span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">.</span></span></span><span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;.
+</p><!--l. 8747--><p class="indent" > The sample file <a
+href="#x1-11071r24"><span
+class="cmtt-10">samplexdy.tex</span></a>, which comes with the <span
+class="cmss-10">glossaries </span>package, uses the default
+<span
+class="cmss-10">page</span><a
+ id="dx1-66042"></a> counter for locations, and it uses the default <span
+class="cmtt-10">\glsnumberformat</span><a
+ id="dx1-66043"></a> and a custom
+<span
+class="cmtt-10">\hyperbfit </span>format. A new <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66044"></a></a> location called <span
+class="cmtt-10">tallynum</span>, as illustrated above, is defined
+to make the page numbers appear as dice. In order for the location numbers to
+hyperlink to the relevant pages, I&#x00A0;need to redefine the necessary <span
+class="cmtt-10">\glsX</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">X</span></span></span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9;
+commands:
+
+
+</p>
+ <div class="verbatim" id="verbatim-288">
+\renewcommand{\glsXpageXglsnumberformat}[2]{%
+&#x00A0;<br />&#x00A0;\linkpagenumber#2%
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand{\glsXpageXhyperbfit}[2]{%
+&#x00A0;<br />&#x00A0;\textbf{\em\linkpagenumber#2}%
+&#x00A0;<br />}
+&#x00A0;<br />\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+</div>
+<!--l. 8765--><p class="nopar" > Note that the second argument of <span
+class="cmtt-10">\glsXpageXglsnumberformat </span>is in the format <span
+class="cmtt-10">\tallynum</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9;<span
+class="cmtt-10">} </span>so the line
+
+
+</p>
+ <div class="verbatim" id="verbatim-289">
+&#x00A0;\linkpagenumber#2%
+</div>
+<!--l. 8770--><p class="nopar" > does </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">&#x00A0;\linkpagenumber\tallynum{</span>&#x27E8;<span
+class="cmitt-10">number</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> so <span
+class="cmtt-10">\tallynum </span>is the first argument of <span
+class="cmtt-10">\linkpagenumber </span>and &#x27E8;<span
+class="cmti-10">number</span>&#x27E9; is the second
+argument.
+<div class="center"
+>
+<!--l. 8777--><p class="noindent" >
+</p><!--l. 8777--><p class="noindent" >____________________________</p></div>
+<!--l. 8779--><p class="indent" > <div class="important" title="Important Note"> This method is very sensitive to the internal definition of the location command.
+</div>
+</p><!--l. 8782--><p class="noindent" >
+<a
+ id="x1-66045r20"></a>
+</p><!--l. 8784--><p class="noindent" ><span
+class="cmbx-12">Example 20</span><span
+class="cmbx-12">&#x00A0;(Locations as Words not Digits)</span><a
+ id="x1-66046"></a>
+</p><!--l. 8785--><p class="indent" > Suppose I want the page numbers written as words rather than digits and I&#x00A0;use the
+<span
+class="cmss-10">fmtcount</span><a
+ id="dx1-66047"></a> package to do this. I&#x00A0;can redefine <span
+class="cmtt-10">\thepage</span><a
+ id="dx1-66048"></a> as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-290">
+\renewcommand*{\thepage}{\Numberstring{page}}
+</div>
+<!--l. 8790--><p class="nopar" > This <span
+class="cmti-10">used </span>to get expanded to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\protect</span><span
+class="cmtt-10">&#x00A0;\Numberstringnum</span><span
+class="cmtt-10">&#x00A0;</span></span></span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9;<span
+class="cmtt-10">} </span>where &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; is the
+Arabic page number. This means that I&#x00A0;needed to define a new location with the
+form:
+
+
+</p>
+ <div class="verbatim" id="verbatim-291">
+\GlsAddXdyLocation{Numberstring}{:sep&#x00A0;"\string\protect\space
+&#x00A0;<br />&#x00A0;&#x00A0;\string\Numberstringnum\space\glsopenbrace"
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-numbers"&#x00A0;:sep&#x00A0;"\glsclosebrace"}
+</div>
+<!--l. 8798--><p class="nopar" > and if I&#8217;d used the <span
+class="cmtt-10">\linkpagenumber </span>command from the previous example, it would need
+<span
+class="cmti-10">three </span>arguments (the first being <span
+class="cmtt-10">\protect</span>):
+
+
+</p>
+ <div class="verbatim" id="verbatim-292">
+\newcommand{\linkpagenumber}[3]{\hyperlink{page.#3}{#1#2{#3}}}
+</div>
+<!--l. 8804--><p class="nopar" >
+</p><!--l. 8806--><p class="indent" > The internal definition of <span
+class="cmtt-10">\Numberstring </span>has since changed so that it now expands to
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Numberstringnum</span><span
+class="cmtt-10">&#x00A0;</span></span></span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9;<span
+class="cmtt-10">} </span>(no <span
+class="cmtt-10">\protect</span>). This means that the location class definition must be
+changed to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-293">
+\GlsAddXdyLocation{Numberstring}{%&#x00A0;no&#x00A0;\protect&#x00A0;now!
+&#x00A0;<br />&#x00A0;&#x00A0;:sep&#x00A0;"\string\Numberstringnum\space\glsopenbrace"
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-numbers"&#x00A0;:sep&#x00A0;"\glsclosebrace"}
+</div>
+<!--l. 8814--><p class="nopar" > and <span
+class="cmtt-10">\linkpagenumber </span>goes back to only two arguments:
+
+
+</p>
+ <div class="verbatim" id="verbatim-294">
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+</div>
+<!--l. 8818--><p class="nopar" > The other change is that <span
+class="cmtt-10">\Numberstring </span>uses </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\the\value{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> instead of <div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\expandafter\the\csname</span><span
+class="cmtt-10">&#x00A0;c@</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">\endcsname</span>
+</div>
+</div> so it hides <span
+class="cmtt-10">\c@page </span>from the location escaping mechanism (see <a
+href="#sec:locationsyntax"><span
+class="tcrm-1000">&sect;</span>5.2 </a><a
+href="#sec:locationsyntax">Locations<!--tex4ht:ref: sec:locationsyntax --></a>). This means
+that the page number may be incorrect if the indexing occurs during the output
+routine.
+<!--l. 8832--><p class="indent" > A more recent change to <span
+class="cmss-10">fmtcount</span><a
+ id="dx1-66049"></a> (v3.03) now puts three instances of <span
+class="cmtt-10">\expandafter</span>
+before <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\the\value</span></span></span> which no longer hides <span
+class="cmtt-10">\c@page </span>from the location escaping mechanism, so
+the page numbers should once more be correct. Further changes to the <span
+class="cmss-10">fmtcount</span><a
+ id="dx1-66050"></a> package may
+cause a problem again.
+</p><!--l. 8838--><p class="indent" > <div class="important" title="Important Note"> When dealing with custom formats where the internal definitions are outside of your
+control and liable to change, it&#8217;s best to provide a wrapper command. </div>
+</p><!--l. 8842--><p class="noindent" >
+</p><!--l. 8844--><p class="indent" > Instead of directly using <span
+class="cmtt-10">\Numberstring </span>in the definition of <span
+class="cmtt-10">\thepage</span>, I can provide a
+custom command in the same form as the earlier <span
+class="cmtt-10">\tally </span>command:
+
+
+</p>
+ <div class="verbatim" id="verbatim-295">
+\newcommand{\customfmt}[1]{\customfmtnum{\arabic{#1}}}
+&#x00A0;<br />\newrobustcmd{\customfmtnum}[1]{\Numberstringnum{#1}}
+</div>
+<!--l. 8850--><p class="nopar" > This ensures that the location will always be written to the indexing file in the form:
+</p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">:locref</span><span
+class="cmtt-10">&#x00A0;"{}{\\customfmtnum</span><span
+class="cmtt-10">&#x00A0;{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">}}"</span>
+</div>
+</div> So the location class can be defined as:
+
+
+ <div class="verbatim" id="verbatim-296">
+\GlsAddXdyLocation{customfmt}{
+&#x00A0;<br />&#x00A0;:sep&#x00A0;"\string\customfmtnum\space\glsopenbrace"
+&#x00A0;<br />&#x00A0;"arabic-numbers"
+&#x00A0;<br />&#x00A0;:sep&#x00A0;"\glsclosebrace"}
+</div>
+<!--l. 8862--><p class="nopar" >
+</p><!--l. 8864--><p class="indent" > The sample file <a
+href="#x1-11089r26"><span
+class="cmtt-10">samplexdy3.tex</span></a> illustrates this. </p>
+<div class="center"
+>
+<!--l. 8866--><p class="noindent" >
+</p><!--l. 8866--><p class="noindent" >____________________________</p></div>
+<!--l. 8868--><p class="indent" > In the <a
+href="#glo:numberlist">number list<a
+ id="dx1-66051"></a></a>, the locations are sorted according to the list of provided location classes.
+The default ordering is: <span
+class="cmtt-10">roman-page-numbers </span>(i, ii, &#x2026;), <span
+class="cmtt-10">arabic-page-numbers </span>(1, 2, &#x2026;),
+<span
+class="cmtt-10">arabic-section-numbers </span>(for example, 1.1 if the compositor is a full stop or 1-1 if the compositor is a
+hyphen<span class="footnote-mark"><a
+href="#fn1x11" id="fn1x11-bk"><sup class="textsuperscript">11.1</sup></a></span><a
+ id="x1-66052f1"></a>),
+<span
+class="cmtt-10">alpha-page-numbers </span>(a, b, &#x2026;), <span
+class="cmtt-10">Roman-page-numbers </span>(I, II, &#x2026;),
+<span
+class="cmtt-10">Alpha-page-numbers </span>(A, B, &#x2026;), <span
+class="cmtt-10">Appendix-page-numbers </span>(for example, A.1
+if the Alpha compositor is a full stop or A-1 if the Alpha compositor is a
+hyphen<span class="footnote-mark"><a
+href="#fn2x11" id="fn2x11-bk"><sup class="textsuperscript">11.2</sup></a></span><a
+ id="x1-66054f2"></a>),
+user defined location names (as specified by <span
+class="cmtt-10">\GlsAddXdyLocation</span><a
+ id="dx1-66056"></a> in
+the order in which they were defined), and finally <span
+class="cmtt-10">see </span>(cross-referenced
+entries).<span class="footnote-mark"><a
+href="#fn3x11" id="fn3x11-bk"><sup class="textsuperscript">11.3</sup></a></span><a
+ id="x1-66057f3"></a>
+This ordering can be changed using:
+</p><!--l. 8885--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetXdyLocationClassOrder</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-66058"></a> <span
+class="cmtt-10">\GlsSetXdyLocationClassOrder{</span>&#x27E8;<span
+class="cmitt-10">location names</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8887--><p class="noindent" >
+where each location name is delimited by double quote marks and separated by white space.
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-297">
+\GlsSetXdyLocationClassOrder{
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-page-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"arabic-section-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"roman-page-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"Roman-page-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"alpha-page-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"Alpha-page-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"Appendix-page-numbers"
+&#x00A0;<br />&#x00A0;&#x00A0;"see"
+&#x00A0;<br />}
+</div>
+<!--l. 8901--><p class="nopar" > (Remember to add <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"seealso"</span></span></span> if you&#8217;re using <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a>.)
+</p><!--l. 8905--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\GlsSetXdyLocationClassOrder </span>has no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-66059"></a> is used or if
+<span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66060"></a> is omitted. <span
+class="cmtt-10">\GlsSetXdyLocationClassOrder </span>must be used before
+<span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66061"></a>. </div>
+</p><!--l. 8910--><p class="noindent" >
+</p><!--l. 8912--><p class="indent" > If a <a
+href="#glo:numberlist">number list<a
+ id="dx1-66062"></a></a> consists of a sequence of consecutive numbers, the range will be
+concatenated. The number of consecutive locations that causes a range formation defaults to
+2, but can be changed using:
+</p><!--l. 8917--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetXdyMinRangeLength</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-66063"></a> <span
+class="cmtt-10">\GlsSetXdyMinRangeLength{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8919--><p class="noindent" >
+For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-298">
+\GlsSetXdyMinRangeLength{3}
+</div>
+<!--l. 8923--><p class="nopar" > The argument may also be the keyword <span
+class="cmtt-10">none</span>, to indicate that there should be no range
+formations. See the <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-66064"></a></a> manual for further details on range formations.
+</p><!--l. 8928--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmtt-10">\GlsSetXdyMinRangeLength </span>has no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-66065"></a> is used or if
+<span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66066"></a> is omitted. <span
+class="cmtt-10">\GlsSetXdyMinRangeLength </span>must be used before
+<span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-66067"></a>. </div>
+</p><!--l. 8933--><p class="noindent" >
+See also <a
+href="#sec:ranges"><span
+class="tcrm-1000">&sect;</span>5.3 </a><a
+href="#sec:ranges">Range Formations<!--tex4ht:ref: sec:ranges --></a>.
+</p><!--l. 8936--><p class="noindent" >
+</p>
+<!--l. 8936--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.3 </span> <a
+ id="sec:groups"></a>Glossary Groups</h3>
+<!--l. 8939--><p class="noindent" >The glossary is divided into groups according to the first letter of the sort key. The <span
+class="cmss-10">glossaries</span>
+package also adds a number group by default, unless you suppress it in the <span
+class="cmss-10">xindy</span><a
+ id="dx1-67001"></a> package
+option. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-299">
+\usepackage[xindy={glsnumbers=false}]{glossaries}
+</div>
+<!--l. 8945--><p class="nopar" > Any entry that doesn&#8217;t go in one of the letter groups or the number group is placed in the
+default group. If you want <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-67002"></a></a> to sort the number group numerically (rather than by a
+string sort) then you need to use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-67003"></a>&#8217;s</a> <span
+class="cmtt-10">numeric-sort </span>module:
+
+
+</p>
+ <div class="verbatim" id="verbatim-300">
+\GlsAddXdyStyle{numeric-sort}
+</div>
+<!--l. 8952--><p class="nopar" >
+</p><!--l. 8954--><p class="indent" > If you don&#8217;t use <span
+class="cmtt-10">glsnumbers=false</span>, the default behaviour is to locate the number group
+before the &#8220;A&#8221; letter group. If you are not using a Roman alphabet, you need to change this
+using:
+</p><!--l. 8959--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetXdyFirstLetterAfterDigits</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-67004"></a> <span
+class="cmtt-10">\GlsSetXdyFirstLetterAfterDigits{</span>&#x27E8;<span
+class="cmitt-10">letter</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8961--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">letter</span>&#x27E9; is the first letter of your alphabet. Take care if you&#8217;re using <span
+class="cmss-10">inputenc</span><a
+ id="dx1-67005"></a> as
+non-ASCII characters are actually active characters that expand. (This isn&#8217;t a problem with
+the native UTF-8 engines and <span
+class="cmss-10">fontspec</span><a
+ id="dx1-67006"></a>.) The starred form will sanitize the argument to
+prevent expansion. Alternatively you can use:
+</p><!--l. 8970--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsSetXdyNumberGroupOrder</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-67007"></a> <span
+class="cmtt-10">\GlsSetXdyNumberGroupOrder{</span>&#x27E8;<span
+class="cmitt-10">relative location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8972--><p class="noindent" >
+to change the default </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">:before</span><span
+class="cmtt-10">&#x00A0;\string"</span>&#x27E8;<span
+class="cmitt-10">letter</span>&#x27E9;<span
+class="cmtt-10">\string"</span>
+</div>
+</div> to &#x27E8;<span
+class="cmti-10">relative location</span>&#x27E9;. For example:
+
+
+ <div class="verbatim" id="verbatim-301">
+\GlsSetXdyNumberGroupOrder{:after&#x00A0;\string"Z\string"}
+</div>
+<!--l. 8980--><p class="nopar" > will put the number group after the &#8220;Z&#8221; letter group. Again take care of active characters.
+There&#8217;s a starred version that sanitizes the argument (so don&#8217;t use <span
+class="cmtt-10">\string </span>in it).
+</p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\GlsSetXdyNumberGroupOrder*</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">:after</span><span
+class="cmtt-10">&#x00A0;"</span><span
+class="cmtt-10">&Ouml;</span><span
+class="cmtt-10">"</span><span
+class="cmsy-10">}</span>
+</div>
+</div>
+<!--l. 8988--><p class="indent" > <div class="important" title="Important Note"> Note that these commands have no effect if <span
+class="cmtt-10">\noist</span><a
+ id="dx1-67008"></a> is used or if <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-67009"></a> is
+omitted. <span
+class="cmtt-10">\GlsSetXdyFirstLetterAfterDigits </span>must be used before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-67010"></a>.
+ </div>
+</p><!--l. 8993--><p class="noindent" >
+
+
+</p>
+<!--l. 8996--><p class="indent" > </div>
+</p><!--l. 8996--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">12. <a
+ id="sec:newglossary"></a>Defining New Glossaries</h2>
+</p><!--l. 8999--><p class="indent" > A new glossary can be defined using:
+</p><!--l. 9000--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-68001"></a> <span
+class="cmtt-10">\newglossary[</span>&#x27E8;<span
+class="cmitt-10">log-ext</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">in-ext</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">out-ext</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">counter</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 9002--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the label to assign to this glossary. The arguments &#x27E8;<span
+class="cmti-10">in-ext</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">out-ext</span>&#x27E9; specify
+the extensions to give to the input and output files for that glossary, &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; is the default title
+for this new glossary and the final optional argument &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; specifies which counter to use
+for the associated <a
+href="#glo:numberlist">number list<a
+ id="dx1-68002"></a>s</a> (see also <a
+href="#sec:numberlists"><span
+class="tcrm-1000">&sect;</span>5 </a><a
+href="#sec:numberlists">Number lists<!--tex4ht:ref: sec:numberlists --></a>). The first optional argument
+specifies the extension for the <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-68003"></a></a> (<a
+href="#option2">Option&#x00A0;2</a>) or <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-68004"></a></a> (<a
+href="#option3">Option&#x00A0;3</a>) transcript file (this
+information is only used by <a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-68005"></a></a> which picks up the information from the
+auxiliary file). If you use <a
+href="#option1">Option&#x00A0;1</a>, the &#x27E8;<span
+class="cmti-10">log-ext</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">in-ext</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">out-ext</span>&#x27E9; arguments are
+ignored.
+</p><!--l. 9016--><p class="indent" > <div class="important" title="Important Note"> The glossary label &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; must not contain any active characters. It&#8217;s generally best to
+stick with just characters that have category code&#x00A0;11 (typically the non-extended <a
+href="#glo:latinchar">Latin
+character<a
+ id="dx1-68006"></a>s</a> for standard <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>). </div>
+</p><!--l. 9021--><p class="noindent" >
+</p><!--l. 9023--><p class="indent" > There is also a starred version (new to v4.08):
+</p><!--l. 9024--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newglossary*</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-68007"></a> <span
+class="cmtt-10">\newglossary*{</span>&#x27E8;<span
+class="cmitt-10">name</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">counter</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 9026--><p class="noindent" >
+which is equivalent to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\newglossary[</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">-glg]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">-gls</span><span
+class="cmsy-10">}{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">-glo</span><span
+class="cmsy-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">counter</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+</div> or you can also use:
+<!--l. 9032--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\altnewglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-68008"></a> <span
+class="cmtt-10">\altnewglossary{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">tag</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">counter</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 9034--><p class="noindent" >
+which is equivalent to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\newglossary[</span>&#x27E8;<span
+class="cmitt-10">tag</span>&#x27E9;<span
+class="cmtt-10">-glg]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">tag</span>&#x27E9;<span
+class="cmtt-10">-gls</span><span
+class="cmsy-10">}{</span>&#x27E8;<span
+class="cmitt-10">tag</span>&#x27E9;<span
+class="cmtt-10">-glo</span><span
+class="cmsy-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">counter</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+</div>
+<!--l. 9040--><p class="indent" > It may be that you have some terms that are so common that they don&#8217;t need to be listed.
+In this case, you can define a&#x00A0;special type of glossary that doesn&#8217;t create any associated files.
+This is referred to as an &#8220;ignored glossary&#8221; and it&#8217;s ignored by commands that iterate
+over all the glossaries, such as <span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-68009"></a>. To define an ignored glossary,
+use
+</p><!--l. 9046--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newignoredglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-68010"></a> <span
+class="cmtt-10">\newignoredglossary{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9048--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the glossary (as above). This glossary type will automatically be
+
+
+added to the <span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-68011"></a> list, since there are no hypertargets for the entries in
+an ignored glossary. (The sample file <a
+href="#x1-11114r38"><span
+class="cmtt-10">sample-entryfmt.tex</span></a> defines an ignored
+glossary.)
+</p><!--l. 9055--><p class="indent" > You can test if a glossary is an ignored one using:
+</p><!--l. 9056--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifignoredglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-68012"></a> <span
+class="cmtt-10">\ifignoredglossary{</span>&#x27E8;<span
+class="cmitt-10">name</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. 9058--><p class="noindent" >
+This does &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; if &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; was defined as an ignored glossary, otherwise it does &#x27E8;<span
+class="cmti-10">false</span>&#x27E9;.
+</p><!--l. 9062--><p class="indent" > Note that the main (default) glossary is automatically created as:
+
+
+</p>
+ <div class="verbatim" id="verbatim-302">
+\newglossary{main}{gls}{glo}{\glossaryname}
+</div>
+<!--l. 9065--><p class="nopar" > so it can be identified by the label <span
+class="cmtt-10">main </span>(unless the <span
+class="cmss-10">nomain</span><a
+ id="dx1-68013"></a> package option is used). Using
+the <span
+class="cmss-10">acronym</span><a
+ id="dx1-68014"></a> package option is equivalent to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-303">
+\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+</div>
+<!--l. 9071--><p class="nopar" > so it can be identified by the label <span
+class="cmtt-10">acronym</span>. If you are not sure whether the <span
+class="cmss-10">acronym</span><a
+ id="dx1-68015"></a>
+option has been used, you can identify the list of acronyms by the command
+<span class="marginpar"><span
+class="cmtt-9">\acronymtype</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-68016"></a><span
+class="cmtt-10">\acronymtype </span>which is set to <span
+class="cmtt-10">acronym</span>, if the <span
+class="cmss-10">acronym</span><a
+ id="dx1-68017"></a> option has been used,
+otherwise it is set to <span
+class="cmtt-10">main</span>. Note that if you are using the main glossary as your list of
+acronyms, you need to declare it as a list of acronyms using the package option
+<span
+class="cmss-10">acronymlists</span><a
+ id="dx1-68018"></a>.
+</p><!--l. 9082--><p class="indent" > The <span
+class="cmss-10">symbols</span><a
+ id="dx1-68019"></a> package option creates a new glossary with the label <span
+class="cmtt-10">symbols </span>using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-304">
+\newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}
+</div>
+<!--l. 9086--><p class="nopar" > The <span
+class="cmss-10">numbers</span><a
+ id="dx1-68020"></a> package option creates a new glossary with the label <span
+class="cmtt-10">numbers </span>using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-305">
+\newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}
+</div>
+<!--l. 9091--><p class="nopar" > The <span
+class="cmss-10">index</span><a
+ id="dx1-68021"></a> package option creates a new glossary with the label <span
+class="cmtt-10">index </span>using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-306">
+\newglossary[ilg]{index}{ind}{idx}{\indexname}
+</div>
+<!--l. 9096--><p class="nopar" >
+</p><!--l. 9098--><p class="indent" > <div class="important" title="Important Note"> Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>: all glossaries must be defined before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-68022"></a> to ensure that
+the relevant output files are opened.
+</p><!--l. 9102--><p class="indent" > See <a
+href="#sec:fixednames"><span
+class="tcrm-1000">&sect;</span>1.4.1 </a><a
+href="#sec:fixednames">Changing the Fixed Names<!--tex4ht:ref: sec:fixednames --></a> if you want to redefine <span
+class="cmtt-10">\glossaryname</span>,
+especially if you are using <span
+class="cmss-10">babel</span><a
+ id="dx1-68023"></a> or <span
+class="cmss-10">translator</span><a
+ id="dx1-68024"></a>. (Similarly for <span
+class="cmtt-10">\glssymbolsgroupname </span>and
+<span
+class="cmtt-10">\glsnumbersgroupname</span>.) If you want to redefine <span
+class="cmtt-10">\indexname</span><a
+ id="dx1-68025"></a>, just follow the advice in <a
+href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=fixnam" >How
+to change LaTeX&#8217;s &#8220;fixed names&#8221;</a>. </div>
+</p><!--l. 9109--><p class="noindent" >
+
+
+</p>
+<!--l. 9111--><p class="indent" > </div>
+</p><!--l. 9111--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">13. <a
+ id="sec:acronyms"></a>Acronyms and Other Abbreviations</h2>
+</p><!--l. 9114--><p class="indent" > The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-69001"></a> package provides superior abbreviation handling. You may want to
+consider using that package instead of the commands described here.
+</p><!--l. 9118--><p class="indent" > <div class="important" title="Important Note"> Note that although this chapter uses the term &#8220;acronym&#8221;, you can also use the
+commands described here for initialisms or contractions (as in the case of some of the
+examples given below). If the glossary title is no longer applicable (for example,
+it should be &#8220;Abbreviations&#8221; rather than &#8220;Acronyms&#8221;) then you can change the
+title either by redefining <span
+class="cmtt-10">\acronymname</span><a
+ id="dx1-69002"></a> (see <a
+href="#sec:languages"><span
+class="tcrm-1000">&sect;</span>1.4 </a><a
+href="#sec:languages">Multi-Lingual Support<!--tex4ht:ref: sec:languages --></a>) or by
+using the <span
+class="cmss-10">title</span><a
+ id="dx1-69003"></a> in the optional argument of <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-69004"></a> (or <span
+class="cmtt-10">\printacronym</span><a
+ id="dx1-69005"></a>).
+Alternatively consider using the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-69006"></a> package&#8217;s <span
+class="cmss-10">abbreviations </span>option instead.
+</div>
+</p><!--l. 9130--><p class="noindent" >
+</p><!--l. 9132--><p class="indent" > You may have noticed in <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a> that when you specify a new entry,
+you can specify alternate text to use when the term is <a
+href="#glo:firstuse">first used</a> in the document. This
+provides a useful means to define abbreviations. For convenience, the <span
+class="cmss-10">glossaries </span>package
+defines the command:
+</p><!--l. 9137--><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-69007"></a> <span
+class="cmtt-10">\newacronym[</span>&#x27E8;<span
+class="cmitt-10">key-val list</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">abbrv</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9139--><p class="noindent" >
+</p><!--l. 9141--><p class="indent" > This uses <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-69008"></a> to create an entry with the given label in the glossary given
+by <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-69009"></a>. You can specify a different glossary using the <span
+class="cmss-10">type</span><a
+ id="dx1-69010"></a> key within the optional
+argument. The <span
+class="cmtt-10">\newacronym </span>command also uses the <span
+class="cmss-10">long</span><a
+ id="dx1-69011"></a>, <span
+class="cmss-10">longplural</span><a
+ id="dx1-69012"></a>, <span
+class="cmss-10">short</span><a
+ id="dx1-69013"></a> and <span
+class="cmss-10">shortplural</span><a
+ id="dx1-69014"></a>
+keys in <span
+class="cmtt-10">\newglossaryentry </span>to store the long and abbreviated forms and their
+plurals.
+</p><!--l. 9149--><p class="indent" > Note that the same restrictions on the entry &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; in <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-69015"></a> also apply to
+<span
+class="cmtt-10">\newacronym </span>(see <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a>).
+</p><!--l. 9153--><p class="indent" > <div class="important" title="Important Note"> If you haven&#8217;t identified the specified glossary type as a list of acronyms (via
+the package option <span
+class="cmss-10">acronymlists</span><a
+ id="dx1-69016"></a> or the command <span
+class="cmtt-10">\DeclareAcronymList</span><a
+ id="dx1-69017"></a>, see <a
+href="#sec:pkgopts-acronym"><span
+class="tcrm-1000">&sect;</span>2.5
+</a><a
+href="#sec:pkgopts-acronym">Acronym Options<!--tex4ht:ref: sec:pkgopts-acronym --></a>) <span
+class="cmtt-10">\newacronym </span>will add it to the list and <span
+class="cmti-10">reset the display style</span>
+for that glossary via <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-69018"></a>. If you have a mixture of acronyms and
+regular entries within the same glossary, care is needed if you want to change the
+display style: you must first identify that glossary as a list of acronyms and then
+use <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-69019"></a> (not redefine <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-69020"></a>) before defining your entries.
+</div>
+</p><!--l. 9164--><p class="noindent" >
+</p><!--l. 9166--><p class="indent" > The optional argument <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">key-val list</span>&#x27E9;<span
+class="cmtt-10">} </span>allows you to specify additional information. Any
+key that can be used in the second argument of <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-69021"></a> can also be used
+here in &#x27E8;<span
+class="cmti-10">key-val list</span>&#x27E9;. For example, <span
+class="cmss-10">description</span><a
+ id="dx1-69022"></a> (when used with one of the styles that
+require a description, described in <a
+href="#sec:setacronymstyle"><span
+class="tcrm-1000">&sect;</span>13.1 </a><a
+href="#sec:setacronymstyle">Changing the Abbreviation Style<!--tex4ht:ref: sec:setacronymstyle --></a>) or you can
+override plural forms of &#x27E8;<span
+class="cmti-10">abbrv</span>&#x27E9; or &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; using the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-69023"></a> or <span
+class="cmss-10">longplural</span><a
+ id="dx1-69024"></a> keys. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-307">
+\newacronym[longplural={diagonal&#x00A0;matrices}]%
+&#x00A0;<br />&#x00A0;&#x00A0;{dm}{DM}{diagonal&#x00A0;matrix}
+</div>
+<!--l. 9179--><p class="nopar" > If the <a
+href="#glo:firstuse">first use</a>&#x00A0;uses the plural form, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspl{dm}</span></span></span> will display: diagonal matrices
+(DMs). If you want to use the <span
+class="cmss-10">longplural</span><a
+ id="dx1-69025"></a> or <span
+class="cmss-10">shortplural</span><a
+ id="dx1-69026"></a> keys, I recommend you use
+<span
+class="cmtt-10">\setacronymstyle</span><a
+ id="dx1-69027"></a> to set the display style rather than using one of the pre-version 4.02
+acronym styles.
+</p><!--l. 9186--><p class="indent" > As with <span
+class="cmss-10">plural</span><a
+ id="dx1-69028"></a> and <span
+class="cmss-10">firstplural</span><a
+ id="dx1-69029"></a>, if <span
+class="cmss-10">longplural</span><a
+ id="dx1-69030"></a> is missing, it&#8217;s obtained by appended
+<span
+class="cmtt-10">\glspluralsuffix</span><a
+ id="dx1-69031"></a> to the singular form. The short plural <span
+class="cmss-10">shortplural</span><a
+ id="dx1-69032"></a> is obtained (is not
+explicitly set) by appending <span
+class="cmtt-10">\glsacrpluralsuffix</span><a
+ id="dx1-69033"></a> to the short form. These commands may
+be changed by the associated language files, but they can&#8217;t be added to the usual
+caption hooks as there&#8217;s no guarantee when they&#8217;ll be expanded (as <a
+href="#pluralsuffix">discussed earlier</a>).
+A different approach is used by <span
+class="cmss-10">glossaries-extra</span>, which has category attributes to
+determine whether or not to append a suffix when forming the default value of
+<span
+class="cmss-10">shortplural</span><a
+ id="dx1-69034"></a>.
+</p><!--l. 9198--><p class="indent" > Since <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-69035"></a> uses <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-69036"></a>, you can use commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-69037"></a> and
+<span
+class="cmtt-10">\glsreset</span><a
+ id="dx1-69038"></a> as with any other glossary entry.
+</p><!--l. 9202--><p class="indent" > <div class="important" title="Important Note"> Since <span
+class="cmtt-10">\newacronym </span>sets <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">type=\acronymtype</span></span></span>, if you want to load a file containing
+acronym definitions using <span
+class="cmtt-10">\loadglsentries</span><a
+ id="dx1-69039"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">filename</span>&#x27E9;<span
+class="cmtt-10">}</span>, the optional argument &#x27E8;<span
+class="cmti-10">type</span>&#x27E9;
+will not have an effect unless you explicitly set the type as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">type=\glsdefaulttype</span></span></span>
+in the optional argument to <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-69040"></a>. See <a
+href="#sec:loadglsentries"><span
+class="tcrm-1000">&sect;</span>4.6 </a><a
+href="#sec:loadglsentries">Loading Entries From a File<!--tex4ht:ref: sec:loadglsentries --></a>.
+</div>
+</p><!--l. 9209--><p class="noindent" >
+<a
+ id="x1-69041r21"></a>
+</p><!--l. 9211--><p class="noindent" ><span
+class="cmbx-12">Example 21</span><span
+class="cmbx-12">&#x00A0;(Defining an Abbreviation)</span><a
+ id="x1-69042"></a>
+</p><!--l. 9212--><p class="indent" > The following defines the abbreviation IDN:
+
+
+</p>
+ <div class="verbatim" id="verbatim-308">
+\newacronym{idn}{IDN}{identification&#x00A0;number}
+</div>
+<!--l. 9215--><p class="nopar" > <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{idn}</span></span></span> will produce &#8220;identification number (IDN)&#8221; on <a
+href="#glo:firstuse">first use</a>&#x00A0;and &#8220;IDN&#8221; on
+subsequent uses. If you want to use one of the smallcaps acronym styles, described in <a
+href="#sec:setacronymstyle"><span
+class="tcrm-1000">&sect;</span>13.1
+</a><a
+href="#sec:setacronymstyle">Changing the Abbreviation Style<!--tex4ht:ref: sec:setacronymstyle --></a>, you need to use lower case characters for the shortened
+form:
+
+
+</p>
+ <div class="verbatim" id="verbatim-309">
+\newacronym{idn}{idn}{identification&#x00A0;number}
+</div>
+<!--l. 9223--><p class="nopar" > Now <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{idn}</span></span></span> will produce &#8220;identification number (<span
+class="cmcsc-10"><span
+class="small-caps">i</span><span
+class="small-caps">d</span><span
+class="small-caps">n</span></span>)&#8221; on <a
+href="#glo:firstuse">first use</a>&#x00A0;and &#8220;<span
+class="cmcsc-10"><span
+class="small-caps">i</span><span
+class="small-caps">d</span><span
+class="small-caps">n</span></span>&#8221; on
+subsequent uses. </p>
+<div class="center"
+>
+<!--l. 9227--><p class="noindent" >
+</p><!--l. 9227--><p class="noindent" >____________________________</p></div>
+<!--l. 9229--><p class="indent" > <div class="important" title="Important Note"> Avoid nested definitions. </div>
+</p><!--l. 9231--><p class="noindent" >
+</p><!--l. 9233--><p class="indent" > Recall from the warning in <a
+href="#sec:newglosentry"><span
+class="tcrm-1000">&sect;</span>4 </a><a
+href="#sec:newglosentry">Defining Glossary Entries<!--tex4ht:ref: sec:newglosentry --></a> that you should avoid using the
+<a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands within the value of keys like <span
+class="cmss-10">text</span><a
+ id="dx1-69043"></a> and <span
+class="cmss-10">first</span><a
+ id="dx1-69044"></a> due to
+complications arising from nested links. The same applies to abbreviations defined using
+<span
+class="cmtt-10">\newacronym</span>.
+</p><!--l. 9240--><p class="indent" > For example, suppose you have defined:
+
+
+</p>
+ <div class="verbatim" id="verbatim-310">
+\newacronym{ssi}{SSI}{server&#x00A0;side&#x00A0;includes}
+&#x00A0;<br />\newacronym{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+</div>
+<!--l. 9244--><p class="nopar" > you may be tempted to do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-311">
+\newacronym{shtml}{S\gls{html}}{\gls{ssi}&#x00A0;enabled&#x00A0;\gls{html}}
+</div>
+<!--l. 9248--><p class="nopar" > <span
+class="cmbx-10">Don&#8217;t! </span>This will break the case-changing commands, such as <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-69045"></a>, it will cause
+inconsistencies on <a
+href="#glo:firstuse">first use</a>, and, if hyperlinks are enabled, will cause nested hyperlinks. It will
+also confuse the commands used by the entry formatting (such as <span
+class="cmtt-10">\glslabel</span><a
+ id="dx1-69046"></a>).
+</p><!--l. 9255--><p class="indent" > Instead, consider doing:
+
+
+</p>
+ <div class="verbatim" id="verbatim-312">
+\newacronym
+&#x00A0;<br />&#x00A0;[description={\gls{ssi}&#x00A0;enabled&#x00A0;\gls{html}}]
+&#x00A0;<br />&#x00A0;{shtml}{SHTML}{SSI&#x00A0;enabled&#x00A0;HTML}
+</div>
+<!--l. 9260--><p class="nopar" > or
+
+
+</p>
+ <div class="verbatim" id="verbatim-313">
+\newacronym
+&#x00A0;<br />&#x00A0;[description={\gls{ssi}&#x00A0;enabled&#x00A0;\gls{html}}]
+&#x00A0;<br />&#x00A0;{shtml}{SHTML}
+&#x00A0;<br />&#x00A0;{server&#x00A0;side&#x00A0;includes&#x00A0;enabled&#x00A0;hypertext&#x00A0;markup&#x00A0;language}
+</div>
+<!--l. 9267--><p class="nopar" > Similarly for the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands.
+</p><!--l. 9270--><p class="indent" > Other approaches are available with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-69047"></a>. See the section &#8220;Nested Links&#8221; in the
+<span
+class="cmss-10">glossaries-extra </span>user manual.
+</p><!--l. 9274--><p class="indent" > <div class="important" title="Important Note"> The commands described below are similar to the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands in that they
+don&#8217;t modify the <a
+href="#glo:firstuseflag">first use flag</a>. However, their display is governed by <span
+class="cmtt-10">\defentryfmt</span><a
+ id="dx1-69048"></a> with
+<span
+class="cmtt-10">\glscustomtext</span><a
+ id="dx1-69049"></a> set as appropriate. All caveats that apply to the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands
+also apply to the following commands. (Including the warning immediately above this box.)
+</div>
+</p><!--l. 9281--><p class="noindent" >
+</p><!--l. 9283--><p class="indent" > The optional arguments are the same as those for the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands,
+and there are similar star and plus variants that switch off or on the hyperlinks.
+As with the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands, the <a
+href="#glo:linktext">link text<a
+ id="dx1-69050"></a></a> is placed in the argument of
+<span
+class="cmtt-10">\glstextformat</span><a
+ id="dx1-69051"></a>.
+</p><!--l. 9288--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69052"></a> <span
+class="cmtt-10">\acrshort[</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. 9290--><p class="noindent" >
+This sets the <a
+href="#glo:linktext">link text<a
+ id="dx1-69053"></a></a> to the short form (within the argument of <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-69054"></a>) for the entry
+given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. The short form is as supplied by the <span
+class="cmss-10">short</span><a
+ id="dx1-69055"></a> key, which <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-69056"></a> implicitly
+sets.
+</p><!--l. 9296--><p class="indent" > There are also analogous upper case variants:
+</p><!--l. 9297--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Acrshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69057"></a> <span
+class="cmtt-10">\Acrshort[</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. 9299--><p class="noindent" >
+</p><!--l. 9300--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ACRshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69058"></a> <span
+class="cmtt-10">\ACRshort[</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. 9302--><p class="noindent" >
+There are also plural versions:
+</p><!--l. 9304--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69059"></a> <span
+class="cmtt-10">\acrshortpl[</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. 9306--><p class="noindent" >
+</p><!--l. 9307--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Acrshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69060"></a> <span
+class="cmtt-10">\Acrshortpl[</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. 9309--><p class="noindent" >
+</p><!--l. 9310--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ACRshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69061"></a> <span
+class="cmtt-10">\ACRshortpl[</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. 9312--><p class="noindent" >
+The short plural form is as supplied by the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-69062"></a> key, which <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-69063"></a> implicitly
+sets.
+</p><!--l. 9316--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69064"></a> <span
+class="cmtt-10">\acrlong[</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. 9318--><p class="noindent" >
+This sets the <a
+href="#glo:linktext">link text<a
+ id="dx1-69065"></a></a> to the long form for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. The long form is as
+supplied by the <span
+class="cmss-10">long</span><a
+ id="dx1-69066"></a> key, which <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-69067"></a> implicitly sets.
+</p><!--l. 9323--><p class="indent" > There are also analogous upper case variants:
+</p><!--l. 9324--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Acrlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69068"></a> <span
+class="cmtt-10">\Acrlong[</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. 9326--><p class="noindent" >
+</p><!--l. 9327--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ACRlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69069"></a> <span
+class="cmtt-10">\ACRlong[</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. 9329--><p class="noindent" >
+Again there are also plural versions:
+</p><!--l. 9331--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69070"></a> <span
+class="cmtt-10">\acrlongpl[</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. 9333--><p class="noindent" >
+</p><!--l. 9334--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Acrlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69071"></a> <span
+class="cmtt-10">\Acrlongpl[</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. 9336--><p class="noindent" >
+</p><!--l. 9337--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ACRlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69072"></a> <span
+class="cmtt-10">\ACRlongpl[</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. 9339--><p class="noindent" >
+The long plural form is as supplied by the <span
+class="cmss-10">longplural</span><a
+ id="dx1-69073"></a> key, which <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-69074"></a> implicitly
+sets.
+</p><!--l. 9343--><p class="indent" > The commands below display the full form of the acronym, but note that this isn&#8217;t
+necessarily the same as the form used on <a
+href="#glo:firstuse">first use</a>. These full-form commands are shortcuts
+that use the above commands, rather than creating the <a
+href="#glo:linktext">link text<a
+ id="dx1-69075"></a></a> from the complete full form.
+These full-form commands have star and plus variants and optional arguments that are
+passed to the above commands.
+</p><!--l. 9350--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69076"></a> <span
+class="cmtt-10">\acrfull[</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. 9352--><p class="noindent" >
+This is a shortcut for
+</p><!--l. 9354--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrfullfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69077"></a> <span
+class="cmtt-10">\acrfullfmt{</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. 9356--><p class="noindent" >
+which by default does </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\acrfullformat</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\acrlong[</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><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\acrshort[</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>
+</div>
+</div> where
+<!--l. 9364--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69078"></a> <span
+class="cmtt-10">\acrfullformat{</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></div><hr>
+</p><!--l. 9366--><p class="noindent" >
+by default does &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;). This command is now deprecated for new acronym styles but is
+used by the default for backward compatibility if <span
+class="cmtt-10">\setacronymstyle </span>(<a
+href="#sec:setacronymstyle"><span
+class="tcrm-1000">&sect;</span>13.1 </a><a
+href="#sec:setacronymstyle">Changing the
+Abbreviation Style<!--tex4ht:ref: sec:setacronymstyle --></a>) hasn&#8217;t been used. (For further details of these format commands see the
+documented code, <span
+class="cmtt-10">glossaries-code.pdf</span>.)
+</p><!--l. 9375--><p class="indent" > There are also analogous upper case variants:
+</p><!--l. 9376--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Acrfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69079"></a> <span
+class="cmtt-10">\Acrfull[</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. 9378--><p class="noindent" >
+</p><!--l. 9379--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ACRfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69080"></a> <span
+class="cmtt-10">\ACRfull[</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. 9381--><p class="noindent" >
+and plural versions:
+</p><!--l. 9383--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acrfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69081"></a> <span
+class="cmtt-10">\acrfullpl[</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. 9385--><p class="noindent" >
+</p><!--l. 9386--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Acrfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69082"></a> <span
+class="cmtt-10">\Acrfullpl[</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. 9388--><p class="noindent" >
+</p><!--l. 9389--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ACRfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69083"></a> <span
+class="cmtt-10">\ACRfullpl[</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. 9391--><p class="noindent" >
+</p><!--l. 9393--><p class="indent" > If you find the above commands too cumbersome to write, you can use the <span
+class="cmss-10">shortcuts</span><a
+ id="dx1-69084"></a>
+package option to activate the shorter command names listed in <a
+href="#tab:shortcuts">table&#x00A0;13.1</a>.
+</p>
+ <div class="table">
+
+
+<!--l. 9397--><p class="indent" > <a
+ id="tab:shortcuts"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;13.1: </span><span
+class="content">Synonyms provided by the package option <span
+class="cmss-10">shortcuts</span></span></div><!--tex4ht:label?: x1-690851 -->
+<div class="tabular"> <table id="TBL-7" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-7-1g"><col
+id="TBL-7-1" /><col
+id="TBL-7-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-7-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-1"
+class="td11"> <span
+class="cmbx-10">Shortcut Command </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-7-1-2"
+class="td11"> <span
+class="cmbx-10">Equivalent Command </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-1"
+class="td11"> <span
+class="cmtt-10">\acs</span><a
+ id="dx1-69086"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-2-2"
+class="td11"> <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-69087"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-1"
+class="td11"> <span
+class="cmtt-10">\Acs</span><a
+ id="dx1-69088"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-3-2"
+class="td11"> <span
+class="cmtt-10">\Acrshort</span><a
+ id="dx1-69089"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-1"
+class="td11"> <span
+class="cmtt-10">\acsp</span><a
+ id="dx1-69090"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-4-2"
+class="td11"> <span
+class="cmtt-10">\acrshortpl</span><a
+ id="dx1-69091"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-1"
+class="td11"> <span
+class="cmtt-10">\Acsp</span><a
+ id="dx1-69092"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-5-2"
+class="td11"> <span
+class="cmtt-10">\Acrshortpl</span><a
+ id="dx1-69093"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-1"
+class="td11"> <span
+class="cmtt-10">\acl</span><a
+ id="dx1-69094"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-6-2"
+class="td11"> <span
+class="cmtt-10">\acrlong</span><a
+ id="dx1-69095"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-1"
+class="td11"> <span
+class="cmtt-10">\Acl</span><a
+ id="dx1-69096"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-7-2"
+class="td11"> <span
+class="cmtt-10">\Acrlong</span><a
+ id="dx1-69097"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-1"
+class="td11"> <span
+class="cmtt-10">\aclp</span><a
+ id="dx1-69098"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-8-2"
+class="td11"> <span
+class="cmtt-10">\acrlongpl</span><a
+ id="dx1-69099"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-9-1"
+class="td11"> <span
+class="cmtt-10">\Aclp</span><a
+ id="dx1-69100"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-9-2"
+class="td11"> <span
+class="cmtt-10">\Acrlongpl</span><a
+ id="dx1-69101"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-10-1"
+class="td11"> <span
+class="cmtt-10">\acf</span><a
+ id="dx1-69102"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-10-2"
+class="td11"> <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-69103"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-11-1"
+class="td11"> <span
+class="cmtt-10">\Acf</span><a
+ id="dx1-69104"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-11-2"
+class="td11"> <span
+class="cmtt-10">\Acrfull</span><a
+ id="dx1-69105"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-12-1"
+class="td11"> <span
+class="cmtt-10">\acfp</span><a
+ id="dx1-69106"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-12-2"
+class="td11"> <span
+class="cmtt-10">\acrfullpl</span><a
+ id="dx1-69107"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-13-1"
+class="td11"> <span
+class="cmtt-10">\Acfp</span><a
+ id="dx1-69108"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-13-2"
+class="td11"> <span
+class="cmtt-10">\Acrfullpl</span><a
+ id="dx1-69109"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-14-1"
+class="td11"> <span
+class="cmtt-10">\ac</span><a
+ id="dx1-69110"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-14-2"
+class="td11"> <span
+class="cmtt-10">\gls</span><a
+ id="dx1-69111"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-15-1"
+class="td11"> <span
+class="cmtt-10">\Ac</span><a
+ id="dx1-69112"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-15-2"
+class="td11"> <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-69113"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-16-1"
+class="td11"> <span
+class="cmtt-10">\acp</span><a
+ id="dx1-69114"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-16-2"
+class="td11"> <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-69115"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-7-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-7-17-1"
+class="td11"> <span
+class="cmtt-10">\Acp</span><a
+ id="dx1-69116"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-7-17-2"
+class="td11"> <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-69117"></a> </td></tr></table>
+</div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 9423--><p class="indent" > It is also possible to access the long and short forms without adding information to the
+glossary using commands analogous to <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-69118"></a> (described in <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using Glossary Terms
+Without Links<!--tex4ht:ref: sec:glsnolink --></a>).
+</p><!--l. 9427--><p class="indent" > <div class="important" title="Important Note"> The commands that convert the first letter to upper case come with the same caveats as
+those for analogous commands like <span
+class="cmtt-10">\Glsentrytext</span><a
+ id="dx1-69119"></a> (non-expandable, can&#8217;t be used in PDF
+bookmarks, care needs to be taken if the first letter is an accented character etc). See <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9
+</a><a
+href="#sec:glsnolink">Using Glossary Terms Without Links<!--tex4ht:ref: sec:glsnolink --></a>. </div>
+</p><!--l. 9433--><p class="noindent" >
+</p><!--l. 9435--><p class="indent" > The long form can be accessed using:
+</p><!--l. 9436--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrylong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69120"></a> <span
+class="cmtt-10">\glsentrylong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9438--><p class="noindent" >
+or, with the first letter converted to upper case:
+</p><!--l. 9440--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrylong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69121"></a> <span
+class="cmtt-10">\Glsentrylong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9442--><p class="noindent" >
+Plural forms:
+</p><!--l. 9444--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrylongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69122"></a> <span
+class="cmtt-10">\glsentrylongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9446--><p class="noindent" >
+</p><!--l. 9447--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentrylongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69123"></a> <span
+class="cmtt-10">\Glsentrylongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9449--><p class="noindent" >
+</p><!--l. 9451--><p class="indent" > Similarly, to access the short form:
+</p><!--l. 9452--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69124"></a> <span
+class="cmtt-10">\glsentryshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9454--><p class="noindent" >
+or, with the first letter converted to upper case:
+</p><!--l. 9456--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69125"></a> <span
+class="cmtt-10">\Glsentryshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9458--><p class="noindent" >
+Plural forms:
+</p><!--l. 9460--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69126"></a> <span
+class="cmtt-10">\glsentryshortpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9462--><p class="noindent" >
+</p><!--l. 9463--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69127"></a> <span
+class="cmtt-10">\Glsentryshortpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9465--><p class="noindent" >
+</p><!--l. 9467--><p class="indent" > And the full form can be obtained using:
+</p><!--l. 9468--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69128"></a> <span
+class="cmtt-10">\glsentryfull{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9470--><p class="noindent" >
+</p><!--l. 9471--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69129"></a> <span
+class="cmtt-10">\Glsentryfull{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9473--><p class="noindent" >
+</p><!--l. 9474--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69130"></a> <span
+class="cmtt-10">\glsentryfullpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+</p><!--l. 9476--><p class="noindent" >
+</p><!--l. 9477--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-69131"></a> <span
+class="cmtt-10">\Glsentryfullpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9479--><p class="noindent" >
+These again use <span
+class="cmtt-10">\acrfullformat</span><a
+ id="dx1-69132"></a> by default, but the new styles described in the section
+below use different formatting commands.
+</p>
+<!--l. 9484--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">13.1 </span> <a
+ id="sec:setacronymstyle"></a>Changing the Abbreviation Style</h3>
+<!--l. 9487--><p class="noindent" >It may be that the default style doesn&#8217;t suit your requirements in which case you can switch
+to another style using
+</p><!--l. 9489--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setacronymstyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-70001"></a> <span
+class="cmtt-10">\setacronymstyle{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9491--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">style name</span>&#x27E9; is the name of the required style.
+</p><!--l. 9494--><p class="indent" > <div class="important" title="Important Note"> You must use <span
+class="cmtt-10">\setacronymstyle </span><span
+class="cmti-10">before </span>you define the acronyms with <span
+class="cmtt-10">\newacronym</span>.
+</div>
+</p><!--l. 9497--><p class="noindent" >
+</p><!--l. 9499--><p class="indent" > For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-314">
+\usepackage[acronym]{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\setacronymstyle{long-sc-short}
+&#x00A0;<br />\newacronym{html}{html}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newacronym{xml}{xml}{extensible&#x00A0;markup&#x00A0;language}
+</div>
+<!--l. 9509--><p class="nopar" > Unpredictable results can occur if you try to use multiple styles.
+</p><!--l. 9512--><p class="indent" > <div class="important" title="Important Note"> If you need multiple abbreviation styles, then try using the <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package, which
+has better abbreviation management. </div>
+</p><!--l. 9516--><p class="noindent" >
+</p><!--l. 9518--><p class="indent" > Note that unlike the default behaviour of <span
+class="cmtt-10">\newacronym</span>, the styles used via
+<span
+class="cmtt-10">\setacronymstyle </span>don&#8217;t use the <span
+class="cmss-10">first</span><a
+ id="dx1-70002"></a> or <span
+class="cmss-10">text</span><a
+ id="dx1-70003"></a> keys, but instead they use <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-70004"></a> to
+set a&#x00A0;custom format that uses the <span
+class="cmss-10">long</span><a
+ id="dx1-70005"></a> and <span
+class="cmss-10">short</span><a
+ id="dx1-70006"></a> keys (or their plural equivalents). This
+means that these styles cope better with plurals that aren&#8217;t formed by simply appending the
+singular form with the letter &#8220;s&#8221;. In fact, most of the predefined styles use <span
+class="cmtt-10">\glsgenacfmt</span><a
+ id="dx1-70007"></a> and
+modify the definitions of commands like <span
+class="cmtt-10">\genacrfullformat</span><a
+ id="dx1-70008"></a>.
+</p><!--l. 9528--><p class="indent" > Note that when you use <span
+class="cmtt-10">\setacronymstyle </span>the <span
+class="cmss-10">name</span><a
+ id="dx1-70009"></a> key is set to
+</p><!--l. 9530--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acronymentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-70010"></a> <span
+class="cmtt-10">\acronymentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9532--><p class="noindent" >
+and the <span
+class="cmss-10">sort</span><a
+ id="dx1-70011"></a> key is set to
+</p><!--l. 9534--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acronymsort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-70012"></a> <span
+class="cmtt-10">\acronymsort{</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. 9536--><p class="noindent" >
+These commands are redefined by the acronym styles. However, you can redefine them again
+after the style has been set but before you use <span
+class="cmtt-10">\newacronym</span>. Protected expansion is
+performed on <span
+class="cmtt-10">\acronymsort </span>when the entry is defined.
+</p><!--l. 9542--><p class="noindent" >
+</p>
+<!--l. 9542--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">13.1.1 </span> <a
+ id="sec:predefinedacrstyles"></a>Predefined Acronym Styles</h4>
+<!--l. 9545--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>package provides a&#x00A0;number of predefined styles. These styles apply
+</p><!--l. 9547--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\firstacronymfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-71001"></a> <span
+class="cmtt-10">\firstacronymfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9549--><p class="noindent" >
+to the short form on first use and
+</p><!--l. 9551--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\acronymfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-71002"></a> <span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9553--><p class="noindent" >
+on subsequent use. The styles modify the definition of <span
+class="cmtt-10">\acronymfont </span>as required, but
+<span
+class="cmtt-10">\firstacronymfont</span><a
+ id="dx1-71003"></a> is only set once by the package when it&#8217;s loaded. By default
+
+
+<span
+class="cmtt-10">\firstacronymfont</span><a
+ id="dx1-71004"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>is the same as <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-71005"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>. If you want the short form
+displayed differently on first use, you can redefine <span
+class="cmtt-10">\firstacronymfont</span><a
+ id="dx1-71006"></a> independently of the
+acronym style.
+</p><!--l. 9563--><p class="indent" > The predefined styles that contain <span
+class="cmtt-10">sc </span>in their name (for example <span
+class="cmss-10">long-sc-short</span><a
+ id="dx1-71007"></a>) redefine
+<span
+class="cmtt-10">\acronymfont </span>to use <span
+class="cmtt-10">\textsc</span><a
+ id="dx1-71008"></a>, which means that the short form needs to be specified in lower
+case.
+</p><!--l. 9569--><p class="indent" > <a
+ id="boldsc"></a>
+</p><!--l. 9570--><p class="indent" > <div class="important" title="Important Note">Some fonts don&#8217;t support bold smallcaps, so you may need to redefine <span
+class="cmtt-10">\glsnamefont</span><a
+ id="dx1-71009"></a> (see
+<a
+href="#sec:printglossary"><span
+class="tcrm-1000">&sect;</span>10 </a><a
+href="#sec:printglossary">Displaying a glossary<!--tex4ht:ref: sec:printglossary --></a>) to switch to medium weight if you are using a glossary style that
+displays entry names in bold and you have chosen an acronym style that uses <span
+class="cmtt-10">\textsc</span><a
+ id="dx1-71010"></a>.
+</div>
+</p><!--l. 9576--><p class="noindent" >
+</p><!--l. 9578--><p class="indent" > The predefined styles that contain <span
+class="cmtt-10">sm </span>in their name (for example <span
+class="cmss-10">long-sm-short</span><a
+ id="dx1-71011"></a>) redefine
+<span
+class="cmtt-10">\acronymfont </span>to use <span
+class="cmtt-10">\textsmaller</span><a
+ id="dx1-71012"></a>.
+</p><!--l. 9582--><p class="indent" > <a
+ id="smaller"></a>
+</p><!--l. 9583--><p class="indent" > <div class="important" title="Important Note"> Note that the <span
+class="cmss-10">glossaries </span>package doesn&#8217;t define or load any package that defines
+<span
+class="cmtt-10">\textsmaller</span><a
+ id="dx1-71013"></a>. If you use one of the acronym styles that set <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-71014"></a> to <span
+class="cmtt-10">\textsmaller</span>
+you must explicitly load the <span
+class="cmss-10">relsize</span><a
+ id="dx1-71015"></a> package or otherwise define <span
+class="cmtt-10">\textsmaller</span>. </div>
+</p><!--l. 9589--><p class="noindent" >
+</p><!--l. 9591--><p class="indent" > The remaining predefined styles redefine <span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>to simply do its argument
+&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;.
+</p><!--l. 9594--><p class="indent" > <div class="important" title="Important Note"> In most cases, the predefined styles adjust <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-71016"></a> and <span
+class="cmtt-10">\glsentryfull</span><a
+ id="dx1-71017"></a> (and their
+plural and upper case variants) to reflect the style. The only exceptions to this are the <span
+class="cmss-10">dua</span><a
+ id="dx1-71018"></a>
+and <span
+class="cmss-10">footnote</span><a
+ id="dx1-71019"></a> styles (and their variants). </div>
+</p><!--l. 9599--><p class="noindent" >
+</p><!--l. 9601--><p class="indent" > The following styles are supplied by the <span
+class="cmss-10">glossaries </span>package: </p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmss-10">long-short</span><a
+ id="dx1-71020"></a>, <span
+class="cmss-10">long-sc-short</span><a
+ id="dx1-71021"></a>, <span
+class="cmss-10">long-sm-short</span><a
+ id="dx1-71022"></a>, <span
+class="cmss-10">long-sp-short</span><a
+ id="dx1-71023"></a>:
+ <!--l. 9607--><p class="noindent" >With these three styles, acronyms are displayed in the form
+ </p><!--l. 9609--><p class="noindent" ><hr><div title="Definition">&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9; <span
+class="cmtt-10">(\firstacronymfont</span><a
+ id="dx1-71024"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}) </span></div><hr>
+ </p><!--l. 9610--><p class="noindent" >
+ on first use and
+ </p><!--l. 9613--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-71025"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 9614--><p class="noindent" >
+ on subsequent use. They also set <span
+class="cmtt-10">\acronymsort{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span>to just &#x27E8;<span
+class="cmti-10">short</span>&#x27E9;. This means
+ that the acronyms are sorted according to their short form. In addition, <span
+class="cmtt-10">\acronymentry</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>is set to just the short form (enclosed in <span
+class="cmtt-10">\acronymfont</span>) and the <span
+class="cmss-10">description</span><a
+ id="dx1-71026"></a> key
+ is set to the long form.
+ </p><!--l. 9622--><p class="noindent" >The <span
+class="cmss-10">long-sp-short</span><a
+ id="dx1-71027"></a> style was introduced in version&#x00A0;4.16 and uses
+ </p><!--l. 9624--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsacspace</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-71028"></a> <span
+class="cmtt-10">\glsacspace{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+ </p><!--l. 9626--><p class="noindent" >
+ for the space between the long and short forms. This defaults to a&#x00A0;non-breakable space
+ (<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">~</span></span></span>) if (<span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>) is less than 3em, otherwise it uses a&#x00A0;normal space. This
+ may be redefined as required. For example, to always use a&#x00A0;non-breakable
+ space:
+
+
+</p>
+ <div class="verbatim" id="verbatim-315">
+ \renewcommand*{\glsacspace}[1]{~}
+</div>
+ <!--l. 9634--><p class="nopar" >
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">short-long</span><a
+ id="dx1-71029"></a>, <span
+class="cmss-10">sc-short-long</span><a
+ id="dx1-71030"></a>, <span
+class="cmss-10">sm-short-long</span><a
+ id="dx1-71031"></a>:
+ <!--l. 9639--><p class="noindent" >These three styles are analogous to the above three styles, except the display order is
+ swapped to
+ </p><!--l. 9642--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\firstacronymfont</span><a
+ id="dx1-71032"></a><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. 9643--><p class="noindent" >
+ on first use.
+ </p><!--l. 9646--><p class="noindent" >Note, however, that <span
+class="cmtt-10">\acronymsort</span><a
+ id="dx1-71033"></a> and <span
+class="cmtt-10">\acronymentry</span><a
+ id="dx1-71034"></a> are the same as for the &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;
+ (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;) styles above, so the acronyms are still sorted according to the short
+ form.
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">long-short-desc</span><a
+ id="dx1-71035"></a>, <span
+class="cmss-10">long-sc-short-desc</span><a
+ id="dx1-71036"></a>, <span
+class="cmss-10">long-sm-short-desc</span><a
+ id="dx1-71037"></a>, <span
+class="cmss-10">long-sp-short-desc</span><a
+ id="dx1-71038"></a>:
+ <!--l. 9653--><p class="noindent" >These are like the <span
+class="cmss-10">long-short</span><a
+ id="dx1-71039"></a>, <span
+class="cmss-10">long-sc-short</span><a
+ id="dx1-71040"></a>, <span
+class="cmss-10">long-sm-short</span><a
+ id="dx1-71041"></a> and <span
+class="cmss-10">long-sp-short</span><a
+ id="dx1-71042"></a> styles
+ described above, except that the <span
+class="cmss-10">description</span><a
+ id="dx1-71043"></a> key must be supplied in the optional
+ argument of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-71044"></a>. They also redefine <span
+class="cmtt-10">\acronymentry</span><a
+ id="dx1-71045"></a> to <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span>(<span
+class="cmtt-10">\acronymfont</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>) and redefine <span
+class="cmtt-10">\acronymsort</span><a
+ id="dx1-71046"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span>to just &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;. This means that the
+ acronyms are sorted according to the long form, and in the list of acronyms the name
+ field has the long form followed by the short form in parentheses. I&#x00A0;recommend you use
+ a&#x00A0;glossary style such as <span
+class="cmss-10">altlist</span><a
+ id="dx1-71047"></a> with these acronym styles to allow for the long name
+ field.
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">short-long-desc</span><a
+ id="dx1-71048"></a>, <span
+class="cmss-10">sc-short-long-desc</span><a
+ id="dx1-71049"></a>, <span
+class="cmss-10">sm-short-long-desc</span><a
+ id="dx1-71050"></a>:
+ <!--l. 9668--><p class="noindent" >These styles are analogous to the above three styles, but the first use display style
+ is:
+ </p><!--l. 9671--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\firstacronymfont{</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. 9672--><p class="noindent" >
+ The definitions of <span
+class="cmtt-10">\acronymsort </span>and <span
+class="cmtt-10">\acronymentry </span>are the same as those for
+ <span
+class="cmss-10">long-short-desc</span><a
+ id="dx1-71051"></a> etc.
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">dua</span><a
+ id="dx1-71052"></a>, <span
+class="cmss-10">dua-desc</span><a
+ id="dx1-71053"></a>:
+
+
+ <!--l. 9678--><p class="noindent" >With these styles, the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands always display the long form regardless of
+ whether the entry has been used or not. However, <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-71054"></a> and <span
+class="cmtt-10">\glsentryfull</span><a
+ id="dx1-71055"></a> will
+ display &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (<span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>). In the case of <span
+class="cmss-10">dua</span><a
+ id="dx1-71056"></a>, the <span
+class="cmss-10">name</span><a
+ id="dx1-71057"></a> and <span
+class="cmss-10">sort</span><a
+ id="dx1-71058"></a> keys are set
+ to the short form and the description is set to the long form. In the case of <span
+class="cmss-10">dua-desc</span><a
+ id="dx1-71059"></a>, the
+ <span
+class="cmss-10">name</span><a
+ id="dx1-71060"></a> and <span
+class="cmss-10">sort</span><a
+ id="dx1-71061"></a> keys are set to the long form and the description is supplied in the
+ optional argument of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-71062"></a>.
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">footnote</span><a
+ id="dx1-71063"></a>, <span
+class="cmss-10">footnote-sc</span><a
+ id="dx1-71064"></a>, <span
+class="cmss-10">footnote-sm</span><a
+ id="dx1-71065"></a>:
+ <!--l. 9690--><p class="noindent" >With these three styles, on first use the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands display:
+ </p><!--l. 9692--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\firstacronymfont{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}\footnote</span><a
+ id="dx1-71066"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 9693--><p class="noindent" >
+ However, <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-71067"></a> and <span
+class="cmtt-10">\glsentryfull</span><a
+ id="dx1-71068"></a> are set to <span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">} </span>(&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;). On
+ subsequent use the display is:
+ </p><!--l. 9697--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 9698--><p class="noindent" >
+ The <span
+class="cmss-10">sort</span><a
+ id="dx1-71069"></a> and <span
+class="cmss-10">name</span><a
+ id="dx1-71070"></a> keys are set to the short form, and the <span
+class="cmss-10">description</span><a
+ id="dx1-71071"></a> is set to the long
+ form.
+ </p><!--l. 9703--><p class="noindent" ><div class="important" title="Important Note"> In order to avoid nested hyperlinks on <a
+href="#glo:firstuse">first use</a>&#x00A0;the footnote styles automatically
+ implement <span
+class="cmss-10">hyperfirst=false</span><a
+ id="dx1-71072"></a> for the acronym lists. </div>
+ </p><!--l. 9707--><p class="noindent" >
+ </p></li>
+ <li class="itemize"><span
+class="cmss-10">footnote-desc</span><a
+ id="dx1-71073"></a>, <span
+class="cmss-10">footnote-sc-desc</span><a
+ id="dx1-71074"></a>, <span
+class="cmss-10">footnote-sm-desc</span><a
+ id="dx1-71075"></a>:
+ <!--l. 9712--><p class="noindent" >These three styles are similar to the previous three styles, but the description
+ has to be supplied in the optional argument of <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-71076"></a>. The <span
+class="cmss-10">name</span><a
+ id="dx1-71077"></a> key
+ is set to the long form followed by the short form in parentheses and the
+ <span
+class="cmss-10">sort</span><a
+ id="dx1-71078"></a> key is set to the long form. This means that the acronyms will be sorted
+ according to the long form. In addition, since the <span
+class="cmss-10">name</span><a
+ id="dx1-71079"></a> will typically be quite
+ wide it&#8217;s best to choose a glossary style that can accommodate this, such as
+ <span
+class="cmss-10">altlist</span><a
+ id="dx1-71080"></a>.
+</p>
+ </li></ul>
+<a
+ id="x1-71081r22"></a>
+<!--l. 9723--><p class="noindent" ><span
+class="cmbx-12">Example 22</span><span
+class="cmbx-12">&#x00A0;(Adapting a Predefined Acronym Style)</span><a
+ id="x1-71082"></a>
+</p><!--l. 9724--><p class="indent" > Suppose I&#x00A0;want to use the <span
+class="cmss-10">footnote-sc-desc</span><a
+ id="dx1-71083"></a> style, but I&#x00A0;want the <span
+class="cmss-10">name</span><a
+ id="dx1-71084"></a> key set to the short
+form followed by the long form in parentheses and the <span
+class="cmss-10">sort</span><a
+ id="dx1-71085"></a> key set to the short form. Then I
+need to specify the <span
+class="cmss-10">footnote-sc-desc</span><a
+ id="dx1-71086"></a> style:
+
+
+</p>
+ <div class="verbatim" id="verbatim-316">
+\setacronymstyle{footnote-sc-desc}
+</div>
+<!--l. 9730--><p class="nopar" > and then redefine <span
+class="cmtt-10">\acronymsort</span><a
+ id="dx1-71087"></a> and <span
+class="cmtt-10">\acronymentry</span><a
+ id="dx1-71088"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-317">
+\renewcommand*{\acronymsort}[2]{#1}%&#x00A0;sort&#x00A0;by&#x00A0;short&#x00A0;form
+&#x00A0;<br />\renewcommand*{\acronymentry}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\acronymfont{\glsentryshort{#1}}\space&#x00A0;(\glsentrylong{#1})}%
+</div>
+<!--l. 9736--><p class="nopar" > (I&#8217;ve used <span
+class="cmtt-10">\space </span>for extra clarity, but you can just use an actual space instead.)
+</p><!--l. 9740--><p class="indent" > Since the default Computer Modern fonts don&#8217;t support bold smallcaps, I&#8217;m also going to
+redefine <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-71089"></a> so that it always switches to medium weight to ensure the smallcaps
+setting is used:
+
+
+</p>
+ <div class="verbatim" id="verbatim-318">
+\renewcommand*{\acronymfont}[1]{\textmd{\scshape&#x00A0;#1}}
+</div>
+<!--l. 9746--><p class="nopar" > This isn&#8217;t necessary if you use a font that supports bold smallcaps.
+</p><!--l. 9749--><p class="indent" > The sample file <a
+href="#x1-11026r9"><span
+class="cmtt-10">sampleFnAcrDesc.tex</span></a> illustrates this example. </p>
+<div class="center"
+>
+<!--l. 9751--><p class="noindent" >
+</p><!--l. 9751--><p class="noindent" >____________________________</p></div>
+<!--l. 9753--><p class="noindent" >
+</p>
+<!--l. 9753--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">13.1.2 </span> <a
+ id="sec:customacronym"></a>Defining A Custom Acronym Style</h4>
+<!--l. 9756--><p class="noindent" >You may find that the predefined acronyms styles that come with the <span
+class="cmss-10">glossaries</span>
+package don&#8217;t suit your requirements. In this case you can define your own style
+using:
+</p><!--l. 9759--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newacronymstyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72001"></a> <span
+class="cmtt-10">\newacronymstyle{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">display</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">definitions</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 9761--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">style name</span>&#x27E9; is the name of the new style (avoid active characters). The second
+argument, &#x27E8;<span
+class="cmti-10">display</span>&#x27E9;, is equivalent to the mandatory argument of <span
+class="cmtt-10">\defglsentryfmt</span><a
+ id="dx1-72002"></a>. You can
+simply use <span
+class="cmtt-10">\glsgenacfmt</span><a
+ id="dx1-72003"></a> or you can customize the display using commands like
+<span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-72004"></a>, <span
+class="cmtt-10">\glsifplural</span><a
+ id="dx1-72005"></a> and <span
+class="cmtt-10">\glscapscase</span><a
+ id="dx1-72006"></a>. (See <a
+href="#sec:glsdisplay"><span
+class="tcrm-1000">&sect;</span>6.3 </a><a
+href="#sec:glsdisplay">Changing the format
+of the link text<!--tex4ht:ref: sec:glsdisplay --></a> for further details.) If the style is likely to be used with a mixed
+glossary (that is entries in that glossary are defined both with <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-72007"></a> and
+<span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-72008"></a>) then you can test if the entry is an acronym and use <span
+class="cmtt-10">\glsgenacfmt</span><a
+ id="dx1-72009"></a> if it
+is or <span
+class="cmtt-10">\glsgenentryfmt</span><a
+ id="dx1-72010"></a> if it isn&#8217;t. For example, the <span
+class="cmss-10">long-short</span><a
+ id="dx1-72011"></a> style sets &#x27E8;<span
+class="cmti-10">display</span>&#x27E9;
+as
+
+
+</p>
+ <div class="verbatim" id="verbatim-319">
+\ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+</div>
+<!--l. 9776--><p class="nopar" > (You can use <span
+class="cmtt-10">\ifglshasshort</span><a
+ id="dx1-72012"></a> instead of <span
+class="cmtt-10">\ifglshaslong</span><a
+ id="dx1-72013"></a> to test if the entry is an acronym if
+you prefer.)
+</p><!--l. 9780--><p class="indent" > The third argument, &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9;, can be used to redefine the commands that affect the
+display style, such as <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-72014"></a> or, if &#x27E8;<span
+class="cmti-10">display</span>&#x27E9; uses <span
+class="cmtt-10">\glsgenacfmt</span>, <span
+class="cmtt-10">\genacrfullformat</span><a
+ id="dx1-72015"></a>
+and its variants.
+</p><!--l. 9785--><p class="indent" > Note that <span
+class="cmtt-10">\setacronymstyle</span><a
+ id="dx1-72016"></a> redefines <span
+class="cmtt-10">\glsentryfull</span><a
+ id="dx1-72017"></a> and <span
+class="cmtt-10">\acrfullfmt</span><a
+ id="dx1-72018"></a> to use
+<span
+class="cmtt-10">\genacrfullformat</span><a
+ id="dx1-72019"></a> (and similarly for the plural and upper case variants). If this isn&#8217;t
+appropriate for the style (as in the case of styles like <span
+class="cmss-10">footnote</span><a
+ id="dx1-72020"></a> and <span
+class="cmss-10">dua</span><a
+ id="dx1-72021"></a>) <span
+class="cmtt-10">\newacronymstyle</span>
+should redefine these commands within &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9;.
+</p><!--l. 9793--><p class="indent" > Within <span
+class="cmtt-10">\newacronymstyle</span>&#8217;s &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9; argument you can also redefine
+</p><!--l. 9795--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GenericAcronymFields</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72022"></a> <span
+class="cmtt-10">\GenericAcronymFields </span></div><hr>
+</p><!--l. 9797--><p class="noindent" >
+This is a list of additional fields to be set in <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-72023"></a>. You can use the following token
+registers to access the entry label, long form and short form: <span class="marginpar"><span
+class="cmtt-9">\glslabeltok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72024"></a><span
+class="cmtt-10">\glslabeltok</span>,
+<span class="marginpar"><span
+class="cmtt-9">\glslongtok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72025"></a><span
+class="cmtt-10">\glslongtok </span>and <span class="marginpar"><span
+class="cmtt-9">\glsshorttok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72026"></a><span
+class="cmtt-10">\glsshorttok</span>. As with all <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;registers, you
+can access their values by preceding the register with <span
+class="cmtt-10">\the</span><a
+ id="dx1-72027"></a>. For example, the <span
+class="cmss-10">long-short</span><a
+ id="dx1-72028"></a> style
+does:
+
+
+</p>
+ <div class="verbatim" id="verbatim-320">
+\renewcommand*{\GenericAcronymFields}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={\the\glslongtok}}%
+</div>
+<!--l. 9808--><p class="nopar" > which sets the <span
+class="cmss-10">description</span><a
+ id="dx1-72029"></a> field to the long form of the acronym whereas the <span
+class="cmss-10">long-short-desc</span><a
+ id="dx1-72030"></a>
+style does:
+
+
+</p>
+ <div class="verbatim" id="verbatim-321">
+\renewcommand*{\GenericAcronymFields}{}%
+</div>
+<!--l. 9813--><p class="nopar" > since the description needs to be specified by the user.
+</p><!--l. 9816--><p class="indent" > It may be that you want to define a new acronym style that&#8217;s based on an existing style.
+Within &#x27E8;<span
+class="cmti-10">display</span>&#x27E9; you can use
+</p><!--l. 9818--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsUseAcrEntryDispStyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72031"></a> <span
+class="cmtt-10">\GlsUseAcrEntryDispStyle{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9820--><p class="noindent" >
+to use the &#x27E8;<span
+class="cmti-10">display</span>&#x27E9; definition from the style given by &#x27E8;<span
+class="cmti-10">style name</span>&#x27E9;. Within &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9; you can
+use
+</p><!--l. 9823--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsUseAcrStyleDefs</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72032"></a> <span
+class="cmtt-10">\GlsUseAcrStyleDefs{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9825--><p class="noindent" >
+to use the &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9; from the style given by &#x27E8;<span
+class="cmti-10">style name</span>&#x27E9;. For example, the <span
+class="cmss-10">long-sc-short</span><a
+ id="dx1-72033"></a>
+acronym style is based on the <span
+class="cmss-10">long-short</span><a
+ id="dx1-72034"></a> style with minor modifications (remember to use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">##</span></span></span>
+instead of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">#</span></span></span> within &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9;):
+
+
+</p>
+ <div class="verbatim" id="verbatim-322">
+\newacronymstyle{long-sc-short}%
+&#x00A0;<br />{%&#x00A0;use&#x00A0;the&#x00A0;same&#x00A0;display&#x00A0;as&#x00A0;"long-short"
+&#x00A0;<br />&#x00A0;&#x00A0;\GlsUseAcrEntryDispStyle{long-short}%
+&#x00A0;<br />}%
+&#x00A0;<br />{%&#x00A0;use&#x00A0;the&#x00A0;same&#x00A0;definitions&#x00A0;as&#x00A0;"long-short"
+&#x00A0;<br />&#x00A0;&#x00A0;\GlsUseAcrStyleDefs{long-short}%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Minor&#x00A0;modifications:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand{\acronymfont}[1]{\textsc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+&#x00A0;<br />}
+</div>
+<!--l. 9842--><p class="nopar" > (<span class="marginpar"><span
+class="cmtt-9">\glstextup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-72035"></a><span
+class="cmtt-10">\glstextup </span>is used to cancel the effect of <span
+class="cmtt-10">\textsc</span><a
+ id="dx1-72036"></a>. This defaults to <span
+class="cmtt-10">\textulc</span><a
+ id="dx1-72037"></a>,
+if defined, otherwise <span
+class="cmtt-10">\textup</span><a
+ id="dx1-72038"></a>. For example, the plural of <span
+class="cmcsc-10"><span
+class="small-caps">s</span><span
+class="small-caps">v</span><span
+class="small-caps">m</span> </span>should be rendered as <span
+class="cmcsc-10"><span
+class="small-caps">s</span><span
+class="small-caps">v</span><span
+class="small-caps">m</span></span>s
+rather than <span
+class="cmcsc-10"><span
+class="small-caps">s</span><span
+class="small-caps">v</span><span
+class="small-caps">m</span><span
+class="small-caps">s</span></span>.)
+<a
+ id="x1-72039r23"></a>
+</p><!--l. 9848--><p class="noindent" ><span
+class="cmbx-12">Example 23</span><span
+class="cmbx-12">&#x00A0;(Defining a Custom Acronym Style)</span><a
+ id="x1-72040"></a>
+</p><!--l. 9849--><p class="indent" > Suppose I want my acronym on <a
+href="#glo:firstuse">first use</a>&#x00A0;to have the short form in the text and the long
+form with the description in a footnote. Suppose also that I want the short form to be put in
+small caps in the main body of the document, but I want it in normal capitals in the list of
+acronyms. In my list of acronyms, I want the long form as the name with the short form in
+brackets followed by the description. That is, in the text I want <span
+class="cmtt-10">\gls</span><a
+ id="dx1-72041"></a> on <a
+href="#glo:firstuse">first use</a> to display:
+<spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\textsc</span><a
+ id="dx1-72042"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">}\footnote</span><span class="verb"><span
+class="cmtt-10">{</span></span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;: &#x27E8;<span
+class="cmti-10">description</span>&#x27E9;<span class="verb"><span
+class="cmtt-10">}</span></span>
+ <br /><spacer type=vertical size=10></span>
+on subsequent use: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\textsc</span><a
+ id="dx1-72043"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /><spacer type=vertical size=10></span>
+and in the list of acronyms, each entry will be displayed in the form: <spacer type=vertical size=10><span class="obeylines-h">
+ <br />&#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;) &#x27E8;<span
+class="cmti-10">description</span>&#x27E9;
+ <br /><spacer type=vertical size=10></span>
+</p><!--l. 9870--><p class="indent" > Let&#8217;s suppose it&#8217;s possible that I may have a mixed glossary. I can check this in the second
+argument of <span
+class="cmtt-10">\newacronymstyle</span><a
+ id="dx1-72044"></a> using:
+
+
+</p>
+ <div class="verbatim" id="verbatim-323">
+\ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+</div>
+<!--l. 9874--><p class="nopar" > This will use <span
+class="cmtt-10">\glsgenentryfmt</span><a
+ id="dx1-72045"></a> if the entry isn&#8217;t an acronym, otherwise it will use
+<span
+class="cmtt-10">\glsgenacfmt</span><a
+ id="dx1-72046"></a>. The third argument (&#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9;) of <span
+class="cmtt-10">\newacronymstyle</span><a
+ id="dx1-72047"></a> needs to redefine
+<span
+class="cmtt-10">\genacrfullformat</span><a
+ id="dx1-72048"></a> etc so that the <a
+href="#glo:firstuse">first use</a>&#x00A0;displays the short form in the text with the long
+form in a footnote followed by the description. This is done as follows (remember to use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">##</span></span></span>
+instead of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">#</span></span></span>):
+
+
+</p>
+ <div class="verbatim" id="verbatim-324">
+&#x00A0;%&#x00A0;No&#x00A0;case&#x00A0;change,&#x00A0;singular&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\glsentryshort{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylong{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;First&#x00A0;letter&#x00A0;upper&#x00A0;case,&#x00A0;singular&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\Glsentryshort{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylong{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;No&#x00A0;case&#x00A0;change,&#x00A0;plural&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\glsentryshortpl{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylongpl{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;First&#x00A0;letter&#x00A0;upper&#x00A0;case,&#x00A0;plural&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\Glsentryshortpl{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylongpl{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+</div>
+<!--l. 9903--><p class="nopar" > If you think it inappropriate for the short form to be capitalised at the start of a sentence
+you can change the above to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-325">
+&#x00A0;%&#x00A0;No&#x00A0;case&#x00A0;change,&#x00A0;singular&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\glsentryshort{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylong{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;No&#x00A0;case&#x00A0;change,&#x00A0;plural&#x00A0;first&#x00A0;use:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\glsentryshortpl{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylongpl{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;\let\Genacrfullformat\genacrfullformat
+&#x00A0;<br />&#x00A0;\let\Genplacrfullformat\genplacrfullformat
+</div>
+<!--l. 9919--><p class="nopar" > Another variation is to use <span
+class="cmtt-10">\Glsentrylong</span><a
+ id="dx1-72049"></a> and <span
+class="cmtt-10">\Glsentrylongpl</span><a
+ id="dx1-72050"></a> in the footnote instead of
+<span
+class="cmtt-10">\glsentrylong</span><a
+ id="dx1-72051"></a> and <span
+class="cmtt-10">\glsentrylongpl</span><a
+ id="dx1-72052"></a>.
+</p><!--l. 9924--><p class="indent" > Now let&#8217;s suppose that commands such as <span
+class="cmtt-10">\glsentryfull</span><a
+ id="dx1-72053"></a> and <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-72054"></a> shouldn&#8217;t use
+a&#x00A0;footnote, but instead use the format: &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;). This means that the style
+needs to redefine <span
+class="cmtt-10">\glsentryfull</span>, <span
+class="cmtt-10">\acrfullfmt</span><a
+ id="dx1-72055"></a> and their plural and upper case
+variants.
+</p><!--l. 9931--><p class="indent" > First, the non-linking commands:
+
+
+</p>
+ <div class="verbatim" id="verbatim-326">
+&#x00A0;&#x00A0;\renewcommand*{\glsentryfull}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Glsentryfull}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsentryfullpl}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Glsentryfullpl}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylongpl{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+</div>
+<!--l. 9949--><p class="nopar" > Now for the linking commands:
+
+
+</p>
+ <div class="verbatim" id="verbatim-327">
+&#x00A0;&#x00A0;\renewcommand*{\acrfullfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Acrfullfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\ACRfullfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\MakeTextUppercase{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrfullplfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Acrfullplfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylongpl{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\ACRfullplfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\MakeTextUppercase{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+</div>
+<!--l. 9992--><p class="nopar" > (This may cause problems with long hyperlinks, in which case adjust the definitions so that,
+for example, only the short form is inside the argument of <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-72056"></a>.)
+</p><!--l. 9997--><p class="indent" > The style also needs to redefine <span
+class="cmtt-10">\acronymsort</span><a
+ id="dx1-72057"></a> so that the acronyms are sorted according
+to the long form:
+
+
+</p>
+ <div class="verbatim" id="verbatim-328">
+&#x00A0;&#x00A0;\renewcommand*{\acronymsort}[2]{##2}%
+</div>
+<!--l. 10001--><p class="nopar" > If you prefer them to be sorted according to the short form you can change the above
+to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-329">
+&#x00A0;&#x00A0;\renewcommand*{\acronymsort}[2]{##1}%
+</div>
+<!--l. 10006--><p class="nopar" > The acronym font needs to be set to <span
+class="cmtt-10">\textsc</span><a
+ id="dx1-72058"></a> and the plural suffix adjusted so that the &#8220;s&#8221;
+suffix in the plural short form doesn&#8217;t get converted to smallcaps:
+
+
+</p>
+ <div class="verbatim" id="verbatim-330">
+&#x00A0;&#x00A0;\renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+</div>
+<!--l. 10013--><p class="nopar" > There are a number of ways of dealing with the format in the list of acronyms. The simplest
+way is to redefine <span
+class="cmtt-10">\acronymentry</span><a
+ id="dx1-72059"></a> to the long form followed by the upper case short form in
+parentheses:
+
+
+</p>
+ <div class="verbatim" id="verbatim-331">
+&#x00A0;\renewcommand*{\acronymentry}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\MakeTextUppercase{\glsentryshort{##1}})}%
+</div>
+<!--l. 10021--><p class="nopar" > (I&#8217;ve used <span
+class="cmtt-10">\Glsentrylong</span><a
+ id="dx1-72060"></a> instead of <span
+class="cmtt-10">\glsentrylong</span><a
+ id="dx1-72061"></a> to capitalise the name in the
+glossary.)
+</p><!--l. 10025--><p class="indent" > An alternative approach is to set <span
+class="cmtt-10">\acronymentry</span><a
+ id="dx1-72062"></a> to just the long form and redefine
+<span
+class="cmtt-10">\GenericAcronymFields</span><a
+ id="dx1-72063"></a> to set the <span
+class="cmss-10">symbol</span><a
+ id="dx1-72064"></a> key to the short form and use a glossary style
+that displays the symbol in parentheses after the <span
+class="cmss-10">name</span><a
+ id="dx1-72065"></a> (such as the <span
+class="cmss-10">tree</span><a
+ id="dx1-72066"></a> style) like
+this:
+
+
+</p>
+ <div class="verbatim" id="verbatim-332">
+&#x00A0;\renewcommand*{\acronymentry}[1]{\Glsentrylong{##1}}%
+&#x00A0;<br />&#x00A0;\renewcommand*{\GenericAcronymFields}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;symbol={\protect\MakeTextUppercase{\the\glsshorttok}}}%
+</div>
+<!--l. 10034--><p class="nopar" > I&#8217;m going to use the first approach and set <span
+class="cmtt-10">\GenericAcronymFields</span><a
+ id="dx1-72067"></a> to do nothing:
+
+
+</p>
+ <div class="verbatim" id="verbatim-333">
+&#x00A0;\renewcommand*{\GenericAcronymFields}{}%
+</div>
+<!--l. 10039--><p class="nopar" >
+</p><!--l. 10041--><p class="indent" > Finally, this style needs to switch off hyperlinks on first use to avoid nested
+links:
+
+
+</p>
+ <div class="verbatim" id="verbatim-334">
+&#x00A0;\glshyperfirstfalse
+</div>
+<!--l. 10045--><p class="nopar" > Putting this all together:
+
+
+</p>
+ <div class="verbatim" id="verbatim-335">
+\newacronymstyle{custom-fn}%&#x00A0;new&#x00A0;style&#x00A0;name
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+&#x00A0;<br />}%
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;\renewcommand*{\GenericAcronymFields}{}%
+&#x00A0;<br />&#x00A0;\glshyperfirstfalse
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\glsentryshort{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylong{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\Glsentryshort{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylong{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\glsentryshortpl{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylongpl{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\firstacronymfont{\Glsentryshortpl{##1}}##2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\footnote{\glsentrylongpl{##1}:&#x00A0;\glsentrydesc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsentryfull}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Glsentryfull}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsentryfullpl}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Glsentryfullpl}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylongpl{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrfullfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Acrfullfmt}[3]{%
+
+
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\ACRfullfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\MakeTextUppercase{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshort{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrfullplfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Acrfullplfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentrylongpl{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\ACRfullplfmt}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glslink[##1]{##2}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\MakeTextUppercase{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##2}##3\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\acronymfont{\glsentryshortpl{##2}})%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymsort}[2]{##2}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymentry}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##1}\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;(\MakeTextUppercase{\glsentryshort{##1}})}%
+&#x00A0;<br />}
+</div>
+<!--l. 10134--><p class="nopar" >
+</p><!--l. 10136--><p class="indent" > Now I need to specify that I want to use this new style:
+
+
+</p>
+ <div class="verbatim" id="verbatim-336">
+\setacronymstyle{custom-fn}
+</div>
+<!--l. 10139--><p class="nopar" > I also need to use a glossary style that suits this acronym style, for example <span
+class="cmss-10">altlist</span><a
+ id="dx1-72068"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-337">
+\setglossarystyle{altlist}
+</div>
+<!--l. 10144--><p class="nopar" >
+</p><!--l. 10146--><p class="indent" > Once the acronym style has been set, I can define my acronyms:
+
+
+</p>
+ <div class="verbatim" id="verbatim-338">
+\newacronym[description={set&#x00A0;of&#x00A0;tags&#x00A0;for&#x00A0;use&#x00A0;in
+&#x00A0;<br />developing&#x00A0;hypertext&#x00A0;documents}]{html}{html}{Hyper
+&#x00A0;<br />Text&#x00A0;Markup&#x00A0;Language}
+&#x00A0;<br />\newacronym[description={language&#x00A0;used&#x00A0;to&#x00A0;describe&#x00A0;the
+&#x00A0;<br />layout&#x00A0;of&#x00A0;a&#x00A0;document&#x00A0;written&#x00A0;in&#x00A0;a&#x00A0;markup&#x00A0;language}]{css}
+&#x00A0;<br />{css}{Cascading&#x00A0;Style&#x00A0;Sheet}
+</div>
+<!--l. 10155--><p class="nopar" >
+</p><!--l. 10157--><p class="indent" > The sample file <a
+href="#x1-11029r11"><span
+class="cmtt-10">sample-custom-acronym.tex</span></a> illustrates this example. </p>
+<div class="center"
+>
+<!--l. 10159--><p class="noindent" >
+</p><!--l. 10159--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-72069r24"></a>
+<!--l. 10161--><p class="noindent" ><span
+class="cmbx-12">Example 24</span><span
+class="cmbx-12">&#x00A0;(Italic and Upright Abbreviations)</span><a
+ id="x1-72070"></a>
+</p><!--l. 10162--><p class="indent" > Suppose I&#x00A0;want to have some abbreviations in italic and some that just use the
+surrounding font. Hard-coding this into the &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; argument of <span
+class="cmtt-10">\newacronym </span>can cause
+complications.
+</p><!--l. 10166--><p class="indent" > This example uses <span
+class="cmtt-10">\glsaddstoragekey</span><a
+ id="dx1-72071"></a> to add an extra field that can be used to store the
+formatting declaration (such as <span
+class="cmtt-10">\em</span>).
+
+
+</p>
+ <div class="verbatim" id="verbatim-339">
+\glsaddstoragekey{font}{}{\entryfont}
+</div>
+<!--l. 10170--><p class="nopar" > This defines a&#x00A0;new field/key called <span
+class="cmtt-10">font</span>, which defaults to nothing if it&#8217;s not explicitly set.
+This also defines a command called <span
+class="cmtt-10">\entryfont </span>that&#8217;s analogous to <span
+class="cmtt-10">\glsentrytext</span>. A&#x00A0;new
+style is then created to format abbreviations that access this field.
+</p><!--l. 10176--><p class="indent" > There are two ways to do this. The first is to create a style that doesn&#8217;t use <span
+class="cmtt-10">\glsgenacfmt</span><a
+ id="dx1-72072"></a>
+but instead provides a&#x00A0;modified version that doesn&#8217;t use <span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">} </span>but instead
+uses <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{</span></span></span><span
+class="cmtt-10">\entryfont</span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{\glslabel}</span></span></span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">}</span></span></span>. The full format given by commands such as
+<span
+class="cmtt-10">\genacrfullformat </span>need to be similarly adjusted. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-340">
+&#x00A0;&#x00A0;\renewcommand*{\genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;({\entryfont{##1}\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+</div>
+<!--l. 10188--><p class="nopar" > This will deal with commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-72073"></a> but not commands like <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-72074"></a> which still use
+<span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-72075"></a>. Another approach is to redefine <span
+class="cmtt-10">\acronymfont </span>to look up the required font
+declaration. Since <span
+class="cmtt-10">\acronymfont </span>doesn&#8217;t take the entry label as an argument, the following
+will only work if <span
+class="cmtt-10">\acronymfont </span>is used in a&#x00A0;context where the label is provided by
+<span
+class="cmtt-10">\glslabel</span><a
+ id="dx1-72076"></a>. This is true in <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\acrshort </span>and <span
+class="cmtt-10">\acrfull</span>. The redefinition is
+now:
+
+
+</p>
+ <div class="verbatim" id="verbatim-341">
+\renewcommand*{\acronymfont}[1]{{\entryfont{\glslabel}#1}}%
+</div>
+<!--l. 10199--><p class="nopar" > So the new style can be defined as:
+
+
+</p>
+ <div class="verbatim" id="verbatim-342">
+\newacronymstyle{long-font-short}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\GlsUseAcrEntryDispStyle{long-short}%
+&#x00A0;<br />}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\GlsUseAcrStyleDefs{long-short}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsentrylong{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;({\entryfont{##1}\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\Glsentrylong{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;({\entryfont{##1}\glsentryshort{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsentrylongpl{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;({\entryfont{##1}\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Genplacrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\Glsentrylongpl{##1}##2\space
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;({\entryfont{##1}\glsentryshortpl{##1}})%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymfont}[1]{{\entryfont{\glslabel}##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\acronymentry}[1]{{\entryfont{##1}\glsentryshort{##1}}}%
+&#x00A0;<br />}
+</div>
+<!--l. 10227--><p class="nopar" > Remember the style needs to be set before defining the entries:
+
+
+</p>
+ <div class="verbatim" id="verbatim-343">
+\setacronymstyle{long-font-short}
+</div>
+<!--l. 10231--><p class="nopar" >
+</p><!--l. 10233--><p class="indent" > The complete document is contained in the sample file <a
+href="#x1-11107r33"><span
+class="cmtt-10">sample-font-abbr.tex</span></a>.
+</p>
+<div class="center"
+>
+<!--l. 10235--><p class="noindent" >
+</p><!--l. 10235--><p class="noindent" >____________________________</p></div>
+<!--l. 10237--><p class="indent" > Some writers and publishing houses have started to drop full stops (periods) from upper
+case initials but may still retain them for lower case abbreviations, while others
+may still use them for both upper and lower case. This can cause complications.
+Chapter&#x00A0;12 of <span
+class="cmti-10">The </span><span class="TEX"><span
+class="cmti-10">T</span><span
+class="E"><span
+class="cmti-10">E</span></span><span
+class="cmti-10">X</span></span><span
+class="cmti-10">book </span>discusses the spacing between words but, briefly, the default
+behaviour of <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;is to assume that an upper case character followed by a&#x00A0;full stop
+and space is an abbreviation, so the space is the default inter-word space whereas
+a&#x00A0;lower case character followed by a&#x00A0;full stop and space is a word occurring at the
+end of a&#x00A0;sentence. In the event that this isn&#8217;t true, you need to make a&#x00A0;manual
+adjustment using <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">&#x2423;</span></span></span> (back slash space) in place of just a&#x00A0;space character for an
+inter-word mid-sentence space and use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\@</span></span></span> before the full stop to indicate the end of the
+sentence.
+</p><!--l. 10252--><p class="indent" > For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-344">
+I&#x00A0;was&#x00A0;awarded&#x00A0;a&#x00A0;B.Sc.&#x00A0;and&#x00A0;a&#x00A0;Ph.D.&#x00A0;(From&#x00A0;the&#x00A0;same&#x00A0;place.)
+</div>
+<!--l. 10255--><p class="nopar" > is typeset as <spacer type=vertical size=10><span class="obeylines-h">
+ <br />I was awarded a B.Sc. and a Ph.D. (From the same place.)
+ <br /><spacer type=vertical size=10></span>
+The spacing is more noticeable with the typewriter font:
+
+
+</p>
+ <div class="verbatim" id="verbatim-345">
+\ttfamily
+&#x00A0;<br />I&#x00A0;was&#x00A0;awarded&#x00A0;a&#x00A0;B.Sc.&#x00A0;and&#x00A0;a&#x00A0;Ph.D.&#x00A0;(From&#x00A0;the&#x00A0;same&#x00A0;place.)
+</div>
+<!--l. 10264--><p class="nopar" > is typeset as <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">I was awarded a B.Sc. and a Ph.D. (From the same place.)</span>
+ <br /><spacer type=vertical size=10></span>
+The lower case letter at the end of &#8220;B.Sc.&#8221;&#x00A0;is confusing <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;into thinking that the full stop
+after it marks the end of the sentence. Whereas the upper case letter at the end of &#8220;Ph.D.&#8221;
+has confused <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;into thinking that the following full stop is just part of the abbreviation.
+These can be corrected:
+
+
+</p>
+ <div class="verbatim" id="verbatim-346">
+I&#x00A0;was&#x00A0;awarded&#x00A0;a&#x00A0;B.Sc.\&#x00A0;and&#x00A0;a&#x00A0;Ph.D\@.&#x00A0;(From&#x00A0;the&#x00A0;same&#x00A0;place.)
+</div>
+<!--l. 10276--><p class="nopar" >
+</p><!--l. 10278--><p class="indent" > This situation is a bit problematic for <span
+class="cmss-10">glossaries</span>. The full stops can form part of
+the &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; argument of <span
+class="cmtt-10">\newacronym </span>and the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">B.Sc.\&#x2423;</span></span></span> part can be dealt with by
+remembering to add <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\&#x2423;</span></span></span> (for example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{bsc}\&#x2423;</span></span></span>) but the end of sentence case is
+more troublesome as you need to omit the sentence terminating full stop (to avoid
+two dots) which can make the source code look a little strange but you also need
+to adjust the space factor, which is usually done by inserting <span
+class="cmtt-10">\@ </span>before the full
+stop.
+</p><!--l. 10288--><p class="indent" > The next example shows one way of achieving this. (Note that the supplemental
+<a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package provides a much simpler way of doing this, which you may prefer to
+use. See the <a
+href="http://www.dickimaw-books.com/gallery/sample-initialisms.shtml" >initialisms example</a>.)
+<a
+ id="x1-72077r25"></a>
+</p><!--l. 10294--><p class="noindent" ><span
+class="cmbx-12">Example 25</span><span
+class="cmbx-12">&#x00A0;(Abbreviations with Full Stops (Periods))</span><a
+ id="x1-72078"></a>
+</p><!--l. 10295--><p class="indent" > As from version 4.16, there&#8217;s now a hook (<span
+class="cmtt-10">\glspostlinkhook</span><a
+ id="dx1-72079"></a>) that&#8217;s called at the very
+end of the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;and <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands. This can be redefined to check if the
+following character is a full stop. The <span
+class="cmss-10">amsgen</span><a
+ id="dx1-72080"></a> package (which is automatically loaded by
+<span
+class="cmss-10">glossaries</span>) provides an internal command called <span
+class="cmtt-10">\new@ifnextchar </span>that can be used to
+determine if the given character appears next. (For more information see the <span
+class="cmss-10">amsgen</span><a
+ id="dx1-72081"></a>
+documentation.)
+</p><!--l. 10304--><p class="indent" > It&#8217;s possible that I&#x00A0;may also want acronyms or contractions in my document, so I&#x00A0;need
+some way to differentiate between them. Here I&#8217;m going to use the same method as in
+example&#x00A0;<a
+href="#x1-39002r4">4<!--tex4ht:ref: ex:addstoragekey --></a> where a&#x00A0;new field is defined to indicate the type of abbreviation:
+
+
+</p>
+ <div class="verbatim" id="verbatim-347">
+\glsaddstoragekey{abbrtype}{word}{\abbrtype}
+&#x00A0;<br />\newcommand*{\newabbr}[1][]{\newacronym[abbrtype=initials,#1]}
+</div>
+<!--l. 10313--><p class="nopar" > Now I just use <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-72082"></a> for the acronyms, for example,
+
+
+</p>
+ <div class="verbatim" id="verbatim-348">
+\newacronym{laser}{laser}{light&#x00A0;amplification&#x00A0;by&#x00A0;stimulated
+&#x00A0;<br />emission&#x00A0;of&#x00A0;radiation}
+</div>
+<!--l. 10318--><p class="nopar" > and my new command <span
+class="cmtt-10">\newabbr </span>for initials, for example,
+
+
+</p>
+ <div class="verbatim" id="verbatim-349">
+\newabbr{eg}{e.g.}{exempli&#x00A0;gratia}
+&#x00A0;<br />\newabbr{ie}{i.e.}{id&#x00A0;est}
+&#x00A0;<br />\newabbr{bsc}{B.Sc.}{Bachelor&#x00A0;of&#x00A0;Science}
+&#x00A0;<br />\newabbr{ba}{B.A.}{Bachelor&#x00A0;of&#x00A0;Arts}
+&#x00A0;<br />\newabbr{agm}{A.G.M.}{annual&#x00A0;general&#x00A0;meeting}
+</div>
+<!--l. 10326--><p class="nopar" > Within <span
+class="cmtt-10">\glspostlinkhook </span>the entry&#8217;s label can be accessed using <span
+class="cmtt-10">\glslabel</span><a
+ id="dx1-72083"></a> and
+<span
+class="cmtt-10">\ifglsfieldeq</span><a
+ id="dx1-72084"></a> can be used to determine if the current entry has the new <span
+class="cmtt-10">abbrtype </span>field set
+to &#8220;initials&#8221;. If it doesn&#8217;t, then nothing needs to happen, but if it does, a&#x00A0;check is performed
+to see if the next character is a&#x00A0;full stop. If it is, this signals the end of a&#x00A0;sentence otherwise
+it&#8217;s mid-sentence.
+</p><!--l. 10335--><p class="indent" > Remember that internal commands within the document file (rather than in a&#x00A0;class or
+package) need to be placed between <span
+class="cmtt-10">\makeatletter</span><a
+ id="dx1-72085"></a> and <span
+class="cmtt-10">\makeatother</span><a
+ id="dx1-72086"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-350">
+\makeatletter
+&#x00A0;<br />\renewcommand{\glspostlinkhook}{%
+&#x00A0;<br />&#x00A0;\ifglsfieldeq{\glslabel}{abbrtype}{initials}%
+&#x00A0;<br />&#x00A0;{\new@ifnextchar.\doendsentence\doendword}
+&#x00A0;<br />&#x00A0;{}%
+&#x00A0;<br />}
+&#x00A0;<br />\makeatother
+</div>
+<!--l. 10346--><p class="nopar" > In the event that a full stop is found <span
+class="cmtt-10">\doendsentence </span>is performed but it will be followed by
+the full stop, which needs to be discarded. Otherwise <span
+class="cmtt-10">\doendword </span>will be done but it won&#8217;t be
+followed by a full stop so there&#8217;s nothing to discard. The definitions for these commands
+are:
+
+
+</p>
+ <div class="verbatim" id="verbatim-351">
+\newcommand{\doendsentence}[1]{\spacefactor=10000{}}
+&#x00A0;<br />\newcommand{\doendword}{\spacefactor=1000{}}
+</div>
+<!--l. 10355--><p class="nopar" > Now, I can just do <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{bsc}</span></span></span> mid-sentence and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{phd}.</span></span></span> at the end of the
+sentence. The terminating full stop will be discarded in the latter case, but it won&#8217;t be
+discarded in, say, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{laser}.</span></span></span> as that doesn&#8217;t have the <span
+class="cmtt-10">abbrtype </span>field set to
+&#8220;initials&#8221;.
+</p><!--l. 10362--><p class="indent" > This also works on first use when the style is set to one of the &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;) styles but it
+will fail with the &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;) styles as in this case the terminating full stop shouldn&#8217;t be
+discarded. Since <span
+class="cmtt-10">\glspostlinkhook</span><a
+ id="dx1-72087"></a> is used after the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;has been unset for the
+entry, this can&#8217;t be fixed by simply checking with <span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-72088"></a>. One possible solution to this is
+to redefine <span
+class="cmtt-10">\glslinkpostsetkeys</span><a
+ id="dx1-72089"></a> to check for the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;and define a macro that can
+then be used in <span
+class="cmtt-10">\glspostlinkhook</span><a
+ id="dx1-72090"></a>.
+</p><!--l. 10372--><p class="indent" > The other thing to consider is what to do with plurals. One possibility is to check for
+plural use within <span
+class="cmtt-10">\doendsentence </span>(using <span
+class="cmtt-10">\glsifplural</span><a
+ id="dx1-72091"></a>) and put the full stop back if the
+plural has been used.
+</p><!--l. 10377--><p class="indent" > The complete document is contained in the sample file <a
+href="#x1-11031r13"><span
+class="cmtt-10">sample-dot-abbr.tex</span></a>.
+</p>
+<div class="center"
+>
+<!--l. 10379--><p class="noindent" >
+</p><!--l. 10379--><p class="noindent" >____________________________</p></div>
+<!--l. 10381--><p class="noindent" >
+</p>
+<!--l. 10381--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">13.2 </span> <a
+ id="sec:disploa"></a>Displaying the List of Acronyms</h3>
+<!--l. 10384--><p class="noindent" >The list of acronyms is just like any other type of glossary and can be displayed on its own
+using:
+ </p><dl class="description"><dt class="description">
+<a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">
+ <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-73001"></a><span
+class="cmtt-10">[type=\acronymtype</span><a
+ id="dx1-73002"></a><span
+class="cmtt-10">]</span>
+</div>
+ </div>
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">Options</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option2"><span
+class="cmbx-10">2</span></a> <span
+class="cmbx-10">and</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option3"><span
+class="cmbx-10">3</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">
+ <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-73003"></a><span
+class="cmtt-10">[type=\acronymtype</span><a
+ id="dx1-73004"></a><span
+class="cmtt-10">]</span>
+</div>
+ </div>
+ <!--l. 10397--><p class="noindent" >(If you use the <span
+class="cmss-10">acronym</span><a
+ id="dx1-73005"></a> package option you can also use </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printacronyms</span><a
+ id="dx1-73006"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> as a synonym for <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-73007"></a><span
+class="cmtt-10">[type=\acronymtype</span><a
+ id="dx1-73008"></a><span
+class="cmtt-10">,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+ </div> See <a
+href="#sec:pkgopts-acronym"><span
+class="tcrm-1000">&sect;</span>2.5 </a><a
+href="#sec:pkgopts-acronym">Acronym Options<!--tex4ht:ref: sec:pkgopts-acronym --></a>.)
+ </dd></dl>
+<!--l. 10409--><p class="noindent" >Alternatively the list of acronyms can be displayed with all the other glossaries using:
+ </p><dl class="description"><dt class="description">
+<a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><span
+class="cmtt-10">\printnoidxglossaries</span><a
+ id="dx1-73009"></a>
+ </dd><dt class="description">
+<span
+class="cmbx-10">Options</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option2"><span
+class="cmbx-10">2</span></a> <span
+class="cmbx-10">and</span><span
+class="cmbx-10">&#x00A0;</span><a
+href="#option3"><span
+class="cmbx-10">3</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-73010"></a></dd></dl>
+<!--l. 10417--><p class="indent" > However, care must be taken to choose a glossary style that&#8217;s appropriate to your acronym
+style. Alternatively, you can define your own custom style (see <a
+href="#sec:newglossarystyle"><span
+class="tcrm-1000">&sect;</span>15.2 </a><a
+href="#sec:newglossarystyle">Defining your own
+glossary style<!--tex4ht:ref: sec:newglossarystyle --></a> for further details).
+</p><!--l. 10422--><p class="noindent" >
+</p>
+<!--l. 10422--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">13.3 </span> <a
+ id="sec:oldacronym"></a>Upgrading From the glossary Package</h3>
+<!--l. 10425--><p class="noindent" >Users of the obsolete <span
+class="cmss-10">glossary</span><a
+ id="dx1-74001"></a> package may recall that the syntax used to define new
+acronyms has changed with the replacement <span
+class="cmss-10">glossaries </span>package. In addition, the
+old <span
+class="cmss-10">glossary</span><a
+ id="dx1-74002"></a> package created the command <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9; when defining the acronym
+&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9;.
+
+
+</p><!--l. 10431--><p class="indent" > In order to facilitate migrating from the old package to the new one, the <span
+class="cmss-10">glossaries</span>
+package<span class="footnote-mark"><a
+href="#fn1x13" id="fn1x13-bk"><sup class="textsuperscript">13.1</sup></a></span><a
+ id="x1-74003f1"></a>
+provides the command:
+</p><!--l. 10434--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\oldacronym</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-74004"></a> <span
+class="cmtt-10">\oldacronym[</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">abbrv</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">key-val list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10436--><p class="noindent" >
+This uses the same syntax as the <span
+class="cmss-10">glossary</span><a
+ id="dx1-74005"></a> package&#8217;s method of defining acronyms. It is
+equivalent to: <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-74006"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">key-val list</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">abbrv</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /><spacer type=vertical size=10></span>
+In addition, <span
+class="cmtt-10">\oldacronym</span><a
+ id="dx1-74007"></a> also defines the commands <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, which is equivalent to <span
+class="cmtt-10">\gls</span><a
+ id="dx1-74008"></a>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, and <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">*</span>, which is equivalent to <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-74009"></a><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; is omitted, &#x27E8;<span
+class="cmti-10">abbrv</span>&#x27E9; is used.
+Since commands names must consist only of alphabetical characters, &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; must also only
+consist of alphabetical characters. Note that <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9; doesn&#8217;t allow you to use the first optional
+argument of <span
+class="cmtt-10">\gls</span><a
+ id="dx1-74010"></a> or <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-74011"></a> &#8212; you will need to explicitly use <span
+class="cmtt-10">\gls</span><a
+ id="dx1-74012"></a> or <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-74013"></a> to change the
+settings.
+</p><!--l. 10453--><p class="indent" > <div class="important" title="Important Note"> Recall that, in general, <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;ignores spaces following command names consisting of
+alphabetical characters. This is also true for <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9; unless you additionally load the <span
+class="cmss-10">xspace</span><a
+ id="dx1-74014"></a>
+package, but be aware that there are some issues with using <span
+class="cmss-10">xspace</span><a
+ id="dx1-74015"></a>.<span class="footnote-mark"><a
+href="#fn2x13" id="fn2x13-bk"><sup class="textsuperscript">13.2</sup></a></span></div>
+</p><!--l. 10459--><p class="noindent" >
+<a
+ id="x1-74016f2"></a>
+</p><!--l. 10463--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package doesn&#8217;t load the <span
+class="cmss-10">xspace</span><a
+ id="dx1-74017"></a> package since there are both advantages
+and disadvantages to using <span
+class="cmtt-10">\xspace</span><a
+ id="dx1-74018"></a> in <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. If you don&#8217;t use the <span
+class="cmss-10">xspace</span><a
+ id="dx1-74019"></a> package
+you need to explicitly force a space using <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\&#x2423;</span></span></span> (backslash space) however you can
+follow <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9; with additional text in square brackets (the final optional argument
+to <span
+class="cmtt-10">\gls</span><a
+ id="dx1-74020"></a>). If you use the <span
+class="cmss-10">xspace</span><a
+ id="dx1-74021"></a> package you don&#8217;t need to escape the spaces but
+you can&#8217;t use the optional argument to insert text (you will have to explicitly use
+<span
+class="cmtt-10">\gls</span><a
+ id="dx1-74022"></a>).
+</p><!--l. 10474--><p class="indent" > To illustrate this, suppose I define the acronym &#8220;abc&#8221; as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-352">
+\oldacronym{abc}{example&#x00A0;acronym}{}
+</div>
+<!--l. 10478--><p class="nopar" > This will create the command <span
+class="cmtt-10">\abc </span>and its starred version <span
+class="cmtt-10">\abc*</span>. <a
+href="#tab:xspace">Table&#x00A0;13.2</a> illustrates the
+effect of <span
+class="cmtt-10">\abc </span>(on subsequent use) according to whether or not the <span
+class="cmss-10">xspace</span><a
+ id="dx1-74023"></a> package has been
+loaded. As can be seen from the final row in the table, the <span
+class="cmss-10">xspace</span><a
+ id="dx1-74024"></a> package prevents the
+optional argument from being recognised.
+</p>
+ <div class="table">
+
+
+<!--l. 10486--><p class="indent" > <a
+ id="tab:xspace"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;13.2: </span><span
+class="content">The effect of using <span
+class="cmss-10">xspace </span>with <span
+class="cmtt-10">\oldacronym</span></span></div><!--tex4ht:label?: x1-740252 -->
+<div class="tabular"> <table id="TBL-8" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-8-1g"><col
+id="TBL-8-1" /><col
+id="TBL-8-2" /><col
+id="TBL-8-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-8-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-1"
+class="td11"> <span
+class="cmbx-10">Code </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-2"
+class="td11"> <span
+class="cmbx-10">With </span><span
+class="cmssbx-10">xspace </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-8-1-3"
+class="td11"> <span
+class="cmbx-10">Without </span><span
+class="cmssbx-10">xspace </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-1"
+class="td11"> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abc.</span></span></span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-2"
+class="td11"> abc. </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-2-3"
+class="td11"> abc. </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-1"
+class="td11"> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abc</span><span
+class="cmtt-10">&#x00A0;xyz</span></span></span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-2"
+class="td11"> abc xyz </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-3-3"
+class="td11"> abcxyz </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-1"
+class="td11"> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abc\</span><span
+class="cmtt-10">&#x00A0;xyz</span></span></span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-2"
+class="td11"> abc xyz </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-4-3"
+class="td11"> abc xyz </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-1"
+class="td11"> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abc*</span><span
+class="cmtt-10">&#x00A0;xyz</span></span></span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-2"
+class="td11"> Abc xyz </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-5-3"
+class="td11"> Abc xyz </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-8-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-1"
+class="td11"> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abc[&#8217;s]</span><span
+class="cmtt-10">&#x00A0;xyz</span></span></span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-2"
+class="td11"> abc [&#8217;s] xyz </td><td style="white-space:nowrap; text-align:left;" id="TBL-8-6-3"
+class="td11"> abc&#8217;s xyz </td></tr></table>
+</div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+
+
+<!--l. 10504--><p class="indent" > </div>
+</p><!--l. 10504--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">14. <a
+ id="sec:glsunset"></a>Unsetting and Resetting Entry Flags</h2>
+</p><!--l. 10507--><p class="indent" > When using the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands it is possible that you may want to use the
+value given by the <span
+class="cmss-10">first</span><a
+ id="dx1-75001"></a> key, even though you have already <a
+href="#glo:firstuse">used</a> the glossary entry.
+Conversely, you may want to use the value given by the <span
+class="cmss-10">text</span><a
+ id="dx1-75002"></a> key, even though you
+haven&#8217;t used the glossary entry. The former can be achieved by one of the following
+commands:
+</p><!--l. 10513--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsreset</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75003"></a> <span
+class="cmtt-10">\glsreset{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10515--><p class="noindent" >
+</p><!--l. 10516--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslocalreset</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75004"></a> <span
+class="cmtt-10">\glslocalreset{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10518--><p class="noindent" >
+while the latter can be achieved by one of the following commands:
+</p><!--l. 10520--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsunset</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75005"></a> <span
+class="cmtt-10">\glsunset{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10522--><p class="noindent" >
+</p><!--l. 10523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslocalunset</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75006"></a> <span
+class="cmtt-10">\glslocalunset{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10525--><p class="noindent" >
+You can also reset or unset all entries for a given glossary or list of glossaries using:
+</p><!--l. 10528--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsresetall</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75007"></a> <span
+class="cmtt-10">\glsresetall[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10530--><p class="noindent" >
+</p><!--l. 10531--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslocalresetall</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75008"></a> <span
+class="cmtt-10">\glslocalresetall[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10533--><p class="noindent" >
+</p><!--l. 10534--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsunsetall</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75009"></a> <span
+class="cmtt-10">\glsunsetall[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10536--><p class="noindent" >
+</p><!--l. 10537--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslocalunsetall</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75010"></a> <span
+class="cmtt-10">\glslocalunsetall[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10539--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">glossary list</span>&#x27E9; is a comma-separated list of glossary labels. If omitted, all defined
+glossaries are assumed (except for the ignored ones). For example, to reset all entries in the
+main glossary and the list of acronyms:
+
+
+</p>
+ <div class="verbatim" id="verbatim-353">
+\glsresetall[main,acronym]
+</div>
+<!--l. 10547--><p class="nopar" >
+</p><!--l. 10549--><p class="indent" > You can determine whether an entry&#8217;s <a
+href="#glo:firstuseflag">first use flag</a> is set using:
+</p><!--l. 10550--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsused</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-75011"></a> <span
+class="cmtt-10">\ifglsused{</span>&#x27E8;<span
+class="cmitt-10">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. 10552--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label of the required entry. If the entry has been used, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; will be
+done, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9; will be done.
+</p><!--l. 10557--><p class="indent" > <div class="important" title="Important Note"> Be careful when using <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands within an environment or command
+argument that gets processed multiple times as it can cause unwanted side-effects when the
+first use displayed text is different from subsequent use. </div>
+</p><!--l. 10562--><p class="noindent" >
+</p><!--l. 10564--><p class="indent" > For example, the <span
+class="cmss-10">frame</span><a
+ id="dx1-75012"></a><a
+ id="dx1-75013"></a> environment in <span
+class="cmss-10">beamer</span><a
+ id="dx1-75014"></a> processes its argument for each overlay.
+This means that the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;will be unset on the first overlay and subsequent overlays
+will use the non-first use form.
+</p><!--l. 10569--><p class="indent" > Consider the following example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-354">
+\documentclass{beamer}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\newacronym{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\begin{frame}
+&#x00A0;<br />&#x00A0;\frametitle{Frame&#x00A0;1}
+&#x00A0;<br />&#x00A0;\begin{itemize}
+&#x00A0;<br />&#x00A0;&#x00A0;\item&#x003C;+-&#x003E;&#x00A0;\gls{svm}
+&#x00A0;<br />&#x00A0;&#x00A0;\item&#x003C;+-&#x003E;&#x00A0;Stuff.
+&#x00A0;<br />&#x00A0;\end{itemize}
+&#x00A0;<br />\end{frame}
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10589--><p class="nopar" >
+</p><!--l. 10591--><p class="indent" > On the first overlay, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> produces &#8220;support vector machine (SVM)&#8221; and then
+unsets the <a
+href="#glo:firstuseflag">first use flag</a>. When the second overlay is processed, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> now produces
+&#8220;SVM&#8221;, which is unlikely to be the desired effect. I&#x00A0;don&#8217;t know anyway around this and I can
+only offer two suggestions.
+</p><!--l. 10597--><p class="indent" > Firstly, unset all acronyms at the start of the document and explicitly use <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-75015"></a> when
+you want the full version to be displayed:
+
+
+</p>
+ <div class="verbatim" id="verbatim-355">
+\documentclass{beamer}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\newacronym{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />\glsunsetall
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\begin{frame}
+&#x00A0;<br />&#x00A0;\frametitle{Frame&#x00A0;1}
+&#x00A0;<br />&#x00A0;\begin{itemize}
+&#x00A0;<br />&#x00A0;&#x00A0;\item&#x003C;+-&#x003E;&#x00A0;\acrfull{svm}
+&#x00A0;<br />&#x00A0;&#x00A0;\item&#x003C;+-&#x003E;&#x00A0;Stuff.
+&#x00A0;<br />&#x00A0;\end{itemize}
+&#x00A0;<br />\end{frame}
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10619--><p class="nopar" >
+</p><!--l. 10621--><p class="indent" > Secondly, explicitly reset each acronym on first use:
+
+
+</p>
+ <div class="verbatim" id="verbatim-356">
+\begin{frame}
+&#x00A0;<br />&#x00A0;\frametitle{Frame&#x00A0;1}
+&#x00A0;<br />&#x00A0;\begin{itemize}
+&#x00A0;<br />&#x00A0;&#x00A0;\item&#x003C;+-&#x003E;&#x00A0;\glsreset{svm}\gls{svm}
+&#x00A0;<br />&#x00A0;&#x00A0;\item&#x003C;+-&#x003E;&#x00A0;Stuff.
+&#x00A0;<br />&#x00A0;\end{itemize}
+&#x00A0;<br />\end{frame}
+</div>
+<!--l. 10631--><p class="nopar" > These are non-optimal, but the <span
+class="cmss-10">beamer</span><a
+ id="dx1-75016"></a> class is too complex for me to provide
+a programmatic solution. Other potentially problematic environments are some
+<span
+class="cmss-10">tabular</span><a
+ id="dx1-75017"></a><a
+ id="dx1-75018"></a>-like environments (but not <span
+class="cmss-10">tabular</span><a
+ id="dx1-75019"></a><a
+ id="dx1-75020"></a> itself) that process the contents in order
+to work out the column widths and then reprocess the contents to do the actual
+typesetting.
+</p><!--l. 10639--><p class="indent" > The <span
+class="cmss-10">amsmath</span><a
+ id="dx1-75021"></a> environments, such as <span
+class="cmss-10">align</span><a
+ id="dx1-75022"></a><a
+ id="dx1-75023"></a>, also process their contents multiple times, but
+the <span
+class="cmss-10">glossaries </span>package now checks for this. For <span
+class="cmss-10">tabularx</span><a
+ id="dx1-75024"></a>, you need to explicitly patch it by
+placing <span
+class="cmtt-10">\glspatchtabularx </span>in the preamble (or anywhere before the problematic use of
+<span
+class="cmss-10">tabularx</span>).
+</p>
+<!--l. 10646--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">14.1 </span> <a
+ id="sec:enableentrycount"></a>Counting the Number of Times an Entry has been Used (First Use Flag
+Unset)</h3>
+<!--l. 10649--><p class="noindent" >As from version 4.14, it&#8217;s now possible to keep track of how many times an entry is used.
+That is, how many times the <a
+href="#glo:firstuseflag">first use flag</a>&#x00A0;is unset. Note that the supplemental
+<a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> package improves this function and also provides per-unit counting, which isn&#8217;t
+available with the <span
+class="cmss-10">glossaries </span>package.
+</p><!--l. 10655--><p class="indent" > <div class="important" title="Important Note"> This function is disabled by default as it adds extra overhead to the document build time
+and also switches <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-76001"></a> (and therefore <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-76002"></a>) into a&#x00A0;preamble-only
+command. </div>
+</p><!--l. 10660--><p class="noindent" >
+</p><!--l. 10662--><p class="indent" > To enable this function, use
+</p><!--l. 10663--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsenableentrycount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-76003"></a> <span
+class="cmtt-10">\glsenableentrycount </span></div><hr>
+</p><!--l. 10665--><p class="noindent" >
+before defining your entries. This adds two extra (internal) fields to entries: <span
+class="cmtt-10">currcount </span>and
+<span
+class="cmtt-10">prevcount</span>.
+</p><!--l. 10669--><p class="indent" > The <span
+class="cmtt-10">currcount </span>field keeps track of how many times <span
+class="cmtt-10">\glsunset </span>is used within the
+document. A&#x00A0;local unset (using <span
+class="cmtt-10">\glslocalunset</span>) performs a&#x00A0;local rather than global
+increment to <span
+class="cmtt-10">currcount</span>. Remember that not all commands use <span
+class="cmtt-10">\glsunset</span>. Only the
+<a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;commands do this. The reset commands <span
+class="cmtt-10">\glsreset </span>and <span
+class="cmtt-10">\glslocalreset </span>reset this
+field back to zero (where <span
+class="cmtt-10">\glslocalreset </span>performs a&#x00A0;local change).
+</p><!--l. 10677--><p class="indent" > The <span
+class="cmtt-10">prevcount </span>field stores the final value of the <span
+class="cmtt-10">currcount </span>field <span
+class="cmti-10">from the previous run</span>.
+This value is read from the <span
+class="cmtt-10">.aux </span>file at the beginning of the <span
+class="cmss-10">document</span><a
+ id="dx1-76004"></a><a
+ id="dx1-76005"></a> environment.
+
+
+</p><!--l. 10682--><p class="indent" > You can access these fields using
+</p><!--l. 10683--><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-76006"></a> <span
+class="cmtt-10">\glsentrycurrcount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10685--><p class="noindent" >
+for the <span
+class="cmtt-10">currcount </span>field, and
+</p><!--l. 10687--><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-76007"></a> <span
+class="cmtt-10">\glsentryprevcount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10689--><p class="noindent" >
+for the <span
+class="cmtt-10">prevcount </span>field. <span
+class="cmbx-10">These commands are only defined if you have used</span>
+<span
+class="cmtt-10">\glsenableentrycount</span><span
+class="cmbx-10">.</span>
+</p><!--l. 10693--><p class="indent" > For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-357">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\glsenableentrycount
+&#x00A0;<br />\newglossaryentry{apple}{name=apple,description={a&#x00A0;fruit}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />Total&#x00A0;usage&#x00A0;on&#x00A0;previous&#x00A0;run:&#x00A0;\glsentryprevcount{apple}.
+&#x00A0;<br />\gls{apple}.&#x00A0;\gls{apple}.&#x00A0;\glsadd{apple}\glsentrytext{apple}.
+&#x00A0;<br />\glslink{apple}{apple}.&#x00A0;\glsdisp{apple}{apple}.&#x00A0;\Gls{apple}.
+&#x00A0;<br />Number&#x00A0;of&#x00A0;times&#x00A0;apple&#x00A0;has&#x00A0;been&#x00A0;used:&#x00A0;\glsentrycurrcount{apple}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10711--><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;run, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprevcount{apple}</span></span></span> produces&#x00A0;0. At the end of the
+document, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrycurrcount{apple}</span></span></span> produces&#x00A0;4. This is because the only commands
+that have incremented the entry count are those that use <span
+class="cmtt-10">\glsunset</span>. That is: <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glsdisp</span>
+and <span
+class="cmtt-10">\Gls</span>. The other commands used in the above example, <span
+class="cmtt-10">\glsadd</span>, <span
+class="cmtt-10">\glsentrytext </span>and
+<span
+class="cmtt-10">\glslink</span>, don&#8217;t use <span
+class="cmtt-10">\glsunset </span>so they don&#8217;t increment the entry count. On the <span
+class="cmti-10">next</span>
+<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">\glsentryprevcount{apple}</span></span></span> now produces&#x00A0;4 as that was the value of the
+<span
+class="cmtt-10">currcount </span>field for the <span
+class="cmtt-10">apple </span>entry at the end of the document on the previous
+run.
+</p><!--l. 10724--><p class="indent" > When you enable the entry count using <span
+class="cmtt-10">\glsenableentrycount</span>, you also enable the
+following commands:
+</p><!--l. 10726--><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-76008"></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. 10728--><p class="noindent" >
+(no case-change, singular)
+</p><!--l. 10730--><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-76009"></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. 10732--><p class="noindent" >
+(no case-change, plural)
+</p><!--l. 10734--><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-76010"></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. 10736--><p class="noindent" >
+(first letter uppercase, singular), and
+</p><!--l. 10738--><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-76011"></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. 10740--><p class="noindent" >
+(first letter uppercase, plural). These all have plus and starred variants like the analogous
+<span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glspl</span>, <span
+class="cmtt-10">\Gls </span>and <span
+class="cmtt-10">\Glspl </span>commands.
+</p><!--l. 10745--><p class="indent" > If you don&#8217;t use <span
+class="cmtt-10">\glsenableentrycount</span>, these commands behave like <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glspl</span>, <span
+class="cmtt-10">\Gls</span>
+and <span
+class="cmtt-10">\Glspl</span>, respectively, only there will be a warning that you haven&#8217;t enabled entry
+counting. If you have enabled entry counting with <span
+class="cmtt-10">\glsenableentrycount </span>then these
+
+
+commands test if <span
+class="cmtt-10">\glsentryprevcount{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>equals&#x00A0;1. If it doesn&#8217;t then the analogous <span
+class="cmtt-10">\gls</span>
+etc will be used. If it does, then the first optional argument will be ignored and
+</p><div class="alltt">
+<div class="obeylines-v">
+&#x27E8;<span
+class="cmitt-10">cs</span><span
+class="cmitt-10">&#x00A0;format</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">}\glsunset{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> will be performed, where &#x27E8;<span
+class="cmti-10">cs format</span>&#x27E9; is a command that takes two arguments. The command
+used depends whether you have used <span
+class="cmtt-10">\cgls</span>, <span
+class="cmtt-10">\cglspl</span>, <span
+class="cmtt-10">\cGls </span>or <span
+class="cmtt-10">\cGlspl</span>.
+<!--l. 10760--><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-76012"></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. 10762--><p class="noindent" >
+This command is used by <span
+class="cmtt-10">\cgls </span>and defaults to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsentrylong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a&#x00A0;long form or <div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsentryfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> otherwise.
+<!--l. 10774--><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-76013"></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. 10776--><p class="noindent" >
+This command is used by <span
+class="cmtt-10">\cglspl </span>and defaults to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsentrylongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a&#x00A0;long form or <div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsentryfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> otherwise.
+<!--l. 10788--><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-76014"></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. 10790--><p class="noindent" >
+This command is used by <span
+class="cmtt-10">\cGls </span>and defaults to </p><div class="alltt">
+
+
+<div class="obeylines-v">
+<span
+class="cmtt-10">\Glsentrylong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a&#x00A0;long form or <div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\Glsentryfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> otherwise.
+<!--l. 10801--><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-76015"></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. 10803--><p class="noindent" >
+This command is used by <span
+class="cmtt-10">\cGlspl </span>and defaults to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\Glsentrylongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a&#x00A0;long form or <div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\Glsentryfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+</div>
+</div> otherwise.
+<!--l. 10814--><p class="indent" > This means that if the previous count for the given entry was&#x00A0;1, the entry won&#8217;t be
+hyperlinked with the <span
+class="cmtt-10">\cgls</span>-like commands and they won&#8217;t add a&#x00A0;line to the external glossary
+file. If you haven&#8217;t used any of the other commands that add information to glossary file (such
+as <span
+class="cmtt-10">\glsadd </span>or the <a
+href="#sec:glstext-like"><span
+class="cmtt-10">\glstext</span>-like</a>&#x00A0;commands) then the entry won&#8217;t appear in the
+glossary.
+</p><!--l. 10821--><p class="indent" > Remember that since these commands use <span
+class="cmtt-10">\glsentryprevcount </span>you need to run
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;twice to ensure they work correctly. The document build order is now (at least):
+<span
+class="cmtt-10">(pdf)latex</span>, <span
+class="cmtt-10">(pdf)latex</span>, <span
+class="cmtt-10">makeglossaries</span>, <span
+class="cmtt-10">(pdf)latex</span>.
+<a
+ id="x1-76016r26"></a>
+</p><!--l. 10826--><p class="noindent" ><span
+class="cmbx-12">Example 26</span><span
+class="cmbx-12">&#x00A0;(Don&#8217;t index entries that are only used once)</span><a
+ id="x1-76017"></a>
+</p><!--l. 10827--><p class="indent" > In this example, the abbreviations that have only been used once (on the previous run)
+only have their long form shown with <span
+class="cmtt-10">\cgls</span>.
+
+
+</p>
+ <div class="verbatim" id="verbatim-358">
+\documentclass{article}
+&#x00A0;<br />\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage[acronym]{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\glsenableentrycount
+&#x00A0;<br />\setacronymstyle{long-short}
+&#x00A0;<br />\newacronym{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newacronym{css}{CSS}{cascading&#x00A0;style&#x00A0;sheets}
+&#x00A0;<br />\newacronym{xml}{XML}{extensible&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newacronym{sql}{SQL}{structured&#x00A0;query&#x00A0;language}
+&#x00A0;<br />\newacronym{rdbms}{RDBMS}{relational&#x00A0;database&#x00A0;management&#x00A0;system}
+&#x00A0;<br />\newacronym{rdsms}{RDSMS}{relational&#x00A0;data&#x00A0;stream&#x00A0;management&#x00A0;system}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />These&#x00A0;entries&#x00A0;are&#x00A0;only&#x00A0;used&#x00A0;once:&#x00A0;\cgls{sql},&#x00A0;\cgls{rdbms},
+&#x00A0;<br />\cgls{xml}.&#x00A0;These&#x00A0;entries&#x00A0;are&#x00A0;used&#x00A0;multiple&#x00A0;times:
+&#x00A0;<br />\cgls{html},&#x00A0;\cgls{html},&#x00A0;\cgls{css},&#x00A0;\cgls{css},&#x00A0;\cgls{css},
+&#x00A0;<br />\cgls{rdsms},&#x00A0;\cgls{rdsms}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10855--><p class="nopar" > After a complete document build (<span
+class="cmtt-10">latex</span>, <span
+class="cmtt-10">latex</span>, <span
+class="cmtt-10">makeglossaries</span>, <span
+class="cmtt-10">latex</span>) the list of
+abbrevaitions only includes the entries HTML, CSS and RDSMS. The entries SQL,
+RDBMS and XML only have their long forms displayed and don&#8217;t have a&#x00A0;hyperlink.
+</p>
+<div class="center"
+>
+<!--l. 10861--><p class="noindent" >
+</p><!--l. 10861--><p class="noindent" >____________________________</p></div>
+<!--l. 10863--><p class="indent" > Remember that if you don&#8217;t like typing <span
+class="cmtt-10">\cgls </span>you can create a synonym. For
+example
+
+
+</p>
+ <div class="verbatim" id="verbatim-359">
+\let\ac\cgls
+</div>
+<!--l. 10867--><p class="nopar" >
+
+
+</p>
+<!--l. 10869--><p class="indent" > </div>
+</p><!--l. 10869--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">15. <a
+ id="sec:styles"></a>Glossary Styles</h2>
+</p><!--l. 10872--><p class="indent" > Glossaries vary from lists that simply contain a symbol with a terse description to lists of
+terms or phrases with lengthy descriptions. Some glossaries may have terms with associated
+symbols. Some may have hierarchical entries. There is therefore no single style that fits every
+type of glossary. The <span
+class="cmss-10">glossaries </span>package comes with a number of pre-defined glossary styles,
+described in <a
+href="#sec:predefinedstyles"><span
+class="tcrm-1000">&sect;</span>15.1 </a><a
+href="#sec:predefinedstyles">Predefined Styles<!--tex4ht:ref: sec:predefinedstyles --></a>. You can choose one of these that best suits your type of
+glossary or, if none of them suit your document, you can defined your own style (see <a
+href="#sec:newglossarystyle"><span
+class="tcrm-1000">&sect;</span>15.2
+</a><a
+href="#sec:newglossarystyle">Defining your own glossary style<!--tex4ht:ref: sec:newglossarystyle --></a>). There are some examples of glossary styles available at
+<a
+href="http://www.dickimaw-books.com/gallery/#glossaries" class="url" ><span
+class="cmtt-10">http://www.dickimaw-books.com/gallery/#glossaries</span></a>.
+</p><!--l. 10885--><p class="indent" > The glossary style can be set using the <span
+class="cmss-10">style</span><a
+ id="dx1-77001"></a> key in the optional argument to
+<span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-77002"></a> (<a
+href="#option1">Option&#x00A0;1</a>) or <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-77003"></a> (Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>) or using the
+command:
+</p><!--l. 10888--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setglossarystyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-77004"></a> <span
+class="cmtt-10">\setglossarystyle{</span>&#x27E8;<span
+class="cmitt-10">style-name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10890--><p class="noindent" >
+(before the glossary is displayed).
+</p><!--l. 10893--><p class="indent" > Some of the predefined glossary styles may also be set using the <span
+class="cmss-10">style</span><a
+ id="dx1-77005"></a> package option, it
+depends if the package in which they are defined is automatically loaded by the <span
+class="cmss-10">glossaries</span>
+package.
+</p><!--l. 10897--><p class="indent" > You can use the lorum ipsum dummy entries provided in the accompanying
+<span
+class="cmtt-10">example-glossaries-*.tex </span>files (described in <a
+href="#sec:lipsum"><span
+class="tcrm-1000">&sect;</span>1.3 </a><a
+href="#sec:lipsum">Dummy Entries for Testing<!--tex4ht:ref: sec:lipsum --></a>) to test the
+different styles.
+</p>
+<!--l. 10902--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">15.1 </span> <a
+ id="sec:predefinedstyles"></a>Predefined Styles</h3>
+<!--l. 10905--><p class="noindent" >The predefined styles can accommodate numbered level&#x00A0;0 (main) and level&#x00A0;1 entries. See the
+package options <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-78001"></a>, <span
+class="cmss-10">counterwithin</span><a
+ id="dx1-78002"></a> and <span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-78003"></a> described in <a
+href="#sec:pkgopts-printglos"><span
+class="tcrm-1000">&sect;</span>2.3 </a><a
+href="#sec:pkgopts-printglos">Glossary
+Appearance Options<!--tex4ht:ref: sec:pkgopts-printglos --></a>. There is a summary of available styles in <a
+href="#tab:styles">table&#x00A0;15.1</a>. You can view samples of
+all the predefined styles at <a
+href="http://www.dickimaw-books.com/gallery/glossaries-styles/" class="url" ><span
+class="cmtt-10">http://www.dickimaw-books.com/gallery/glossaries-styles/</span></a>.
+Note that <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> provides additional styles in the supplementary packages
+<span
+class="cmss-10">glossary-bookindex</span><a
+ id="dx1-78004"></a> and <span
+class="cmss-10">glossary-longnoloc</span><a
+ id="dx1-78005"></a>. See the <a
+href="#glo:glossaries-extra"><span
+class="cmss-10">glossaries-extra</span></a> manual for further
+details.
+</p><!--l. 10918--><p class="indent" > <div class="important" title="Important Note"> Note that the group styles (such as <span
+class="cmss-10">listgroup</span><a
+ id="dx1-78006"></a>) will have unexpected results if used with
+the <span
+class="cmss-10">sort=def</span><a
+ id="dx1-78007"></a> or <span
+class="cmss-10">sort=use</span><a
+ id="dx1-78008"></a> options. If you don&#8217;t sort your entries alphabetically, it&#8217;s
+best to set the <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-78009"></a> package option to prevent odd vertical gaps appearing.
+</div>
+</p><!--l. 10924--><p class="noindent" >
+</p><!--l. 10926--><p class="indent" > The group title is obtained using <span
+class="cmtt-10">\glsgetgrouptitle{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, which is described in <a
+href="#sec:newglossarystyle"><span
+class="tcrm-1000">&sect;</span>15.2
+</a><a
+href="#sec:newglossarystyle">Defining your own glossary style<!--tex4ht:ref: sec:newglossarystyle --></a>.
+</p>
+ <div class="table">
+
+
+<!--l. 10929--><p class="indent" > <a
+ id="tab:styles"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;15.1: </span><span
+class="content">Glossary Styles. An asterisk in the style name indicates anything that
+matches that doesn&#8217;t match any previously listed style (e.g.&#x00A0;<span
+class="cmtt-10">long3col* </span>matches
+<span
+class="cmss-10">long3col</span><a
+ id="dx1-78011"></a>, <span
+class="cmss-10">long3colheader</span><a
+ id="dx1-78012"></a>, <span
+class="cmss-10">long3colborder</span><a
+ id="dx1-78013"></a> and <span
+class="cmss-10">long3colheaderborder</span><a
+ id="dx1-78014"></a>). A maximum level of
+0 indicates a flat glossary (sub-entries are displayed in the same way as main entries).
+Where the maximum level is given as &#8212; there is no limit, but note that <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-78015"></a></a>
+(<a
+href="#option2">Option&#x00A0;2</a>) imposes a limit of 2 sub-levels. If the homograph column is checked, then
+the name is not displayed for sub-entries. If the symbol column is checked, then the
+symbol will be displayed.</span></div><!--tex4ht:label?: x1-780101 -->
+<div class="tabular"> <table id="TBL-9" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-9-1g"><col
+id="TBL-9-1" /><col
+id="TBL-9-2" /><col
+id="TBL-9-3" /><col
+id="TBL-9-4" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-1"
+class="td11"> <span
+class="cmbx-10">Style </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-2"
+class="td11"> <span
+class="cmbx-10">Maximum Level </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-3"
+class="td11"> <span
+class="cmbx-10">Homograph </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-1-4"
+class="td11"> <span
+class="cmbx-10">Symbol </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1"
+class="td11"> <span
+class="cmtt-10">listdotted </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-2-2"
+class="td11"> 0 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-2-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-2-4"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-9-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-3-1"
+class="td11"> <span
+class="cmtt-10">sublistdotted </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-3-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-3-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-3-4"
+class="td11"></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1"
+class="td11"> <span
+class="cmtt-10">list* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-4-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-4-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-4-4"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-9-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-5-1"
+class="td11"> <span
+class="cmtt-10">altlist* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-5-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-5-3"
+class="td11">
+<span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-5-4"
+class="td11"> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1"
+class="td11"> <span
+class="cmtt-10">long*3col* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-6-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-6-3"
+class="td11">
+<span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-6-4"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1"
+class="td11"> <span
+class="cmtt-10">long4col* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-7-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-7-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-7-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-1"
+class="td11"> <span
+class="cmtt-10">altlong*4col* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-8-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-8-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-8-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-9-1"
+class="td11"> <span
+class="cmtt-10">long* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-9-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-9-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-9-4"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-10-1"
+class="td11"> <span
+class="cmtt-10">super*3col* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-10-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-10-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-10-4"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-11-1"
+class="td11"> <span
+class="cmtt-10">super4col* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-11-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-11-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-11-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-12-1"
+class="td11"> <span
+class="cmtt-10">altsuper*4col* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-12-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-12-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-12-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-1"
+class="td11"> <span
+class="cmtt-10">super* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-13-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-13-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-13-4"
+class="td11"> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-14-1"
+class="td11"> <span
+class="cmtt-10">*index* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-14-2"
+class="td11"> 2 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-14-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-14-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-15-1"
+class="td11"> <span
+class="cmtt-10">treenoname* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-15-2"
+class="td11"> &#8212; </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-15-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-15-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-16-1"
+class="td11"> <span
+class="cmtt-10">*alttree* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-16-2"
+class="td11"> &#8212; </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-16-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-16-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-17-1"
+class="td11"> <span
+class="cmtt-10">*tree* </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-17-2"
+class="td11"> &#8212; </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-17-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-17-4"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-9-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-18-1"
+class="td11"> <span
+class="cmtt-10">inline </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-18-2"
+class="td11"> 1 </td><td style="white-space:nowrap; text-align:center;" id="TBL-9-18-3"
+class="td11"> <span
+class="pzdr-">&#x2713; </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-9-18-4"
+class="td11"> </td></tr></table></div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 10969--><p class="indent" > The tabular-like styles that allow multi-line descriptions and page lists use the length
+<span class="marginpar"><span
+class="cmtt-9">\glsdescwidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-78016"></a><span
+class="cmtt-10">\glsdescwidth </span>to set the width of the description column and the
+length <span class="marginpar"><span
+class="cmtt-9">\glspagelistwidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-78017"></a><span
+class="cmtt-10">\glspagelistwidth </span>to set the width of the page list
+column.<span class="footnote-mark"><a
+href="#fn1x15" id="fn1x15-bk"><sup class="textsuperscript">15.1</sup></a></span><a
+ id="x1-78018f1"></a>
+These will need to be changed using <span
+class="cmtt-10">\setlength </span>if the glossary is too wide. Note that the
+<span
+class="cmss-10">long4col</span><a
+ id="dx1-78022"></a> and <span
+class="cmss-10">super4col</span><a
+ id="dx1-78023"></a> styles (and their header and border variations) don&#8217;t use these lengths
+as they are designed for single line entries. Instead you should use the analogous
+<span
+class="cmss-10">altlong4col</span><a
+ id="dx1-78024"></a> and <span
+class="cmss-10">altsuper4col</span><a
+ id="dx1-78025"></a> styles. If you want to explicitly create a line-break within a
+multi-line description in a tabular-like style it&#8217;s better to use <span
+class="cmtt-10">\newline</span><a
+ id="dx1-78026"></a> instead of
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\\</span></span></span>.
+</p><!--l. 10987--><p class="indent" > <div class="important" title="Important Note"> Remember that a cell within a tabular-like environment can&#8217;t be broken across a page, so
+even if a tabular-like style, such as <span
+class="cmss-10">long</span><a
+ id="dx1-78027"></a>, allows multilined descriptions, you&#8217;ll probably
+encounter page-breaking problems if you have entries with long descriptions. You may want to
+consider using the <span
+class="cmss-10">alttree</span><a
+ id="dx1-78028"></a> style instead. </div>
+</p><!--l. 10993--><p class="noindent" >
+</p><!--l. 10995--><p class="indent" > Note that if you use the <span
+class="cmss-10">style</span><a
+ id="dx1-78029"></a> key in the optional argument to <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-78030"></a>
+(<a
+href="#option1">Option&#x00A0;1</a>) or <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-78031"></a> (Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>), it will override any previous style settings
+for the given glossary, so if, for example, you do
+
+
+</p>
+ <div class="verbatim" id="verbatim-360">
+\renewcommand*{\glsgroupskip}{}
+&#x00A0;<br />\printglossary[style=long]
+</div>
+<!--l. 11003--><p class="nopar" > then the new definition of <span
+class="cmtt-10">\glsgroupskip</span><a
+ id="dx1-78032"></a> will not have an affect for this glossary, as
+<span
+class="cmtt-10">\glsgroupskip </span>is redefined by <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">style=long</span></span></span>. Likewise, <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-78033"></a> will also override
+any previous style definitions, so, again
+
+
+</p>
+ <div class="verbatim" id="verbatim-361">
+\renewcommand*{\glsgroupskip}{}
+&#x00A0;<br />\setglossarystyle{long}
+</div>
+<!--l. 11011--><p class="nopar" > will reset <span
+class="cmtt-10">\glsgroupskip </span>back to its default definition for the named glossary style
+(<span
+class="cmss-10">long</span><a
+ id="dx1-78034"></a> in this case). If you want to modify the styles, either use <span
+class="cmtt-10">\newglossarystyle</span><a
+ id="dx1-78035"></a>
+(described in the next section) or make the modifications after <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-78036"></a>,
+e.g.:
+
+
+</p>
+ <div class="verbatim" id="verbatim-362">
+\setglossarystyle{long}
+&#x00A0;<br />\renewcommand*{\glsgroupskip}{}
+</div>
+<!--l. 11020--><p class="nopar" > As from version 3.03, you can now use the package option <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-78037"></a> to suppress the gap
+between groups for the default styles instead of redefining <span
+class="cmtt-10">\glsgroupskip</span>.
+</p><!--l. 11025--><p class="indent" > All the styles except for the three- and four-column styles and the <span
+class="cmss-10">listdotted</span><a
+ id="dx1-78038"></a> style use the
+command
+</p><!--l. 11027--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspostdescription</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-78039"></a> <span
+class="cmtt-10">\glspostdescription </span></div><hr>
+</p><!--l. 11029--><p class="noindent" >
+after the description. This simply displays a full stop by default. To eliminate this full
+stop (or replace it with something else, say, a comma) you will need to redefine
+<span
+class="cmtt-10">\glspostdescription </span>before the glossary is displayed. Alternatively, you can suppress it
+for a given entry by placing <span
+class="cmtt-10">\nopostdesc</span><a
+ id="dx1-78040"></a> in the entry&#8217;s description. Note that
+<span
+class="cmtt-10">\longnewglossaryentry</span><a
+ id="dx1-78041"></a> puts <span
+class="cmtt-10">\nopostdesc </span>at the end of the description. The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-78042"></a>
+package provides a starred version that doesn&#8217;t.
+</p><!--l. 11039--><p class="indent" > As from version 3.03 you can now use the package option <span
+class="cmss-10">nopostdot</span><a
+ id="dx1-78043"></a> to suppress this full
+stop. This is the better option if you want to use the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-78044"></a> package. The
+<span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-78045"></a> package provides some adjustments some of to the predefined styles
+listed here, allowing for greater flexibility. See the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-78046"></a> documentation for further
+details.
+</p>
+<!--l. 11047--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.1 </span> <a
+ id="sec:liststyles"></a>List Styles</h4>
+<!--l. 11050--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-list</span><a
+ id="dx1-79001"></a>. Since
+they all use the <span
+class="cmss-10">description</span><a
+ id="dx1-79002"></a><a
+ id="dx1-79003"></a> environment, they are governed by the same parameters
+as that environment. These styles all ignore the entry&#8217;s symbol. Note that these
+styles will automatically be available unless you use the <span
+class="cmss-10">nolist</span><a
+ id="dx1-79004"></a> or <span
+class="cmss-10">nostyles</span><a
+ id="dx1-79005"></a> package
+options.
+</p><!--l. 11057--><p class="indent" > <div class="important" title="Important Note"> Note that, except for the <span
+class="cmss-10">listdotted</span><a
+ id="dx1-79006"></a> style, these list styles are incompatible with
+<span
+class="cmss-10">classicthesis</span><a
+ id="dx1-79007"></a>. They may also be incompatible with other classes or packages that modify the
+<span
+class="cmss-10">description</span><a
+ id="dx1-79008"></a><a
+ id="dx1-79009"></a> environment. </div>
+</p><!--l. 11062--><p class="noindent" >
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">list</span> </dt><dd
+class="description">The <span
+class="cmss-10">list</span><a
+ id="dx1-79010"></a> style uses the <span
+class="cmss-10">description</span><a
+ id="dx1-79011"></a><a
+ id="dx1-79012"></a> environment. The entry name is placed in the
+ optional argument of the <span
+class="cmtt-10">\item</span><a
+ id="dx1-79013"></a> command (so it will usually appear in bold by
+ default). The description follows, and then the associated <a
+href="#glo:numberlist">number list<a
+ id="dx1-79014"></a></a> for that
+ entry. The symbol is ignored. If the entry has child entries, the description and
+ number list follows (but not the name) for each child entry. Groups are separated
+ using <span
+class="cmtt-10">\indexspace</span><a
+ id="dx1-79015"></a>.
+
+
+ <!--l. 11073--><p class="noindent" >The closest matching non-list style is the <span
+class="cmss-10">index</span><a
+ id="dx1-79016"></a> style.
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">listgroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">listgroup</span><a
+ id="dx1-79017"></a> style is like <span
+class="cmss-10">list</span><a
+ id="dx1-79018"></a> but the glossary groups have headings obtained
+ using <span
+class="cmtt-10">\glsgetgrouptitle{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, which is described in <a
+href="#sec:newglossarystyle"><span
+class="tcrm-1000">&sect;</span>15.2 </a><a
+href="#sec:newglossarystyle">Defining your own
+ glossary style<!--tex4ht:ref: sec:newglossarystyle --></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">listhypergroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-79019"></a> style is like <span
+class="cmss-10">listgroup</span><a
+ id="dx1-79020"></a> but has a navigation line
+ at the start of the glossary with links to each group that is present in the
+ glossary. This requires an additional run through <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;to ensure the group
+ information is up to date. In the navigation line, each group is separated
+ by
+ <!--l. 11086--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glshypernavsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-79021"></a> <span
+class="cmtt-10">\glshypernavsep </span></div><hr>
+ </p><!--l. 11088--><p class="noindent" >
+ which defaults to a vertical bar with a space on either side. For example, to simply have
+ a space separating each group, do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-363">
+ \renewcommand*{\glshypernavsep}{\space}
+</div>
+ <!--l. 11093--><p class="nopar" >
+ </p><!--l. 11095--><p class="noindent" >Note that the hyper-navigation line is now (as from version 1.14) set inside the optional
+ argument to <span
+class="cmtt-10">\item</span><a
+ id="dx1-79022"></a> instead of after it to prevent a spurious space at the start. This can
+ cause a problem if the navigation line is too long. As from v4.22, if you need to adjust
+ this, you can redefine
+ </p><!--l. 11100--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistnavigationitem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-79023"></a> <span
+class="cmtt-10">\glslistnavigationitem{</span>&#x27E8;<span
+class="cmitt-10">navigation line</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 11102--><p class="noindent" >
+ The default definition is <span
+class="cmtt-10">\item[</span>&#x27E8;<span
+class="cmti-10">navigation line</span>&#x27E9;<span
+class="cmtt-10">] </span>but may be redefined independently of
+ setting the style. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-364">
+ \renewcommand*{\glslistnavigationitem}[1]{\item&#x00A0;\textbf{#1}}
+</div>
+ <!--l. 11107--><p class="nopar" >
+ </p><!--l. 11109--><p class="noindent" >You may prefer to use the tree-like styles, such as <span
+class="cmss-10">treehypergroup</span><a
+ id="dx1-79024"></a> instead.
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">altlist</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlist</span><a
+ id="dx1-79025"></a> style is like <span
+class="cmss-10">list</span><a
+ id="dx1-79026"></a> but the description starts on the line following the name.
+ (As with the <span
+class="cmss-10">list</span><a
+ id="dx1-79027"></a> style, the symbol is ignored.) Each child entry starts a new
+ line, but as with the <span
+class="cmss-10">list</span><a
+ id="dx1-79028"></a> style, the name associated with each child entry is
+ ignored.
+ <!--l. 11118--><p class="noindent" >The closest matching non-list style is the <span
+class="cmss-10">index</span><a
+ id="dx1-79029"></a> style with the following adjustment:
+
+
+</p>
+ <div class="verbatim" id="verbatim-365">
+ \renewcommand{\glstreepredesc}{%
+ &#x00A0;<br />&#x00A0;\glstreeitem\parindent\hangindent}
+</div>
+ <!--l. 11123--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">altlistgroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlistgroup</span><a
+ id="dx1-79030"></a> style is like <span
+class="cmss-10">altlist</span><a
+ id="dx1-79031"></a> but the glossary groups have headings.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlisthypergroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlisthypergroup</span><a
+ id="dx1-79032"></a> style is like <span
+class="cmss-10">altlistgroup</span><a
+ id="dx1-79033"></a> but has a set of links to the
+ glossary groups. The navigation line is the same as that for <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-79034"></a>, described
+ above.
+ </dd><dt class="description">
+<span
+class="cmbx-10">listdotted</span> </dt><dd
+class="description">This style uses the <span
+class="cmss-10">description</span><a
+ id="dx1-79035"></a><a
+ id="dx1-79036"></a>
+ environment.<span class="footnote-mark"><a
+href="#fn2x15" id="fn2x15-bk"><sup class="textsuperscript">15.2</sup></a></span><a
+ id="x1-79037f2"></a>
+ Each entry starts with <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\item[]</span></span></span>, followed by the name followed by a dotted line,
+ followed by the description. Note that this style ignores both the <a
+href="#glo:numberlist">number list<a
+ id="dx1-79038"></a></a> and the
+ symbol. The length
+ <!--l. 11139--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistdottedwidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-79039"></a> <span
+class="cmtt-10">\glslistdottedwidth </span></div><hr>
+ </p><!--l. 11141--><p class="noindent" >
+ governs where the description should start. This is a flat style, so child entries are
+ formatted in the same way as the parent entries.
+ </p><!--l. 11145--><p class="noindent" >A non-list alternative is to use the <span
+class="cmss-10">index</span><a
+ id="dx1-79040"></a> style with
+
+
+</p>
+ <div class="verbatim" id="verbatim-366">
+ \renewcommand{\glstreepredesc}{\dotfill}
+ &#x00A0;<br />\renewcommand{\glstreechildpredesc}{\dotfill}
+</div>
+ <!--l. 11150--><p class="nopar" > Note that this doesn&#8217;t use <span
+class="cmtt-10">\glslistdottedwidth </span>and causes the description
+ to be flush-right and will display the symbol, if provided. (It also doesn&#8217;t
+ suppress the number list<a
+ id="dx1-79041"></a>, but that can be achieved with the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-79042"></a>
+ option.)
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">sublistdotted</span> </dt><dd
+class="description">This is a variation on the <span
+class="cmss-10">listdotted</span><a
+ id="dx1-79043"></a> style designed for hierarchical glossaries.
+ The main entries have just the name displayed. The sub entries are displayed in the
+ same manner as <span
+class="cmss-10">listdotted</span><a
+ id="dx1-79044"></a>. Unlike the <span
+class="cmss-10">listdotted</span><a
+ id="dx1-79045"></a> style, this style is incompatible with
+ <span
+class="cmss-10">classicthesis</span><a
+ id="dx1-79046"></a>.</dd></dl>
+<!--l. 11166--><p class="noindent" >
+</p>
+<!--l. 11166--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.2 </span> <a
+ id="sec:longstyles"></a>Longtable Styles</h4>
+<!--l. 11169--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-80001"></a>. Since they all
+use the <span
+class="cmss-10">longtable</span><a
+ id="dx1-80002"></a><a
+ id="dx1-80003"></a> environment, they are governed by the same parameters as that
+environment. Note that these styles will automatically be available unless you use the
+<span
+class="cmss-10">nolong</span><a
+ id="dx1-80004"></a> or <span
+class="cmss-10">nostyles</span><a
+ id="dx1-80005"></a> package options. These styles fully justify the description and page
+list columns. If you want ragged right formatting instead, use the analogous styles
+described in <a
+href="#sec:longraggedstyles"><span
+class="tcrm-1000">&sect;</span>15.1.3 </a><a
+href="#sec:longraggedstyles">Longtable Styles (Ragged Right)<!--tex4ht:ref: sec:longraggedstyles --></a>. If you want to incorporate rules
+from the <span
+class="cmss-10">booktabs</span><a
+ id="dx1-80006"></a> package, try the styles described in <a
+href="#sec:longbooktabsstyles"><span
+class="tcrm-1000">&sect;</span>15.1.4 </a><a
+href="#sec:longbooktabsstyles">Longtable Styles
+(<span
+class="cmss-10">booktabs</span>)<!--tex4ht:ref: sec:longbooktabsstyles --></a>.
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">long</span> </dt><dd
+class="description">The <span
+class="cmss-10">long</span><a
+ id="dx1-80007"></a> style uses the <span
+class="cmss-10">longtable</span><a
+ id="dx1-80008"></a><a
+ id="dx1-80009"></a> environment (defined by the <span
+class="cmss-10">longtable</span><a
+ id="dx1-80010"></a> package).
+ It has two columns: the first column contains the entry&#8217;s name and the second
+ column contains the description followed by the <a
+href="#glo:numberlist">number list<a
+ id="dx1-80011"></a></a>. The entry&#8217;s symbol is
+ ignored. Sub groups are separated with a blank row. The width of the first column
+ is governed by the widest entry in that column. The width of the second column
+ is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-80012"></a>. Child entries have a similar format to
+ the parent entries except that their name is suppressed.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">longborder</span><a
+ id="dx1-80013"></a> style is like <span
+class="cmss-10">long</span><a
+ id="dx1-80014"></a> but has horizontal and vertical lines around
+ it.
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">longheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">longheader</span><a
+ id="dx1-80015"></a> style is like <span
+class="cmss-10">long</span><a
+ id="dx1-80016"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">longheaderborder</span><a
+ id="dx1-80017"></a> style is like <span
+class="cmss-10">longheader</span><a
+ id="dx1-80018"></a> but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long3col</span> </dt><dd
+class="description">The <span
+class="cmss-10">long3col</span><a
+ id="dx1-80019"></a> style is like <span
+class="cmss-10">long</span><a
+ id="dx1-80020"></a> but has three columns. The first column contains
+ the entry&#8217;s name, the second column contains the description and the third column
+ contains the <a
+href="#glo:numberlist">number list<a
+ id="dx1-80021"></a></a>. The entry&#8217;s symbol is ignored. The width of the first
+ column is governed by the widest entry in that column, the width of the second
+ column is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-80022"></a>, and the width of the third
+ column is governed by the length <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-80023"></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long3colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">long3colborder</span><a
+ id="dx1-80024"></a> style is like the <span
+class="cmss-10">long3col</span><a
+ id="dx1-80025"></a> style but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long3colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">long3colheader</span><a
+ id="dx1-80026"></a> style is like <span
+class="cmss-10">long3col</span><a
+ id="dx1-80027"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long3colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">long3colheaderborder</span><a
+ id="dx1-80028"></a> style is like <span
+class="cmss-10">long3colheader</span><a
+ id="dx1-80029"></a> but has
+ horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long4col</span> </dt><dd
+class="description">The <span
+class="cmss-10">long4col</span><a
+ id="dx1-80030"></a> style is like <span
+class="cmss-10">long3col</span><a
+ id="dx1-80031"></a> but has an additional column in which
+ the entry&#8217;s associated symbol appears. This style is used for brief single line
+ descriptions. The column widths are governed by the widest entry in the given
+ column. Use <span
+class="cmss-10">altlong4col</span><a
+ id="dx1-80032"></a> for multi-line descriptions.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long4colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">long4colborder</span><a
+ id="dx1-80033"></a> style is like the <span
+class="cmss-10">long4col</span><a
+ id="dx1-80034"></a> style but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long4colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">long4colheader</span><a
+ id="dx1-80035"></a> style is like <span
+class="cmss-10">long4col</span><a
+ id="dx1-80036"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">long4colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">long4colheaderborder</span><a
+ id="dx1-80037"></a> style is like <span
+class="cmss-10">long4colheader</span><a
+ id="dx1-80038"></a> but has
+ horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlong4col</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlong4col</span><a
+ id="dx1-80039"></a> style is like <span
+class="cmss-10">long4col</span><a
+ id="dx1-80040"></a> but allows multi-line descriptions
+ and page lists. The width of the description column is governed by the length
+ <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-80041"></a> and the width of the page list column is governed by the length
+ <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-80042"></a>. The widths of the name and symbol columns are governed
+ by the widest entry in the given column.
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlong4colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlong4colborder</span><a
+ id="dx1-80043"></a> style is like the <span
+class="cmss-10">long4colborder</span><a
+ id="dx1-80044"></a> but allows
+ multi-line descriptions and page lists.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlong4colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlong4colheader</span><a
+ id="dx1-80045"></a> style is like <span
+class="cmss-10">long4colheader</span><a
+ id="dx1-80046"></a> but allows
+ multi-line descriptions and page lists.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlong4colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlong4colheaderborder</span><a
+ id="dx1-80047"></a> style is like
+ <span
+class="cmss-10">long4colheaderborder</span><a
+ id="dx1-80048"></a> but allows multi-line descriptions and page lists.</dd></dl>
+<!--l. 11263--><p class="noindent" >
+</p>
+<!--l. 11263--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.3 </span> <a
+ id="sec:longraggedstyles"></a>Longtable Styles (Ragged Right)</h4>
+<!--l. 11266--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-longragged</span><a
+ id="dx1-81001"></a>. These
+styles are analogous to those defined in <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-81002"></a> but the multiline columns are left
+justified instead of fully justified. Since these styles all use the <span
+class="cmss-10">longtable</span><a
+ id="dx1-81003"></a><a
+ id="dx1-81004"></a> environment, they are
+governed by the same parameters as that environment. The <span
+class="cmss-10">glossary-longragged</span><a
+ id="dx1-81005"></a> package
+additionally requires the <span
+class="cmss-10">array</span><a
+ id="dx1-81006"></a> package. Note that these styles will only be available if you
+explicitly load <span
+class="cmss-10">glossary-longragged</span><a
+ id="dx1-81007"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-367">
+\usepackage{glossaries}
+&#x00A0;<br />\usepackage{glossary-longragged}
+</div>
+<!--l. 11278--><p class="nopar" > Note that you can&#8217;t set these styles using the <span
+class="cmss-10">style</span><a
+ id="dx1-81008"></a> package option since the styles aren&#8217;t
+defined until after the <span
+class="cmss-10">glossaries </span>package has been loaded. If you want to incorporate rules
+from the <span
+class="cmss-10">booktabs</span><a
+ id="dx1-81009"></a> package, try the styles described in <a
+href="#sec:longbooktabsstyles"><span
+class="tcrm-1000">&sect;</span>15.1.4 </a><a
+href="#sec:longbooktabsstyles">Longtable Styles
+(<span
+class="cmss-10">booktabs</span>)<!--tex4ht:ref: sec:longbooktabsstyles --></a>.
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">longragged</span> </dt><dd
+class="description">The <span
+class="cmss-10">longragged</span><a
+ id="dx1-81010"></a> style has two columns: the first column contains the entry&#8217;s
+ name and the second column contains the (left-justified) description followed by
+ the <a
+href="#glo:numberlist">number list<a
+ id="dx1-81011"></a></a>. The entry&#8217;s symbol is ignored. Sub groups are separated with a
+ blank row. The width of the first column is governed by the widest entry in that
+ column. The width of the second column is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-81012"></a>.
+ Child entries have a similar format to the parent entries except that their name
+ is suppressed.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longraggedborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">longraggedborder</span><a
+ id="dx1-81013"></a> style is like <span
+class="cmss-10">longragged</span><a
+ id="dx1-81014"></a> but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longraggedheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">longraggedheader</span><a
+ id="dx1-81015"></a> style is like <span
+class="cmss-10">longragged</span><a
+ id="dx1-81016"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longraggedheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">longraggedheaderborder</span><a
+ id="dx1-81017"></a> style is like <span
+class="cmss-10">longraggedheader</span><a
+ id="dx1-81018"></a>
+ but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longragged3col</span> </dt><dd
+class="description">The <span
+class="cmss-10">longragged3col</span><a
+ id="dx1-81019"></a> style is like <span
+class="cmss-10">longragged</span><a
+ id="dx1-81020"></a> but has three columns.
+ The first column contains the entry&#8217;s name, the second column contains the (left
+ justified) description and the third column contains the (left justified) <a
+href="#glo:numberlist">number
+ list<a
+ id="dx1-81021"></a></a>. The entry&#8217;s symbol is ignored. The width of the first column is governed by
+ the widest entry in that column, the width of the second column is governed by
+ the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-81022"></a>, and the width of the third column is governed by the
+ length <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-81023"></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longragged3colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">longragged3colborder</span><a
+ id="dx1-81024"></a> style is like the <span
+class="cmss-10">longragged3col</span><a
+ id="dx1-81025"></a> style
+ but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">longragged3colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">longragged3colheader</span><a
+ id="dx1-81026"></a> style is like <span
+class="cmss-10">longragged3col</span><a
+ id="dx1-81027"></a> but has
+ a header row.
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">longragged3colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">longragged3colheaderborder</span><a
+ id="dx1-81028"></a> style is like
+ <span
+class="cmss-10">longragged3colheader</span><a
+ id="dx1-81029"></a> but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlongragged4col</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlongragged4col</span><a
+ id="dx1-81030"></a> style is like <span
+class="cmss-10">longragged3col</span><a
+ id="dx1-81031"></a> but has an
+ additional column in which the entry&#8217;s associated symbol appears. The width of
+ the description column is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-81032"></a> and the width of
+ the page list column is governed by the length <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-81033"></a>. The widths
+ of the name and symbol columns are governed by the widest entry in the given
+ column.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlongragged4colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlongragged4colborder</span><a
+ id="dx1-81034"></a> style is like the
+ <span
+class="cmss-10">altlongragged4col</span><a
+ id="dx1-81035"></a> but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlongragged4colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlongragged4colheader</span><a
+ id="dx1-81036"></a> style is like <span
+class="cmss-10">altlongragged4col</span><a
+ id="dx1-81037"></a>
+ but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altlongragged4colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altlongragged4colheaderborder</span><a
+ id="dx1-81038"></a> style is like
+ <span
+class="cmss-10">altlongragged4colheader</span><a
+ id="dx1-81039"></a> but has horizontal and vertical lines around it.
+ </dd></dl>
+<!--l. 11351--><p class="noindent" >
+</p>
+<!--l. 11351--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.4 </span> <a
+ id="sec:longbooktabsstyles"></a>Longtable Styles (<span
+class="cmss-10">booktabs</span>)</h4>
+<!--l. 11354--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-longbooktabs</span><a
+ id="dx1-82001"></a>.
+</p><!--l. 11357--><p class="indent" > Since these styles all use the <span
+class="cmss-10">longtable</span><a
+ id="dx1-82002"></a><a
+ id="dx1-82003"></a> environment, they are governed by the same
+parameters as that environment. The <span
+class="cmss-10">glossary-longbooktabs</span><a
+ id="dx1-82004"></a> package automatically loads the
+<span
+class="cmss-10">glossary-long</span><a
+ id="dx1-82005"></a> (<a
+href="#sec:longstyles"><span
+class="tcrm-1000">&sect;</span>15.1.2 </a><a
+href="#sec:longstyles">Longtable Styles<!--tex4ht:ref: sec:longstyles --></a>) and <span
+class="cmss-10">glossary-longragged</span><a
+ id="dx1-82006"></a> (<a
+href="#sec:longraggedstyles"><span
+class="tcrm-1000">&sect;</span>15.1.3 </a><a
+href="#sec:longraggedstyles">Longtable Styles
+(Ragged Right)<!--tex4ht:ref: sec:longraggedstyles --></a>) packages. Note that these styles will only be available if you explicitly load
+<span
+class="cmss-10">glossary-longbooktabs</span><a
+ id="dx1-82007"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-368">
+\usepackage{glossaries}
+&#x00A0;<br />\usepackage{glossary-longbooktabs}
+</div>
+<!--l. 11368--><p class="nopar" > Note that you can&#8217;t set these styles using the <span
+class="cmss-10">style</span><a
+ id="dx1-82008"></a> package option since the styles aren&#8217;t
+defined until after the <span
+class="cmss-10">glossaries </span>package has been loaded.
+</p><!--l. 11373--><p class="indent" > These styles are similar to the &#8220;header&#8221; styles in the <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-82009"></a> and <span
+class="cmss-10">glossary-ragged</span><a
+ id="dx1-82010"></a>
+packages, but they add the rules provided by the <span
+class="cmss-10">booktabs</span><a
+ id="dx1-82011"></a> package, <span
+class="cmtt-10">\toprule</span><a
+ id="dx1-82012"></a>, <span
+class="cmtt-10">\midrule</span><a
+ id="dx1-82013"></a> and
+<span
+class="cmtt-10">\bottomrule</span><a
+ id="dx1-82014"></a>. Additionally these styles patch the <span
+class="cmss-10">longtable</span><a
+ id="dx1-82015"></a><a
+ id="dx1-82016"></a> environment to check for instances
+of the group skip occurring at a page break. If you don&#8217;t want this patch to affect any other
+use of <span
+class="cmss-10">longtable</span><a
+ id="dx1-82017"></a><a
+ id="dx1-82018"></a> in your document, you can scope the effect by only setting the style through
+the <span
+class="cmss-10">style</span><a
+ id="dx1-82019"></a> key in the optional argument of <span
+class="cmtt-10">\printglossary</span>. (The <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-82020"></a> package option
+is checked by these styles.)
+</p><!--l. 11386--><p class="indent" > Alternatively, you can restore the original <span
+class="cmss-10">longtable</span><a
+ id="dx1-82021"></a><a
+ id="dx1-82022"></a> behaviour with:
+</p><!--l. 11388--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsrestoreLToutput</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-82023"></a> <span
+class="cmtt-10">\glsrestoreLToutput </span></div><hr>
+</p><!--l. 11390--><p class="noindent" >
+For more information about the patch, see the documented code (<span
+class="cmtt-10">glossaries-code.pdf</span>).
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">long-booktabs</span><a
+ id="dx1-82024"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">longheader</span><a
+ id="dx1-82025"></a> style but adds rules above and
+ below the header (<span
+class="cmtt-10">\toprule </span>and <span
+class="cmtt-10">\midrule</span>) and inserts a rule at the bottom of
+ the table (<span
+class="cmtt-10">\bottomrule</span>).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">long3col-booktabs</span><a
+ id="dx1-82026"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">long3colheader</span><a
+ id="dx1-82027"></a> style but adds rules as
+ per <span
+class="cmss-10">long-booktabs</span><a
+ id="dx1-82028"></a>.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">long4col-booktabs</span><a
+ id="dx1-82029"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">long4colheader</span><a
+ id="dx1-82030"></a> style but adds rules as
+ above.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">altlong4col-booktabs</span><a
+ id="dx1-82031"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">altlong4colheader</span><a
+ id="dx1-82032"></a> style but adds rules
+ as above.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">longragged-booktabs</span><a
+ id="dx1-82033"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">longraggedheader</span><a
+ id="dx1-82034"></a> style but adds rules
+ as above.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">longragged3col-booktabs</span><a
+ id="dx1-82035"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">longragged3colheader</span><a
+ id="dx1-82036"></a> style but
+ adds rules as above.
+
+
+ </dd><dt class="description">
+<span
+class="cmssbx-10">altlongragged4col-booktabs</span><a
+ id="dx1-82037"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">altlongragged4colheader</span><a
+ id="dx1-82038"></a> style
+ but adds rules as above.
+ </dd></dl>
+<!--l. 11421--><p class="noindent" >
+</p>
+<!--l. 11421--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.5 </span> <a
+ id="sec:superstyles"></a>Supertabular Styles</h4>
+<!--l. 11424--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-super</span><a
+ id="dx1-83001"></a>.
+Since they all use the <span
+class="cmss-10">supertabular</span><a
+ id="dx1-83002"></a><a
+ id="dx1-83003"></a> environment, they are governed by the same
+parameters as that environment. Note that these styles will automatically be available
+unless you use the <span
+class="cmss-10">nosuper</span><a
+ id="dx1-83004"></a> or <span
+class="cmss-10">nostyles</span><a
+ id="dx1-83005"></a> package options. In general, the <span
+class="cmss-10">longtable</span><a
+ id="dx1-83006"></a><a
+ id="dx1-83007"></a>
+environment is better, but there are some circumstances where it is better to use
+<span
+class="cmss-10">supertabular</span><a
+ id="dx1-83008"></a><a
+ id="dx1-83009"></a>.<span class="footnote-mark"><a
+href="#fn3x15" id="fn3x15-bk"><sup class="textsuperscript">15.3</sup></a></span><a
+ id="x1-83010f3"></a>
+These styles fully justify the description and page list columns. If you want ragged right
+formatting instead, use the analogous styles described in <a
+href="#sec:superraggedstyles"><span
+class="tcrm-1000">&sect;</span>15.1.6 </a><a
+href="#sec:superraggedstyles">Supertabular Styles (Ragged
+Right)<!--tex4ht:ref: sec:superraggedstyles --></a>.
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">super</span> </dt><dd
+class="description">The <span
+class="cmss-10">super</span><a
+ id="dx1-83012"></a> style uses the <span
+class="cmss-10">supertabular</span><a
+ id="dx1-83013"></a><a
+ id="dx1-83014"></a> environment (defined by the <span
+class="cmss-10">supertabular</span><a
+ id="dx1-83015"></a>
+ package). It has two columns: the first column contains the entry&#8217;s name and the
+ second column contains the description followed by the <a
+href="#glo:numberlist">number list<a
+ id="dx1-83016"></a></a>. The entry&#8217;s
+ symbol is ignored. Sub groups are separated with a blank row. The width of the
+ first column is governed by the widest entry in that column. The width of the
+ second column is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-83017"></a>. Child entries have a
+ similar format to the parent entries except that their name is suppressed.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">superborder</span><a
+ id="dx1-83018"></a> style is like <span
+class="cmss-10">super</span><a
+ id="dx1-83019"></a> but has horizontal and vertical lines
+ around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">superheader</span><a
+ id="dx1-83020"></a> style is like <span
+class="cmss-10">super</span><a
+ id="dx1-83021"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">superheaderborder</span><a
+ id="dx1-83022"></a> style is like <span
+class="cmss-10">superheader</span><a
+ id="dx1-83023"></a> but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super3col</span> </dt><dd
+class="description">The <span
+class="cmss-10">super3col</span><a
+ id="dx1-83024"></a> style is like <span
+class="cmss-10">super</span><a
+ id="dx1-83025"></a> but has three columns. The first column
+ contains the entry&#8217;s name, the second column contains the description and the
+ third column contains the <a
+href="#glo:numberlist">number list<a
+ id="dx1-83026"></a></a>. The entry&#8217;s symbol is ignored. The width
+ of the first column is governed by the widest entry in that column. The width of
+ the second column is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-83027"></a>. The width of the
+ third column is governed by the length <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-83028"></a>.
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">super3colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">super3colborder</span><a
+ id="dx1-83029"></a> style is like the <span
+class="cmss-10">super3col</span><a
+ id="dx1-83030"></a> style but has
+ horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super3colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">super3colheader</span><a
+ id="dx1-83031"></a> style is like <span
+class="cmss-10">super3col</span><a
+ id="dx1-83032"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super3colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">super3colheaderborder</span><a
+ id="dx1-83033"></a> style is like the <span
+class="cmss-10">super3colheader</span><a
+ id="dx1-83034"></a>
+ style but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super4col</span> </dt><dd
+class="description">The <span
+class="cmss-10">super4col</span><a
+ id="dx1-83035"></a> style is like <span
+class="cmss-10">super3col</span><a
+ id="dx1-83036"></a> but has an additional column in which
+ the entry&#8217;s associated symbol appears. This style is designed for entries with brief
+ single line descriptions. The column widths are governed by the widest entry in
+ the given column. Use <span
+class="cmss-10">altsuper4col</span><a
+ id="dx1-83037"></a> for multi-line descriptions.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super4colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">super4colborder</span><a
+ id="dx1-83038"></a> style is like the <span
+class="cmss-10">super4col</span><a
+ id="dx1-83039"></a> style but has
+ horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super4colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">super4colheader</span><a
+ id="dx1-83040"></a> style is like <span
+class="cmss-10">super4col</span><a
+ id="dx1-83041"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">super4colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">super4colheaderborder</span><a
+ id="dx1-83042"></a> style is like the <span
+class="cmss-10">super4colheader</span><a
+ id="dx1-83043"></a>
+ style but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuper4col</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuper4col</span><a
+ id="dx1-83044"></a> style is like <span
+class="cmss-10">super4col</span><a
+ id="dx1-83045"></a> but allows multi-line descriptions
+ and page lists. The width of the description column is governed by the length
+ <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-83046"></a> and the width of the page list column is governed by the length
+ <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-83047"></a>. The width of the name and symbol columns is governed by
+ the widest entry in the given column.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuper4colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuper4colborder</span><a
+ id="dx1-83048"></a> style is like the <span
+class="cmss-10">super4colborder</span><a
+ id="dx1-83049"></a> style but
+ allows multi-line descriptions and page lists.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuper4colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuper4colheader</span><a
+ id="dx1-83050"></a> style is like <span
+class="cmss-10">super4colheader</span><a
+ id="dx1-83051"></a> but allows
+ multi-line descriptions and page lists.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuper4colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuper4colheaderborder</span><a
+ id="dx1-83052"></a> style is like
+ <span
+class="cmss-10">super4colheaderborder</span><a
+ id="dx1-83053"></a> but allows multi-line descriptions and page lists.</dd></dl>
+
+
+<!--l. 11520--><p class="noindent" >
+</p>
+<!--l. 11520--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.6 </span> <a
+ id="sec:superraggedstyles"></a>Supertabular Styles (Ragged Right)</h4>
+<!--l. 11523--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-superragged</span><a
+ id="dx1-84001"></a>. These
+styles are analogous to those defined in <span
+class="cmss-10">glossary-super</span><a
+ id="dx1-84002"></a> but the multiline columns are left
+justified instead of fully justified. Since these styles all use the <span
+class="cmss-10">supertabular</span><a
+ id="dx1-84003"></a><a
+ id="dx1-84004"></a> environment, they
+are governed by the same parameters as that environment. The <span
+class="cmss-10">glossary-superragged</span><a
+ id="dx1-84005"></a> package
+additionally requires the <span
+class="cmss-10">array</span><a
+ id="dx1-84006"></a> package. Note that these styles will only be available if you
+explicitly load <span
+class="cmss-10">glossary-superragged</span><a
+ id="dx1-84007"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-369">
+\usepackage{glossaries}
+&#x00A0;<br />\usepackage{glossary-superragged}
+</div>
+<!--l. 11535--><p class="nopar" > Note that you can&#8217;t set these styles using the <span
+class="cmss-10">style</span><a
+ id="dx1-84008"></a> package option since the styles aren&#8217;t
+defined until after the <span
+class="cmss-10">glossaries </span>package has been loaded.
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">superragged</span> </dt><dd
+class="description">The <span
+class="cmss-10">superragged</span><a
+ id="dx1-84009"></a> style uses the <span
+class="cmss-10">supertabular</span><a
+ id="dx1-84010"></a><a
+ id="dx1-84011"></a> environment (defined by the
+ <span
+class="cmss-10">supertabular</span><a
+ id="dx1-84012"></a> package). It has two columns: the first column contains the entry&#8217;s
+ name and the second column contains the (left justified) description followed by
+ the <a
+href="#glo:numberlist">number list<a
+ id="dx1-84013"></a></a>. The entry&#8217;s symbol is ignored. Sub groups are separated with a
+ blank row. The width of the first column is governed by the widest entry in that
+ column. The width of the second column is governed by the length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-84014"></a>.
+ Child entries have a similar format to the parent entries except that their name
+ is suppressed.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superraggedborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">superraggedborder</span><a
+ id="dx1-84015"></a> style is like <span
+class="cmss-10">superragged</span><a
+ id="dx1-84016"></a> but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superraggedheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">superraggedheader</span><a
+ id="dx1-84017"></a> style is like <span
+class="cmss-10">superragged</span><a
+ id="dx1-84018"></a> but has a header
+ row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superraggedheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">superraggedheaderborder</span><a
+ id="dx1-84019"></a> style is like
+ <span
+class="cmss-10">superraggedheader</span><a
+ id="dx1-84020"></a> but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superragged3col</span> </dt><dd
+class="description">The <span
+class="cmss-10">superragged3col</span><a
+ id="dx1-84021"></a> style is like <span
+class="cmss-10">superragged</span><a
+ id="dx1-84022"></a> but has three columns.
+ The first column contains the entry&#8217;s name, the second column contains the (left
+ justified) description and the third column contains the (left justified) <a
+href="#glo:numberlist">number list<a
+ id="dx1-84023"></a></a>.
+ The entry&#8217;s symbol is ignored. The width of the first column is governed by the
+ widest entry in that column. The width of the second column is governed by the
+ length <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-84024"></a>. The width of the third column is governed by the length
+ <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-84025"></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superragged3colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">superragged3colborder</span><a
+ id="dx1-84026"></a> style is like the <span
+class="cmss-10">superragged3col</span><a
+ id="dx1-84027"></a>
+ style but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">superragged3colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">superragged3colheader</span><a
+ id="dx1-84028"></a> style is like <span
+class="cmss-10">superragged3col</span><a
+ id="dx1-84029"></a> but
+ has a header row.
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">superragged3colheaderborder</span> </dt><dd
+class="description">The
+ <span
+class="cmss-10">superragged3colheaderborder</span><a
+ id="dx1-84030"></a> style is like <span
+class="cmss-10">superragged3colheader</span><a
+ id="dx1-84031"></a> but has horizontal
+ and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuperragged4col</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuperragged4col</span><a
+ id="dx1-84032"></a> style is like <span
+class="cmss-10">superragged3col</span><a
+ id="dx1-84033"></a> but has an
+ additional column in which the entry&#8217;s associated symbol appears. The column
+ widths for the name and symbol column are governed by the widest entry in the
+ given column.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuperragged4colborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuperragged4colborder</span><a
+ id="dx1-84034"></a> style is like the
+ <span
+class="cmss-10">altsuperragged4col</span><a
+ id="dx1-84035"></a> style but has horizontal and vertical lines around it.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuperragged4colheader</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuperragged4colheader</span><a
+ id="dx1-84036"></a> style is like
+ <span
+class="cmss-10">altsuperragged4col</span><a
+ id="dx1-84037"></a> but has a header row.
+ </dd><dt class="description">
+<span
+class="cmbx-10">altsuperragged4colheaderborder</span> </dt><dd
+class="description">The <span
+class="cmss-10">altsuperragged4colheaderborder</span><a
+ id="dx1-84038"></a> style is like
+ <span
+class="cmss-10">altsuperragged4colheader</span><a
+ id="dx1-84039"></a> but has horizontal and vertical lines around it.
+ </dd></dl>
+<!--l. 11608--><p class="noindent" >
+</p>
+<!--l. 11608--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.7 </span> <a
+ id="sec:treestyles"></a>Tree-Like Styles</h4>
+<!--l. 11611--><p class="noindent" >The styles described in this section are all defined in the package <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-85001"></a>. These styles
+are designed for hierarchical glossaries but can also be used with glossaries that don&#8217;t have
+sub-entries. These styles will display the entry&#8217;s symbol if it exists. Note that these
+styles will automatically be available unless you use the <span
+class="cmss-10">notree</span><a
+ id="dx1-85002"></a> or <span
+class="cmss-10">nostyles</span><a
+ id="dx1-85003"></a> package
+options.
+</p><!--l. 11619--><p class="indent" > These styles all format the entry name using:
+</p><!--l. 11620--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreenamefmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85004"></a> <span
+class="cmtt-10">\glstreenamefmt{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11622--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\textbf{</span>&#x27E8;<span
+class="cmti-10">name</span>&#x27E9;<span
+class="cmtt-10">}</span>, but note that &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; includes <span
+class="cmtt-10">\glsnamefont</span><a
+ id="dx1-85005"></a> so the
+bold setting in <span
+class="cmtt-10">\glstreenamefont </span>may be counteracted by another font change in
+<span
+class="cmtt-10">\glsnamefont </span>(or in <span
+class="cmtt-10">\acronymfont</span>). The tree-like styles that also display the header
+use
+</p><!--l. 11628--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreegroupheaderfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85006"></a> <span
+class="cmtt-10">\glstreegroupheaderfmt{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11630--><p class="noindent" >
+to format the heading. This defaults to <span
+class="cmtt-10">\glstreenamefmt{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>. The tree-like styles that
+display navigation links to the groups (such as <span
+class="cmss-10">indexhypergroup</span><a
+ id="dx1-85007"></a>), format the navigation line
+using
+</p><!--l. 11635--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreenavigationfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85008"></a> <span
+class="cmtt-10">\glstreenavigationfmt{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+</p><!--l. 11637--><p class="noindent" >
+which defaults to <span
+class="cmtt-10">\glstreenamefmt{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>. Note that this is different from
+<span
+class="cmtt-10">\glslistnavigationitem</span>, provided with the styles such as <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-85009"></a>, as that also
+includes <span
+class="cmtt-10">\item</span>.
+</p><!--l. 11642--><p class="indent" > With the exception of the <span
+class="cmss-10">alttree</span><a
+ id="dx1-85010"></a> style (and those derived from it), the space before the
+description for top-level entries is produced with
+</p><!--l. 11645--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreepredesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85011"></a> <span
+class="cmtt-10">\glstreepredesc </span></div><hr>
+</p><!--l. 11647--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\space</span>.
+</p><!--l. 11650--><p class="indent" > With the exception of the <span
+class="cmss-10">treenoname</span><a
+ id="dx1-85012"></a> and <span
+class="cmss-10">alttree</span><a
+ id="dx1-85013"></a> styles (and those derived from them),
+the space before the description for child entries is produced with
+</p><!--l. 11654--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreechildpredesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85014"></a> <span
+class="cmtt-10">\glstreechildpredesc </span></div><hr>
+</p><!--l. 11656--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\space</span>.
+</p><!--l. 11659--><p class="indent" > <div class="important" title="Important Note"> Most of these styles are not designed for multi-paragraph descriptions. (The <span
+class="cmss-10">tree</span><a
+ id="dx1-85015"></a> style
+isn&#8217;t too bad for multi-paragraph top-level entry descriptions, or you can use the <span
+class="cmss-10">index</span><a
+ id="dx1-85016"></a> style
+with the adjustment shown below.) </div>
+</p><!--l. 11664--><p class="noindent" >
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">index</span> </dt><dd
+class="description">The <span
+class="cmss-10">index</span><a
+ id="dx1-85017"></a> style is similar to the way indices are usually formatted in that it has
+ a hierarchical structure up to three levels (the main level plus two sub-levels). The
+ name is typeset in bold, and if the symbol is present it is set in parentheses after
+ the name and before the description. Sub-entries are indented and also include
+ the name, the symbol in brackets (if present) and the description. Groups are
+ separated using <span
+class="cmtt-10">\indexspace</span><a
+ id="dx1-85018"></a>.
+ <!--l. 11676--><p class="noindent" >Each main level item is started with
+ </p><!--l. 11677--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreeitem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85019"></a> <span
+class="cmtt-10">\glstreeitem </span></div><hr>
+ </p><!--l. 11679--><p class="noindent" >
+ The level&#x00A0;1 entries are started with
+ </p><!--l. 11681--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreesubitem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85020"></a> <span
+class="cmtt-10">\glstreesubitem </span></div><hr>
+ </p><!--l. 11683--><p class="noindent" >
+ </p><!--l. 11685--><p class="noindent" >The level&#x00A0;2 entries are started with
+ </p><!--l. 11686--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreesubsubitem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85021"></a> <span
+class="cmtt-10">\glstreesubsubitem </span></div><hr>
+ </p><!--l. 11688--><p class="noindent" >
+ </p><!--l. 11690--><p class="noindent" >Note that the <span
+class="cmss-10">index</span><a
+ id="dx1-85022"></a> style automatically sets
+
+
+</p>
+ <div class="verbatim" id="verbatim-370">
+ \let\item\glstreeitem
+ &#x00A0;<br />\let\subitem\glstreesubitem
+ &#x00A0;<br />\let\subsubitem\glstreesubsubitem
+</div>
+ <!--l. 11695--><p class="nopar" > at the start of the glossary for backward compatibility.
+ </p><!--l. 11698--><p class="noindent" >The <span
+class="cmss-10">index</span><a
+ id="dx1-85023"></a> style isn&#8217;t suitable for multi-paragraph descriptions, but this limitation can be
+ overcome by redefining the above commands. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-371">
+ \renewcommand{\glstreeitem}{%
+ &#x00A0;<br />&#x00A0;\parindent0pt\par\hangindent40pt
+ &#x00A0;<br />&#x00A0;\everypar{\parindent50pt\hangindent40pt}}
+</div>
+ <!--l. 11705--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">indexgroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">indexgroup</span><a
+ id="dx1-85024"></a> style is similar to the <span
+class="cmss-10">index</span><a
+ id="dx1-85025"></a> style except that each group has a
+ heading obtained using <span
+class="cmtt-10">\glsgetgrouptitle{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, which is described in <a
+href="#sec:newglossarystyle"><span
+class="tcrm-1000">&sect;</span>15.2 </a><a
+href="#sec:newglossarystyle">Defining
+ your own glossary style<!--tex4ht:ref: sec:newglossarystyle --></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">indexhypergroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">indexhypergroup</span><a
+ id="dx1-85026"></a> style is like <span
+class="cmss-10">indexgroup</span><a
+ id="dx1-85027"></a> but has a set of links to the
+ glossary groups. The navigation line is the same as that for <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-85028"></a>, described
+ above, but is formatted using <span
+class="cmtt-10">\glstreenavigationfmt</span>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">tree</span> </dt><dd
+class="description">The <span
+class="cmss-10">tree</span><a
+ id="dx1-85029"></a> style is similar to the <span
+class="cmss-10">index</span><a
+ id="dx1-85030"></a> style except that it can have arbitrary levels. (Note
+ that <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-85031"></a></a> is limited to three levels, so you will need to use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-85032"></a></a> if you want
+ more than three levels.) Each sub-level is indented by <span class="marginpar"><span
+class="cmtt-9">\glstreeindent</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85033"></a><span
+class="cmtt-10">\glstreeindent</span>.
+ Note that the name, symbol (if present) and description are placed in the same
+ paragraph block. If you want the name to be apart from the description, use the <span
+class="cmss-10">alttree</span><a
+ id="dx1-85034"></a>
+ style instead. (See below.)
+ </dd><dt class="description">
+<span
+class="cmbx-10">treegroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">treegroup</span><a
+ id="dx1-85035"></a> style is similar to the <span
+class="cmss-10">tree</span><a
+ id="dx1-85036"></a> style except that each group has a
+ heading.
+ </dd><dt class="description">
+<span
+class="cmbx-10">treehypergroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">treehypergroup</span><a
+ id="dx1-85037"></a> style is like <span
+class="cmss-10">treegroup</span><a
+ id="dx1-85038"></a> but has a set of links to the
+ glossary groups. The navigation line is the same as that for <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-85039"></a>, described
+ above, but is formatted using <span
+class="cmtt-10">\glstreenavigationfmt</span>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">treenoname</span> </dt><dd
+class="description">The <span
+class="cmss-10">treenoname</span><a
+ id="dx1-85040"></a> style is like the <span
+class="cmss-10">tree</span><a
+ id="dx1-85041"></a> style except that the name for each
+ sub-entry is ignored.
+ </dd><dt class="description">
+<span
+class="cmbx-10">treenonamegroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">treenonamegroup</span><a
+ id="dx1-85042"></a> style is similar to the <span
+class="cmss-10">treenoname</span><a
+ id="dx1-85043"></a> style except that
+ each group has a heading.
+ </dd><dt class="description">
+<span
+class="cmbx-10">treenonamehypergroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">treenonamehypergroup</span><a
+ id="dx1-85044"></a> style is like <span
+class="cmss-10">treenonamegroup</span><a
+ id="dx1-85045"></a> but has a
+ set of links to the glossary groups. The navigation line is the same as that for
+ <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-85046"></a>, described above, but is formatted using <span
+class="cmtt-10">\glstreenavigationfmt</span>.
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">alttree</span> </dt><dd
+class="description">The <span
+class="cmss-10">alttree</span><a
+ id="dx1-85047"></a> style is similar to the <span
+class="cmss-10">tree</span><a
+ id="dx1-85048"></a> style except that the indentation for each level
+ is determined by the width of the text specified by
+ <!--l. 11754--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssetwidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85049"></a> <span
+class="cmtt-10">\glssetwidest[</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. 11756--><p class="noindent" >
+ The optional argument &#x27E8;<span
+class="cmti-10">level</span>&#x27E9; indicates the level, where 0 indicates the top-most level, 1
+ indicates the first level sub-entries, etc. If <span
+class="cmtt-10">\glssetwidest </span>hasn&#8217;t been used for a
+ given sub-level, the level&#x00A0;0 widest text is used instead. If &#x27E8;<span
+class="cmti-10">level</span>&#x27E9; is omitted, 0 is
+ assumed.
+ </p><!--l. 11763--><p class="noindent" >As from v4.22, the <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-85050"></a> package also provides
+ </p><!--l. 11764--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfindwidesttoplevelname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85051"></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. 11766--><p class="noindent" >
+ This iterates over all parentless entries in the given glossary lists and determines the
+ widest entry. If the optional argument is omitted, all glossaries are assumed (as per
+ <span
+class="cmtt-10">\forallglossaries</span>).
+ </p><!--l. 11771--><p class="noindent" >For example, to have the same name width for all glossaries:
+
+
+</p>
+ <div class="verbatim" id="verbatim-372">
+ \glsfindwidesttoplevelname
+ &#x00A0;<br />\setglossarystyle{alttree}
+ &#x00A0;<br />\printglossaries
+</div>
+ <!--l. 11776--><p class="nopar" > Alternatively, to compute the widest entry for each glossary before it&#8217;s displayed:
+
+
+</p>
+ <div class="verbatim" id="verbatim-373">
+ \renewcommand{\glossarypreamble}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\glsfindwidesttoplevelname[\currentglossary]}
+ &#x00A0;<br />\setglossarystyle{alttree}
+ &#x00A0;<br />\printglossaries
+</div>
+ <!--l. 11784--><p class="nopar" >
+ </p><!--l. 11786--><p class="noindent" ><div class="important" title="Important Note"> These commands only affects the <span
+class="cmss-10">alttree</span><a
+ id="dx1-85052"></a> styles, including those listed below and the
+ ones in the <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-85053"></a> package. If you forget to set the widest entry name, the
+ description will overwrite the name. </div>
+ </p><!--l. 11791--><p class="noindent" >
+ </p><!--l. 11793--><p class="noindent" >For each level, the name is placed to the left of the paragraph block containing the
+ symbol (optional) and the description. If the symbol is present, it is placed in
+ parentheses before the description.
+ </p><!--l. 11798--><p class="noindent" >The name is placed inside a left-aligned <span
+class="cmtt-10">\makebox</span>. As from v4.19, this can now be
+ adjusted by redefining
+ </p><!--l. 11800--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreenamebox</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-85054"></a> <span
+class="cmtt-10">\glstreenamebox{</span>&#x27E8;<span
+class="cmitt-10">width</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 11802--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">width</span>&#x27E9; is the width of the box and &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; is the contents of the box. For example, to
+ make the name right-aligned:
+
+
+</p>
+ <div class="verbatim" id="verbatim-374">
+ \renewcommand*{\glstreenamebox}[2]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\makebox[#1][r]{#2}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 11809--><p class="nopar" >
+ </p></dd><dt class="description">
+<span
+class="cmbx-10">alttreegroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">alttreegroup</span><a
+ id="dx1-85055"></a> is like the <span
+class="cmss-10">alttree</span><a
+ id="dx1-85056"></a> style except that each group has a
+ heading.
+ </dd><dt class="description">
+<span
+class="cmbx-10">alttreehypergroup</span> </dt><dd
+class="description">The <span
+class="cmss-10">alttreehypergroup</span><a
+ id="dx1-85057"></a> style is like <span
+class="cmss-10">alttreegroup</span><a
+ id="dx1-85058"></a> but has a set of links to
+ the glossary groups. The navigation line is the same as that for <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-85059"></a>, described
+ above.
+ </dd></dl>
+<!--l. 11821--><p class="noindent" >
+</p>
+<!--l. 11821--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.8 </span> <a
+ id="sec:mcolstyles"></a>Multicols Style</h4>
+<!--l. 11824--><p class="noindent" >The <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-86001"></a> package provides tree-like styles that are in the <span
+class="cmss-10">multicols</span><a
+ id="dx1-86002"></a><a
+ id="dx1-86003"></a> environment
+(defined by the <span
+class="cmss-10">multicol</span><a
+ id="dx1-86004"></a> package). The style names are as their analogous tree styles (as
+defined in <a
+href="#sec:treestyles"><span
+class="tcrm-1000">&sect;</span>15.1.7 </a><a
+href="#sec:treestyles">Tree-Like Styles<!--tex4ht:ref: sec:treestyles --></a>) but are prefixed with &#8220;mcol&#8221;. For example, the <span
+class="cmss-10">mcolindex</span><a
+ id="dx1-86005"></a>
+style is essentially the <span
+class="cmss-10">index</span><a
+ id="dx1-86006"></a> style but put in a <span
+class="cmss-10">multicols</span><a
+ id="dx1-86007"></a><a
+ id="dx1-86008"></a> environment. For the complete list, see
+<a
+href="#tab:mcols">table&#x00A0;15.2</a>. The <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-86009"></a> package is automatically loaded by <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-86010"></a> (even if the
+<span
+class="cmss-10">notree</span><a
+ id="dx1-86011"></a> package option is used when loading <span
+class="cmss-10">glossaries</span>). The formatting commands
+<span
+class="cmtt-10">\glstreenamefmt</span>, <span
+class="cmtt-10">\glstreegroupheaderfmt </span>and <span
+class="cmtt-10">\glstreenavigationfmt </span>are all used by
+the corresponding <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-86012"></a> styles.
+</p><!--l. 11839--><p class="indent" > <div class="important" title="Important Note"> Note that <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-86013"></a> is not loaded by <span
+class="cmss-10">glossaries</span>. If you want to use any of the multicol
+styles in that package you need to load it explicitly with <span
+class="cmtt-10">\usepackage </span>and set the required
+glossary style using <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-86014"></a>. </div>
+</p><!--l. 11844--><p class="noindent" >
+</p><!--l. 11846--><p class="indent" > The default number of columns is 2, but can be changed by redefining
+</p><!--l. 11847--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsmcols</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-86015"></a> <span
+class="cmtt-10">\glsmcols </span></div><hr>
+</p><!--l. 11849--><p class="noindent" >
+to the required number. For example, for a three column glossary:
+
+
+</p>
+ <div class="verbatim" id="verbatim-375">
+\usepackage{glossary-mcols}
+&#x00A0;<br />\renewcommand*{\glsmcols}{3}
+&#x00A0;<br />\setglossarystyle{mcolindex}
+</div>
+<!--l. 11855--><p class="nopar" >
+</p>
+ <div class="table">
+
+
+<!--l. 11857--><p class="indent" > <a
+ id="tab:mcols"></a></p><hr class="float" /><div class="float"
+>
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;15.2: </span><span
+class="content">Multicolumn Styles</span></div><!--tex4ht:label?: x1-860162 -->
+<div class="tabular"> <table id="TBL-10" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-10-1g"><col
+id="TBL-10-1" /><col
+id="TBL-10-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-10-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-1"
+class="td11"> <span
+class="cmssbx-10">glossary-mcols</span><a
+ id="dx1-86017"></a> <span
+class="cmbx-10">Style </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-10-1-2"
+class="td11"> <span
+class="cmbx-10">Analogous Tree Style </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-1"
+class="td11"> <span
+class="cmss-10">mcolindex</span><a
+ id="dx1-86018"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-2-2"
+class="td11"> <span
+class="cmss-10">index</span><a
+ id="dx1-86019"></a> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-10-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-1"
+class="td11"> <span
+class="cmss-10">mcolindexgroup</span><a
+ id="dx1-86020"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-3-2"
+class="td11"> <span
+class="cmss-10">indexgroup</span><a
+ id="dx1-86021"></a></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-1"
+class="td11"> <span
+class="cmss-10">mcolindexhypergroup</span><a
+ id="dx1-86022"></a> or <span
+class="cmss-10">mcolindexspannav</span><a
+ id="dx1-86023"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-4-2"
+class="td11"> <span
+class="cmss-10">indexhypergroup</span><a
+ id="dx1-86024"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-1"
+class="td11"> <span
+class="cmss-10">mcoltree</span><a
+ id="dx1-86025"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-5-2"
+class="td11"> <span
+class="cmss-10">tree</span><a
+ id="dx1-86026"></a> </td></tr><tr
+ style="vertical-align:baseline;" id="TBL-10-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-1"
+class="td11"> <span
+class="cmss-10">mcoltreegroup</span><a
+ id="dx1-86027"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-6-2"
+class="td11"> <span
+class="cmss-10">treegroup</span><a
+ id="dx1-86028"></a></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-1"
+class="td11"> <span
+class="cmss-10">mcoltreehypergroup</span><a
+ id="dx1-86029"></a> or <span
+class="cmss-10">mcoltreespannav</span><a
+ id="dx1-86030"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-7-2"
+class="td11"> <span
+class="cmss-10">treehypergroup</span><a
+ id="dx1-86031"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-8-1"
+class="td11"> <span
+class="cmss-10">mcoltreenoname</span><a
+ id="dx1-86032"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-8-2"
+class="td11"> <span
+class="cmss-10">treenoname</span><a
+ id="dx1-86033"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-9-1"
+class="td11"> <span
+class="cmss-10">mcoltreenonamegroup</span><a
+ id="dx1-86034"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-9-2"
+class="td11"> <span
+class="cmss-10">treenonamegroup</span><a
+ id="dx1-86035"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-10-1"
+class="td11"> <span
+class="cmss-10">mcoltreenonamehypergroup</span><a
+ id="dx1-86036"></a> or <span
+class="cmss-10">mcoltreenonamespannav</span><a
+ id="dx1-86037"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-10-2"
+class="td11"> <span
+class="cmss-10">treenonamehypergroup</span><a
+ id="dx1-86038"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-11-1"
+class="td11"> <span
+class="cmss-10">mcolalttree</span><a
+ id="dx1-86039"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-11-2"
+class="td11"> <span
+class="cmss-10">alttree</span><a
+ id="dx1-86040"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-12-1"
+class="td11"> <span
+class="cmss-10">mcolalttreegroup</span><a
+ id="dx1-86041"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-12-2"
+class="td11"> <span
+class="cmss-10">alttreegroup</span><a
+ id="dx1-86042"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-10-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-10-13-1"
+class="td11"> <span
+class="cmss-10">mcolalttreehypergroup</span><a
+ id="dx1-86043"></a> or <span
+class="cmss-10">mcolalttreespannav</span><a
+ id="dx1-86044"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-10-13-2"
+class="td11"> <span
+class="cmss-10">alttreehypergroup</span><a
+ id="dx1-86045"></a> </td></tr></table></div>
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 11882--><p class="indent" > The styles with a navigation line, such as <span
+class="cmss-10">mcoltreehypergroup</span><a
+ id="dx1-86046"></a>, now have a variant (as from
+v4.22) with &#8220;hypergroup&#8221; replaced with &#8220;spannav&#8221; in the style name. The original
+&#8220;hypergroup&#8221; styles place the navigation line at the start of the first column. The newer
+&#8220;spannav&#8221; styles put the navigation line in the optional argument of the <span
+class="cmss-10">multicols</span><a
+ id="dx1-86047"></a><a
+ id="dx1-86048"></a>
+environment so that it spans across all the columns.
+</p>
+<!--l. 11890--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">15.1.9 </span> <a
+ id="sec:inline"></a>In-Line Style</h4>
+<!--l. 11893--><p class="noindent" >This section covers the <span
+class="cmss-10">glossary-inline</span><a
+ id="dx1-87001"></a> package that supplies the <span
+class="cmss-10">inline</span><a
+ id="dx1-87002"></a> style. This is a style that
+is designed for in-line use (as opposed to block styles, such as lists or tables). This style
+doesn&#8217;t display the <a
+href="#glo:numberlist">number list<a
+ id="dx1-87003"></a></a>.
+</p><!--l. 11898--><p class="indent" > You will most likely need to redefine <span
+class="cmtt-10">\glossarysection</span><a
+ id="dx1-87004"></a> with this style. For example,
+suppose you are required to have your glossaries and list of acronyms in a footnote, you can
+do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-376">
+&#x00A0;\usepackage{glossary-inline}
+&#x00A0;<br />&#x00A0;\renewcommand*{\glossarysection}[2][]{\textbf{#1}:&#x00A0;}
+&#x00A0;<br />&#x00A0;\setglossarystyle{inline}
+</div>
+<!--l. 11906--><p class="nopar" >
+</p><!--l. 11908--><p class="indent" > <div class="important" title="Important Note"> Note that you need to include <span
+class="cmss-10">glossary-inline</span><a
+ id="dx1-87005"></a> with <span
+class="cmtt-10">\usepackage </span>as it&#8217;s not automatically
+included by the <span
+class="cmss-10">glossaries </span>package and then set the style using <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-87006"></a>.
+</div>
+</p><!--l. 11913--><p class="noindent" >
+</p><!--l. 11915--><p class="indent" > Where you need to include your glossaries as a footnote you can do:
+
+
+</p>
+ <div class="verbatim" id="verbatim-377">
+\footnote{\printglossaries}
+</div>
+<!--l. 11918--><p class="nopar" >
+</p><!--l. 11920--><p class="indent" > The <span
+class="cmss-10">inline</span><a
+ id="dx1-87007"></a> style is governed by the following:
+</p><!--l. 11921--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlineseparator</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87008"></a> <span
+class="cmtt-10">\glsinlineseparator</span><a
+ id="dx1-87009"></a> </div><hr>
+</p><!--l. 11923--><p class="noindent" >
+This defaults to &#8220;<span
+class="cmtt-10">; </span>&#8221; and is used between main (i.e.&#x00A0;level&#x00A0;0) entries.
+</p><!--l. 11926--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlinesubseparator</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87010"></a> <span
+class="cmtt-10">\glsinlinesubseparator</span><a
+ id="dx1-87011"></a> </div><hr>
+</p><!--l. 11928--><p class="noindent" >
+This defaults to &#8220;<span
+class="cmtt-10">, </span>&#8221; and is used between sub-entries.
+</p><!--l. 11931--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlineparentchildseparator</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87012"></a> <span
+class="cmtt-10">\glsinlineparentchildseparator</span><a
+ id="dx1-87013"></a> </div><hr>
+</p><!--l. 11933--><p class="noindent" >
+This defaults to &#8220;<span
+class="cmtt-10">: </span>&#8221; and is used between a parent main entry and its first sub-entry.
+</p><!--l. 11936--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspostinline</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87014"></a> <span
+class="cmtt-10">\glspostinline</span><a
+ id="dx1-87015"></a> </div><hr>
+</p><!--l. 11938--><p class="noindent" >
+This defaults to &#8220;<span
+class="cmtt-10">; </span>&#8221; and is used at the end of the glossary.
+</p><!--l. 11941--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlinenameformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87016"></a> <span
+class="cmtt-10">\glsinlinenameformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11943--><p class="noindent" >
+This is used to format the entry name and defaults to <span
+class="cmtt-10">\glstarget{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">name</span>&#x27E9;<span
+class="cmtt-10">}</span>, where
+&#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is provided in the form <span
+class="cmtt-10">\glossentryname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>and &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label. For
+example, if you want the name to appear in smallcaps:
+
+
+</p>
+ <div class="verbatim" id="verbatim-378">
+\renewcommand*{\glsinlinenameformat}[2]{\glstarget{#1}{\textsc{#2}}}
+</div>
+<!--l. 11951--><p class="nopar" > Sub-entry names are formatted according to
+</p><!--l. 11953--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlinesubnameformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87017"></a> <span
+class="cmtt-10">\glsinlinesubnameformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11955--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\glstarget{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{}</span></span></span> so the sub-entry name is ignored.
+</p><!--l. 11959--><p class="indent" > If the description has been suppressed (according to <span
+class="cmtt-10">\ifglsdescsuppressed</span>)
+then
+</p><!--l. 11961--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlineemptydescformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87018"></a> <span
+class="cmtt-10">\glsinlineemptydescformat{</span>&#x27E8;<span
+class="cmitt-10">symbol</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. 11963--><p class="noindent" >
+(which defaults to nothing) is used, otherwise the description is formatted according
+to
+</p><!--l. 11966--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlinedescformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87019"></a> <span
+class="cmtt-10">\glsinlinedescformat{</span>&#x27E8;<span
+class="cmitt-10">description</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">symbol</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. 11969--><p class="noindent" >
+This defaults to just <span
+class="cmtt-10">\space</span>&#x27E8;<span
+class="cmti-10">description</span>&#x27E9; so the symbol and location list are ignored. If the
+description is missing (according to <span
+class="cmtt-10">\ifglshasdesc</span>), then <span
+class="cmtt-10">\glsinlineemptydescformat </span>is
+used instead.
+</p><!--l. 11975--><p class="indent" > For example, if you want a colon between the name and the description:
+
+
+</p>
+ <div class="verbatim" id="verbatim-379">
+\renewcommand*{\glsinlinedescformat}[3]{:&#x00A0;#1}
+</div>
+<!--l. 11979--><p class="nopar" >
+</p><!--l. 11981--><p class="indent" > The sub-entry description is formatted according to:
+</p><!--l. 11982--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsinlinesubdescformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-87020"></a> <span
+class="cmtt-10">\glsinlinesubdescformat{</span>&#x27E8;<span
+class="cmitt-10">description</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">symbol</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">number</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11985--><p class="noindent" >
+This defaults to just &#x27E8;<span
+class="cmti-10">description</span>&#x27E9;.
+</p><!--l. 11988--><p class="noindent" >
+</p>
+<!--l. 11988--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">15.2 </span> <a
+ id="sec:newglossarystyle"></a>Defining your own glossary style</h3>
+<!--l. 11991--><p class="noindent" >If the predefined styles don&#8217;t fit your requirements, you can define your own style
+using:
+</p><!--l. 11993--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newglossarystyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88001"></a> <span
+class="cmtt-10">\newglossarystyle{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">definitions</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11995--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the new glossary style (to be used in <span
+class="cmtt-10">\setglossarystyle</span>). The
+second argument &#x27E8;<span
+class="cmti-10">definitions</span>&#x27E9; needs to redefine all of the following:
+</p><!--l. 12000--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">theglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88002"></a><a
+ id="dx1-88003"></a> <span
+class="cmss-10">theglossary</span><a
+ id="dx1-88004"></a><a
+ id="dx1-88005"></a> </div><hr>
+</p><!--l. 12002--><p class="noindent" >
+This environment defines how the main body of the glossary should be typeset. Note that this
+does not include the section heading, the glossary preamble (defined by <span
+class="cmtt-10">\glossarypreamble</span><a
+ id="dx1-88006"></a>)
+or the glossary postamble (defined by <span
+class="cmtt-10">\glossarypostamble</span><a
+ id="dx1-88007"></a>). For example, the <span
+class="cmss-10">list</span><a
+ id="dx1-88008"></a> style uses
+the <span
+class="cmss-10">description</span><a
+ id="dx1-88009"></a><a
+ id="dx1-88010"></a> environment, so the <span
+class="cmss-10">theglossary</span><a
+ id="dx1-88011"></a><a
+ id="dx1-88012"></a> environment is simply redefined to begin and
+end the <span
+class="cmss-10">description</span><a
+ id="dx1-88013"></a><a
+ id="dx1-88014"></a> environment.
+</p><!--l. 12011--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossaryheader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88015"></a> <span
+class="cmtt-10">\glossaryheader </span></div><hr>
+</p><!--l. 12013--><p class="noindent" >
+This macro indicates what to do at the start of the main body of the glossary. Note that this
+is not the same as <span
+class="cmtt-10">\glossarypreamble</span><a
+ id="dx1-88016"></a>, which should not be affected by changes in the
+glossary style. The <span
+class="cmss-10">list</span><a
+ id="dx1-88017"></a> glossary style redefines <span
+class="cmtt-10">\glossaryheader</span><a
+ id="dx1-88018"></a> to do nothing,
+whereas the <span
+class="cmss-10">longheader</span><a
+ id="dx1-88019"></a> glossary style redefines <span
+class="cmtt-10">\glossaryheader </span>to do a header
+row.
+</p><!--l. 12021--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgroupheading</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88020"></a> <span
+class="cmtt-10">\glsgroupheading{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12023--><p class="noindent" >
+This macro indicates what to do at the start of each logical block within the main body of
+the glossary. If you use <a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-88021"></a></a> the glossary is sub-divided into a maximum of
+twenty-eight logical blocks that are determined by the first character of the <span
+class="cmss-10">sort</span><a
+ id="dx1-88022"></a> key (or
+<span
+class="cmss-10">name</span><a
+ id="dx1-88023"></a> key if the <span
+class="cmss-10">sort</span><a
+ id="dx1-88024"></a> key is omitted). The sub-divisions are in the following order:
+symbols, numbers, A, &#x2026;, Z. If you use <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-88025"></a></a>, the sub-divisions depend on the language
+settings.
+
+
+</p><!--l. 12034--><p class="indent" > Note that the argument to <span
+class="cmtt-10">\glsgroupheading </span>is a label <span
+class="cmti-10">not </span>the group title. The group
+title can be obtained via
+</p><!--l. 12037--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgetgrouptitle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88026"></a> <span
+class="cmtt-10">\glsgetgrouptitle{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12039--><p class="noindent" >
+This obtains the title as follows: if &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; consists of a single non-active character or &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is
+equal to <span
+class="cmtt-10">glssymbols </span>or <span
+class="cmtt-10">glsnumbers </span>and <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">groupname </span>exists, this is taken to be the title,
+otherwise the title is just &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. (The &#8220;symbols&#8221; group has the label <span
+class="cmtt-10">glssymbols</span>, so the
+command <span
+class="cmtt-10">\glssymbolsgroupname</span><a
+ id="dx1-88027"></a> is used, and the &#8220;numbers&#8221; group has the label
+<span
+class="cmtt-10">glsnumbers</span>, so the command <span
+class="cmtt-10">\glsnumbersgrouptitle</span><a
+ id="dx1-88028"></a> is used.) If you are using <a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-88029"></a></a>,
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9; may be an active character (for example &oslash;), in which case the title will be set
+to just &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. You can redefine <span
+class="cmtt-10">\glsgetgrouptitle </span>if this is unsuitable for your
+document.
+</p><!--l. 12053--><p class="indent" > A navigation hypertarget can be created using
+</p><!--l. 12054--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnavhypertarget</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88030"></a> <span
+class="cmtt-10">\glsnavhypertarget{</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. 12056--><p class="noindent" >
+This typically requires <span
+class="cmtt-10">\glossaryheader </span>to be redefined to use
+</p><!--l. 12058--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnavigation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88031"></a> <span
+class="cmtt-10">\glsnavigation </span></div><hr>
+</p><!--l. 12060--><p class="noindent" >
+which displays the navigation line.
+</p><!--l. 12063--><p class="indent" > For further details about <span
+class="cmtt-10">\glsnavhypertarget</span>, see the documented code
+(<span
+class="cmtt-10">glossaries-code.pdf</span>).
+</p><!--l. 12067--><p class="indent" > Most of the predefined glossary styles redefine <span
+class="cmtt-10">\glsgroupheading </span>to simply ignore its
+argument. The <span
+class="cmss-10">listhypergroup</span><a
+ id="dx1-88032"></a> style redefines <span
+class="cmtt-10">\glsgroupheading </span>as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-380">
+\renewcommand*{\glsgroupheading}[1]{%
+&#x00A0;<br />\item[\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}]}
+</div>
+<!--l. 12073--><p class="nopar" > See also <span
+class="cmtt-10">\glsgroupskip </span>below. (Note that command definitions within <span
+class="cmtt-10">\newglossarystyle</span><a
+ id="dx1-88033"></a>
+must use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">##1</span></span></span> instead of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">#1</span></span></span> etc.)
+</p><!--l. 12077--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgroupskip</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88034"></a> <span
+class="cmtt-10">\glsgroupskip </span></div><hr>
+</p><!--l. 12079--><p class="noindent" >
+This macro determines what to do after one logical group but before the header for the
+next logical group. The <span
+class="cmss-10">list</span><a
+ id="dx1-88035"></a> glossary style simply redefines <span
+class="cmtt-10">\glsgroupskip </span>to be
+<span
+class="cmtt-10">\indexspace</span><a
+ id="dx1-88036"></a>, whereas the tabular-like styles redefine <span
+class="cmtt-10">\glsgroupskip </span>to produce a blank
+row.
+</p><!--l. 12086--><p class="indent" > As from version 3.03, the package option <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-88037"></a> can be used to suppress this default
+gap for the predefined styles.
+</p><!--l. 12089--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88038"></a> <span
+class="cmtt-10">\glossentry{</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. 12091--><p class="noindent" >
+This macro indicates what to do for each top-level (level&#x00A0;0) glossary entry. The entry label is
+given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; and the associated <a
+href="#glo:numberlist">number list<a
+ id="dx1-88039"></a></a> is given by &#x27E8;<span
+class="cmti-10">number list</span>&#x27E9;. You can redefine
+<span
+class="cmtt-10">\glossentry</span><a
+ id="dx1-88040"></a> to use commands like <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-88041"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, <span
+class="cmtt-10">\glossentrydesc</span><a
+ id="dx1-88042"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>and
+<span
+class="cmtt-10">\glossentrysymbol</span><a
+ id="dx1-88043"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>to display the name, description and symbol fields, or
+to access other fields, use commands like <span
+class="cmtt-10">\glsentryuseri</span><a
+ id="dx1-88044"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. (See <a
+href="#sec:glsnolink"><span
+class="tcrm-1000">&sect;</span>9 </a><a
+href="#sec:glsnolink">Using
+Glossary Terms Without Links<!--tex4ht:ref: sec:glsnolink --></a> for further details.) You can also use the following
+commands:
+</p><!--l. 12102--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryitem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88045"></a> <span
+class="cmtt-10">\glsentryitem{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12104--><p class="noindent" >
+This macro will increment and display the associated counter for the main (level&#x00A0;0) entries if
+the <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-88046"></a> or <span
+class="cmss-10">counterwithin</span><a
+ id="dx1-88047"></a> package options have been used. This macro is typically
+called by <span
+class="cmtt-10">\glossentry </span>before <span
+class="cmtt-10">\glstarget</span>. The format of the counter is controlled by the
+macro
+</p><!--l. 12110--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrycounterlabel</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88048"></a> <span
+class="cmtt-10">\glsentrycounterlabel </span></div><hr>
+</p><!--l. 12112--><p class="noindent" >
+</p><!--l. 12114--><p class="indent" > Each time you use a glossary entry it creates a hyperlink (if hyperlinks are enabled) to the
+relevant line in the glossary. Your new glossary style must therefore redefine <span
+class="cmtt-10">\glossentry </span>to
+set the appropriate target. This is done using
+</p><!--l. 12119--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstarget</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88049"></a> <span
+class="cmtt-10">\glstarget{</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. 12121--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label. Note that you don&#8217;t need to worry about whether the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-88050"></a>
+package has been loaded, as <span
+class="cmtt-10">\glstarget </span>won&#8217;t create a target if <span
+class="cmtt-10">\hypertarget </span>hasn&#8217;t been
+defined.
+</p><!--l. 12127--><p class="indent" > For example, the <span
+class="cmss-10">list</span><a
+ id="dx1-88051"></a> style defines <span
+class="cmtt-10">\glossentry </span>as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-381">
+&#x00A0;&#x00A0;\renewcommand*{\glossentry}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\item[\glsentryitem{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glstarget{##1}{\glossentryname{##1}}]
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossentrydesc{##1}\glspostdescription\space&#x00A0;##2}
+</div>
+<!--l. 12133--><p class="nopar" >
+</p><!--l. 12135--><p class="indent" > Note also that &#x27E8;<span
+class="cmti-10">number list</span>&#x27E9; will always be of the form
+</p><!--l. 12137--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glossaryentrynumbers</span><a
+ id="dx1-88052"></a><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\relax</span><br
+class="newline" /><span
+class="cmtt-10">\setentrycounter</span><a
+ id="dx1-88053"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">Hprefix</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">counter name</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">format cmd</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">number(s)</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">} </span></div><hr>
+</p><!--l. 12139--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">number(s)</span>&#x27E9; may contain <span
+class="cmtt-10">\delimN</span><a
+ id="dx1-88054"></a> (to delimit individual numbers) and/or <span
+class="cmtt-10">\delimR</span><a
+ id="dx1-88055"></a> (to
+indicate a range of numbers). There may be multiple occurrences of <span
+class="cmtt-10">\setentrycounter</span><a
+ id="dx1-88056"></a>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">Hprefix</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">counter name</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmti-10">format cmd</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">number(s)</span>&#x27E9;<span
+class="cmtt-10">}</span>, but note that the entire number list is
+enclosed within the argument of <span
+class="cmtt-10">\glossaryentrynumbers</span><a
+ id="dx1-88057"></a>. The user can redefine this to
+change the way the entire number list is formatted, regardless of the glossary style.
+However the most common use of <span
+class="cmtt-10">\glossaryentrynumbers</span><a
+ id="dx1-88058"></a> is to provide a means of
+suppressing the number list altogether. (In fact, the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-88059"></a> option redefines
+<span
+class="cmtt-10">\glossaryentrynumbers</span><a
+ id="dx1-88060"></a> to ignore its argument.) Therefore, when you define a new glossary
+style, you don&#8217;t need to worry about whether the user has specified the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-88061"></a> package
+option.
+</p><!--l. 12156--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\subglossentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88062"></a> <span
+class="cmtt-10">\subglossentry{</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">number list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12158--><p class="noindent" >
+This is used to display sub-entries. The first argument, &#x27E8;<span
+class="cmti-10">level</span>&#x27E9;, indicates the sub-entry level.
+This must be an integer from 1 (first sub-level) onwards. The remaining arguments are
+analogous to those for <span
+class="cmtt-10">\glossentry</span><a
+ id="dx1-88063"></a> described above.
+</p><!--l. 12165--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssubentryitem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88064"></a> <span
+class="cmtt-10">\glssubentryitem{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12167--><p class="noindent" >
+This macro will increment and display the associated counter for the level&#x00A0;1 entries if the
+<span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-88065"></a> package option has been used. This macro is typically called by
+<span
+class="cmtt-10">\subglossentry </span>before <span
+class="cmtt-10">\glstarget</span><a
+ id="dx1-88066"></a>. The format of the counter is controlled by the
+macro
+</p><!--l. 12173--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssubentrycounterlabel</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88067"></a> <span
+class="cmtt-10">\glssubentrycounterlabel </span></div><hr>
+</p><!--l. 12175--><p class="noindent" >
+</p><!--l. 12177--><p class="indent" > Note that <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-88068"></a> (which <span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-88069"></a> calls) sets
+</p><!--l. 12179--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\currentglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-88070"></a> <span
+class="cmtt-10">\currentglossary </span></div><hr>
+</p><!--l. 12181--><p class="noindent" >
+to the current glossary label, so it&#8217;s possible to create a glossary style that varies according to
+the glossary type.
+</p><!--l. 12185--><p class="indent" > For further details of these commands, see &#8220;Displaying the glossary&#8221; in the documented
+code (<span
+class="cmtt-10">glossaries-code.pdf</span>).
+<a
+ id="x1-88071r27"></a>
+
+
+</p><!--l. 12189--><p class="noindent" ><span
+class="cmbx-12">Example 27</span><span
+class="cmbx-12">&#x00A0;(Creating a completely new style)</span><a
+ id="x1-88072"></a>
+</p><!--l. 12191--><p class="indent" > If you want a completely new style, you will need to redefine all of the commands and the
+environment listed above.
+</p><!--l. 12194--><p class="indent" > For example, suppose you want each entry to start with a bullet point. This
+means that the glossary should be placed in the <span
+class="cmss-10">itemize</span><a
+ id="dx1-88073"></a><a
+ id="dx1-88074"></a> environment, so <span
+class="cmss-10">theglossary</span><a
+ id="dx1-88075"></a><a
+ id="dx1-88076"></a>
+should start and end that environment. Let&#8217;s also suppose that you don&#8217;t want
+anything between the glossary groups (so <span
+class="cmtt-10">\glsgroupheading</span><a
+ id="dx1-88077"></a> and <span
+class="cmtt-10">\glsgroupskip</span><a
+ id="dx1-88078"></a>
+should do nothing) and suppose you don&#8217;t want anything to appear immediately
+after <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\begin{theglossary}</span></span></span> (so <span
+class="cmtt-10">\glossaryheader</span><a
+ id="dx1-88079"></a> should do nothing). In addition,
+let&#8217;s suppose the symbol should appear in brackets after the name, followed by the
+description and last of all the <a
+href="#glo:numberlist">number list<a
+ id="dx1-88080"></a></a> should appear within square brackets
+at the end. Then you can create this new glossary style, called, say, <span
+class="cmtt-10">mylist</span>, as
+follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-382">
+&#x00A0;\newglossarystyle{mylist}{%
+&#x00A0;<br />&#x00A0;%&#x00A0;put&#x00A0;the&#x00A0;glossary&#x00A0;in&#x00A0;the&#x00A0;itemize&#x00A0;environment:
+&#x00A0;<br />&#x00A0;\renewenvironment{theglossary}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;{\begin{itemize}}{\end{itemize}}%
+&#x00A0;<br />&#x00A0;%&#x00A0;have&#x00A0;nothing&#x00A0;after&#x00A0;\begin{theglossary}:
+&#x00A0;<br />&#x00A0;\renewcommand*{\glossaryheader}{}%
+&#x00A0;<br />&#x00A0;%&#x00A0;have&#x00A0;nothing&#x00A0;between&#x00A0;glossary&#x00A0;groups:
+&#x00A0;<br />&#x00A0;\renewcommand*{\glsgroupheading}[1]{}%
+&#x00A0;<br />&#x00A0;\renewcommand*{\glsgroupskip}{}%
+&#x00A0;<br />&#x00A0;%&#x00A0;set&#x00A0;how&#x00A0;each&#x00A0;entry&#x00A0;should&#x00A0;appear:
+&#x00A0;<br />&#x00A0;\renewcommand*{\glossentry}[2]{%
+&#x00A0;<br />&#x00A0;\item&#x00A0;%&#x00A0;bullet&#x00A0;point
+&#x00A0;<br />&#x00A0;\glstarget{##1}{\glossentryname{##1}}%&#x00A0;the&#x00A0;entry&#x00A0;name
+&#x00A0;<br />&#x00A0;\space&#x00A0;(\glossentrysymbol{##1})%&#x00A0;the&#x00A0;symbol&#x00A0;in&#x00A0;brackets
+&#x00A0;<br />&#x00A0;\space&#x00A0;\glossentrydesc{##1}%&#x00A0;the&#x00A0;description
+&#x00A0;<br />&#x00A0;\space&#x00A0;[##2]%&#x00A0;the&#x00A0;number&#x00A0;list&#x00A0;in&#x00A0;square&#x00A0;brackets
+&#x00A0;<br />&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;set&#x00A0;how&#x00A0;sub-entries&#x00A0;appear:
+&#x00A0;<br />&#x00A0;\renewcommand*{\subglossentry}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glossentry{##2}{##3}}%
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 12228--><p class="nopar" > Note that this style creates a flat glossary, where sub-entries are displayed in exactly the
+same way as the top level entries. It also hasn&#8217;t used <span
+class="cmtt-10">\glsentryitem</span><a
+ id="dx1-88081"></a> or <span
+class="cmtt-10">\glssubentryitem</span><a
+ id="dx1-88082"></a> so
+it won&#8217;t be affected by the <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-88083"></a>, <span
+class="cmss-10">counterwithin</span><a
+ id="dx1-88084"></a> or <span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-88085"></a> package
+options.
+</p><!--l. 12235--><p class="indent" > Variations: </p>
+ <ul class="itemize1">
+ <li class="itemize">You might want the entry name to be capitalised, in which case use
+ <span
+class="cmtt-10">\Glossentryname</span><a
+ id="dx1-88086"></a> instead of <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-88087"></a>.
+ </li>
+ <li class="itemize">You might want to check if the symbol hasn&#8217;t been set and omit the parentheses if
+ the symbol is absent. In this case you can use <span
+class="cmtt-10">\ifglshassymbol</span><a
+ id="dx1-88088"></a> (see <a
+href="#sec:utilities"><span
+class="tcrm-1000">&sect;</span>16
+ </a><a
+href="#sec:utilities">Utilities<!--tex4ht:ref: sec:utilities --></a>):
+
+
+ <div class="verbatim" id="verbatim-383">
+ &#x00A0;\renewcommand*{\glossentry}[2]{%
+ &#x00A0;<br />&#x00A0;\item&#x00A0;%&#x00A0;bullet&#x00A0;point
+ &#x00A0;<br />&#x00A0;\glstarget{##1}{\glossentryname{##1}}%&#x00A0;the&#x00A0;entry&#x00A0;name
+ &#x00A0;<br />&#x00A0;\ifglshassymbol{##1}%&#x00A0;check&#x00A0;if&#x00A0;symbol&#x00A0;exists
+ &#x00A0;<br />&#x00A0;{%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\space&#x00A0;(\glossentrysymbol{##1})%&#x00A0;the&#x00A0;symbol&#x00A0;in&#x00A0;brackets
+ &#x00A0;<br />&#x00A0;}%
+ &#x00A0;<br />&#x00A0;{}%&#x00A0;no&#x00A0;symbol&#x00A0;so&#x00A0;do&#x00A0;nothing
+ &#x00A0;<br />&#x00A0;\space&#x00A0;\glossentrydesc{##1}%&#x00A0;the&#x00A0;description
+ &#x00A0;<br />&#x00A0;\space&#x00A0;[##2]%&#x00A0;the&#x00A0;number&#x00A0;list&#x00A0;in&#x00A0;square&#x00A0;brackets
+ &#x00A0;<br />&#x00A0;}%
+</div>
+ <!--l. 12255--><p class="nopar" ></p></li></ul>
+<div class="center"
+>
+<!--l. 12257--><p class="noindent" >
+</p><!--l. 12257--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-88089r28"></a>
+<!--l. 12260--><p class="noindent" ><span
+class="cmbx-12">Example 28</span><span
+class="cmbx-12">&#x00A0;(Creating a new glossary style based on an existing</span>
+<span
+class="cmbx-12">style)</span><a
+ id="x1-88090"></a>
+</p><!--l. 12262--><p class="indent" > If you want to define a new style that is a slightly modified version of an existing style,
+you can use <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-88091"></a> within the second argument of <span
+class="cmtt-10">\newglossarystyle</span><a
+ id="dx1-88092"></a> followed
+by whatever alterations you require. For example, suppose you want a style like
+the <span
+class="cmss-10">list</span><a
+ id="dx1-88093"></a> style but you don&#8217;t want the extra vertical space created by <span
+class="cmtt-10">\indexspace</span><a
+ id="dx1-88094"></a>
+between groups, then you can create a new glossary style called, say, <span
+class="cmtt-10">mylist </span>as
+follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-384">
+\newglossarystyle{mylist}{%
+&#x00A0;<br />\setglossarystyle{list}%&#x00A0;base&#x00A0;this&#x00A0;style&#x00A0;on&#x00A0;the&#x00A0;list&#x00A0;style
+&#x00A0;<br />\renewcommand{\glsgroupskip}{}%&#x00A0;make&#x00A0;nothing&#x00A0;happen
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;between&#x00A0;groups
+&#x00A0;<br />}
+</div>
+<!--l. 12276--><p class="nopar" > (In this case, you can actually achieve the same effect using the <span
+class="cmss-10">list</span><a
+ id="dx1-88095"></a> style in combination with
+the package option <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-88096"></a>.) </p>
+<div class="center"
+>
+<!--l. 12280--><p class="noindent" >
+</p><!--l. 12280--><p class="noindent" >____________________________</p></div>
+<a
+ id="x1-88097r29"></a>
+<!--l. 12284--><p class="noindent" ><span
+class="cmbx-12">Example 29</span><span
+class="cmbx-12">&#x00A0;(Example: creating a glossary style that uses the </span><span
+class="cmssbx-10x-x-120">user1</span><a
+ id="dx1-88098"></a><span
+class="cmbx-12">,</span>
+<span
+class="cmbx-12">&#x2026;, </span><span
+class="cmssbx-10x-x-120">user6</span><a
+ id="dx1-88099"></a> <span
+class="cmbx-12">keys)</span><a
+ id="x1-88100"></a>
+</p><!--l. 12286--><p class="indent" > Suppose each entry not only has an associated symbol, but also units (stored in <span
+class="cmss-10">user1</span><a
+ id="dx1-88101"></a>) and
+dimension (stored in <span
+class="cmss-10">user2</span><a
+ id="dx1-88102"></a>). Then you can define a glossary style that displays each entry in a
+<span
+class="cmss-10">longtable</span><a
+ id="dx1-88103"></a><a
+ id="dx1-88104"></a> as follows:
+
+
+</p>
+ <div class="verbatim" id="verbatim-385">
+\newglossarystyle{long6col}{%
+&#x00A0;<br />&#x00A0;%&#x00A0;put&#x00A0;the&#x00A0;glossary&#x00A0;in&#x00A0;a&#x00A0;longtable&#x00A0;environment:
+&#x00A0;<br />&#x00A0;\renewenvironment{theglossary}%
+&#x00A0;<br />&#x00A0;&#x00A0;{\begin{longtable}{lp{\glsdescwidth}cccp{\glspagelistwidth}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;{\end{longtable}}%
+&#x00A0;<br />&#x00A0;%&#x00A0;Set&#x00A0;the&#x00A0;table's&#x00A0;header:
+&#x00A0;<br />&#x00A0;\renewcommand*{\glossaryheader}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\bfseries&#x00A0;Term&#x00A0;&amp;&#x00A0;\bfseries&#x00A0;Description&#x00A0;&amp;&#x00A0;\bfseries&#x00A0;Symbol&#x00A0;&amp;
+&#x00A0;<br />&#x00A0;&#x00A0;\bfseries&#x00A0;Units&#x00A0;&amp;&#x00A0;\bfseries&#x00A0;Dimensions&#x00A0;&amp;&#x00A0;\bfseries&#x00A0;Page&#x00A0;List
+&#x00A0;<br />&#x00A0;&#x00A0;\\\endhead}%
+&#x00A0;<br />&#x00A0;%&#x00A0;No&#x00A0;heading&#x00A0;between&#x00A0;groups:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsgroupheading}[1]{}%
+&#x00A0;<br />&#x00A0;%&#x00A0;Main&#x00A0;(level&#x00A0;0)&#x00A0;entries&#x00A0;displayed&#x00A0;in&#x00A0;a&#x00A0;row&#x00A0;optionally&#x00A0;numbered:
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glossentry}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentryitem{##1}%&#x00A0;Entry&#x00A0;number&#x00A0;if&#x00A0;required
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glstarget{##1}{\glossentryname{##1}}%&#x00A0;Name
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glossentrydesc{##1}%&#x00A0;Description
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glossentrysymbol{##1}%&#x00A0;Symbol
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glsentryuseri{##1}%&#x00A0;Units
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glsentryuserii{##1}%&#x00A0;Dimensions
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;##2%&#x00A0;Page&#x00A0;list
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\tabularnewline&#x00A0;%&#x00A0;end&#x00A0;of&#x00A0;row
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;Similarly&#x00A0;for&#x00A0;sub-entries&#x00A0;(no&#x00A0;sub-entry&#x00A0;numbers):
+&#x00A0;<br />&#x00A0;\renewcommand*{\subglossentry}[3]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;%&#x00A0;ignoring&#x00A0;first&#x00A0;argument&#x00A0;(sub-level)
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glstarget{##2}{\glossentryname{##2}}%&#x00A0;Name
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glossentrydesc{##2}%&#x00A0;Description
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glossentrysymbol{##2}%&#x00A0;Symbol
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glsentryuseri{##2}%&#x00A0;Units
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;\glsentryuserii{##2}%&#x00A0;Dimensions
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&amp;&#x00A0;##3%&#x00A0;Page&#x00A0;list
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\tabularnewline&#x00A0;%&#x00A0;end&#x00A0;of&#x00A0;row
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;%&#x00A0;Nothing&#x00A0;between&#x00A0;groups:
+&#x00A0;<br />&#x00A0;\renewcommand*{\glsgroupskip}{}%
+&#x00A0;<br />}
+</div>
+<!--l. 12328--><p class="nopar" > </p>
+<div class="center"
+>
+<!--l. 12329--><p class="noindent" >
+</p><!--l. 12329--><p class="noindent" >____________________________</p></div>
+
+
+<!--l. 12331--><p class="indent" > </div>
+</p><!--l. 12331--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">16. <a
+ id="sec:utilities"></a>Utilities</h2>
+</p><!--l. 12334--><p class="indent" > This section describes some utility commands. Additional commands can be found in the
+documented code (glossaries-code.pdf).
+</p>
+<!--l. 12337--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">16.1 </span> <a
+ id="sec:loops"></a>Loops</h3>
+<!--l. 12340--><p class="noindent" ><div class="important" title="Important Note"> Some of the commands described here take a comma-separated list as an argument. As with
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#8217;s <span
+class="cmtt-10">\@for </span>command, make sure your list doesn&#8217;t have any unwanted spaces in it as
+they don&#8217;t get stripped. (Discussed in more detail in <a
+href="http://www.dickimaw-books.com/latex/admin/html/docsvlist.shtml#spacesinlists" ><span
+class="tcrm-1000">&sect;</span>2.7.2 of &#8220;<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;for Administrative
+Work&#8221;</a>.) </div>
+</p><!--l. 12347--><p class="noindent" >
+</p><!--l. 12349--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\forallglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-90001"></a> <span
+class="cmtt-10">\forallglossaries[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">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. 12351--><p class="noindent" >
+This iterates through &#x27E8;<span
+class="cmti-10">glossary list</span>&#x27E9;, a comma-separated list of glossary labels (as
+supplied when the glossary was defined). At each iteration &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; (which must be a control
+sequence) is set to the glossary label for the current iteration and &#x27E8;<span
+class="cmti-10">body</span>&#x27E9; is performed. If
+&#x27E8;<span
+class="cmti-10">glossary list</span>&#x27E9; is omitted, the default is to iterate over all glossaries (except the ignored
+ones).
+</p><!--l. 12359--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\forallacronyms</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-90002"></a> <span
+class="cmtt-10">\forallacronyms{</span>&#x27E8;<span
+class="cmitt-10">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. 12361--><p class="noindent" >
+This is like <span
+class="cmtt-10">\forallglossaries </span>but only iterates over the lists of acronyms (that have
+previously been declared using <span
+class="cmtt-10">\DeclareAcronymList</span><a
+ id="dx1-90003"></a> or the <span
+class="cmss-10">acronymlists</span><a
+ id="dx1-90004"></a> package option).
+This command doesn&#8217;t have an optional argument. If you want to explicitly say which lists to
+iterate over, just use the optional argument of <span
+class="cmtt-10">\forallglossaries</span>.
+</p><!--l. 12369--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\forglsentries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-90005"></a> <span
+class="cmtt-10">\forglsentries[</span>&#x27E8;<span
+class="cmitt-10">glossary label</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">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. 12371--><p class="noindent" >
+This iterates through all entries in the glossary given by &#x27E8;<span
+class="cmti-10">glossary label</span>&#x27E9;. At each iteration &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;
+(which must be a control sequence) is set to the entry label for the current iteration and &#x27E8;<span
+class="cmti-10">body</span>&#x27E9;
+is performed. If &#x27E8;<span
+class="cmti-10">glossary label</span>&#x27E9; is omitted, <span
+class="cmtt-10">\glsdefaulttype</span><a
+ id="dx1-90006"></a> (usually the main glossary) is
+used.
+</p><!--l. 12378--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\forallglsentries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-90007"></a> <span
+class="cmtt-10">\forallglsentries[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">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. 12380--><p class="noindent" >
+This is like <span
+class="cmtt-10">\forglsentries </span>but for each glossary in &#x27E8;<span
+class="cmti-10">glossary list</span>&#x27E9; (a comma-separated list of
+glossary labels). If &#x27E8;<span
+class="cmti-10">glossary list</span>&#x27E9; is omitted, the default is the list of all defined glossaries
+(except the ignored ones). At each iteration &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; is set to the entry label and &#x27E8;<span
+class="cmti-10">body</span>&#x27E9; is
+performed. (The current glossary label can be obtained using <span
+class="cmtt-10">\glsentrytype{</span>&#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;<span
+class="cmtt-10">} </span>within
+&#x27E8;<span
+class="cmti-10">body</span>&#x27E9;.)
+</p><!--l. 12389--><p class="noindent" >
+</p>
+<!--l. 12389--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">16.2 </span> <a
+ id="sec:conditionals"></a>Conditionals</h3>
+<!--l. 12392--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglossaryexists</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91001"></a> <span
+class="cmtt-10">\ifglossaryexists</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9; </div><hr>
+
+
+</p><!--l. 12395--><p class="noindent" >
+This checks if the glossary given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; exists. If it does &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is performed, otherwise
+&#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;.
+</p><!--l. 12399--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsentryexists</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91002"></a> <span
+class="cmtt-10">\ifglsentryexists</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9; </div><hr>
+</p><!--l. 12402--><p class="noindent" >
+This checks if the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; exists. If it does &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is performed,
+otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;. (Note that <span
+class="cmtt-10">\ifglsentryexists </span>will always be true after the containing
+glossary has been displayed via <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-91003"></a> or <span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-91004"></a> even if the entry is
+explicitly defined later in the document. This is because the entry has to be defined
+before it can be displayed in the glossary, see <a
+href="#sec:techissues"><span
+class="tcrm-1000">&sect;</span>4.8.1 </a><a
+href="#sec:techissues">Technical Issues<!--tex4ht:ref: sec:techissues --></a> for further
+details.)
+</p><!--l. 12412--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdoifexists</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91005"></a> <span
+class="cmtt-10">\glsdoifexists{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12414--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; exists. If it doesn&#8217;t exist, an error is generated. (This
+command uses <span
+class="cmtt-10">\ifglsentryexists</span>.)
+</p><!--l. 12419--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdoifnoexists</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91006"></a> <span
+class="cmtt-10">\glsdoifnoexists{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12421--><p class="noindent" >
+Does the reverse of <span
+class="cmtt-10">\glsdoifexists</span>. (This command uses <span
+class="cmtt-10">\ifglsentryexists</span>.)
+</p><!--l. 12425--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdoifexistsorwarn</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91007"></a> <span
+class="cmtt-10">\glsdoifexistsorwarn{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12427--><p class="noindent" >
+As <span
+class="cmtt-10">\glsdoifexists </span>but issues a warning rather than an error if the entry doesn&#8217;t
+exist.
+</p><!--l. 12431--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdoifexistsordo</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91008"></a> <span
+class="cmtt-10">\glsdoifexistsordo{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">else code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12433--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; exists otherwise generate an error and do &#x27E8;<span
+class="cmti-10">else</span>
+<span
+class="cmti-10">code</span>&#x27E9;.
+</p><!--l. 12437--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdoifnoexistsordo</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91009"></a> <span
+class="cmtt-10">\glsdoifnoexistsordo{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">else code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12439--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; doesn&#8217;t exist otherwise generate an error and do &#x27E8;<span
+class="cmti-10">else</span>
+<span
+class="cmti-10">code</span>&#x27E9;.
+</p><!--l. 12443--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsused</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91010"></a> <span
+class="cmtt-10">\ifglsused</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9; </div><hr>
+</p><!--l. 12446--><p class="noindent" >
+See <a
+href="#sec:glsunset"><span
+class="tcrm-1000">&sect;</span>14 </a><a
+href="#sec:glsunset">Unsetting and Resetting Entry Flags<!--tex4ht:ref: sec:glsunset --></a>.
+</p><!--l. 12449--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshaschildren</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91011"></a> <span
+class="cmtt-10">\ifglshaschildren</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9; </div><hr>
+</p><!--l. 12452--><p class="noindent" >
+This checks if the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has any sub-entries. If it does, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is
+performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;.
+</p><!--l. 12457--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasparent</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91012"></a> <span
+class="cmtt-10">\ifglshasparent</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9; </div><hr>
+</p><!--l. 12460--><p class="noindent" >
+This checks if the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a parent entry. If it does, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is
+performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;.
+</p><!--l. 12465--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshassymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91013"></a> <span
+class="cmtt-10">\ifglshassymbol{</span>&#x27E8;<span
+class="cmitt-10">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. 12467--><p class="noindent" >
+This checks if the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has had the <span
+class="cmss-10">symbol</span><a
+ id="dx1-91014"></a> field set. If it has, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9;
+is performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;.
+</p><!--l. 12472--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshaslong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91015"></a> <span
+class="cmtt-10">\ifglshaslong{</span>&#x27E8;<span
+class="cmitt-10">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. 12474--><p class="noindent" >
+This checks if the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has had the <span
+class="cmss-10">long</span><a
+ id="dx1-91016"></a> field set. If it has, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is
+performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;. This should be true for any entry that has been defined via
+<span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-91017"></a>. There is no check for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 12481--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91018"></a> <span
+class="cmtt-10">\ifglshasshort{</span>&#x27E8;<span
+class="cmitt-10">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. 12483--><p class="noindent" >
+This checks if the glossary entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has had the <span
+class="cmss-10">short</span><a
+ id="dx1-91019"></a> field set. If it has, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9;
+is performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;. This should be true for any entry that has been defined via
+<span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-91020"></a>. There is no check for the existence of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 12490--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91021"></a> <span
+class="cmtt-10">\ifglshasdesc{</span>&#x27E8;<span
+class="cmitt-10">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. 12492--><p class="noindent" >
+This checks if the <span
+class="cmss-10">description</span><a
+ id="dx1-91022"></a> field is non-empty for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. If it has, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9;
+is performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;. Compare with:
+</p><!--l. 12496--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsdescsuppressed</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91023"></a> <span
+class="cmtt-10">\ifglsdescsuppressed{</span>&#x27E8;<span
+class="cmitt-10">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. 12498--><p class="noindent" >
+This checks if the <span
+class="cmss-10">description</span><a
+ id="dx1-91024"></a> field has been set to just <span
+class="cmtt-10">\nopostdesc</span><a
+ id="dx1-91025"></a> for the entry given by
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. If it has, &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is performed, otherwise &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9;. There is no check for the existence
+of &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 12504--><p class="noindent" >For all other fields you can use:
+</p><!--l. 12505--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91026"></a> <span
+class="cmtt-10">\ifglshasfield{</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 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. 12508--><p class="noindent" >
+This tests the value of the field given by &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; for the entry identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. If the value is
+empty <span
+class="cmti-10">or the default value</span>, then &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9; is performed, otherwise &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; is performed. If
+the field supplied is unrecognised &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9; is performed and a warning is issued.
+Unlike the above commands, such as <span
+class="cmtt-10">\ifglshasshort</span>, an error occurs if the entry is
+undefined.
+</p><!--l. 12517--><p class="indent" > As from version 4.23, within &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; you can use
+</p><!--l. 12518--><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-91027"></a> <span
+class="cmtt-10">\glscurrentfieldvalue </span></div><hr>
+</p><!--l. 12520--><p class="noindent" >
+to access the field value. This command is initially defined to nothing but has no
+relevance outside &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9;. This saves re-accessing the field if the test is true. For
+example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-386">
+\ifglshasfield{useri}{sample}{,&#x00A0;\glscurrentfieldvalue}{}
+</div>
+<!--l. 12527--><p class="nopar" > will insert a comma, space and the field value if the <span
+class="cmss-10">user1</span><a
+ id="dx1-91028"></a> key has been set for the entry
+whose label is <span
+class="cmtt-10">sample</span>.
+</p><!--l. 12532--><p class="indent" > You can test if the value of the field is equal to a given string using:
+</p><!--l. 12534--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsfieldeq</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91029"></a> <span
+class="cmtt-10">\ifglsfieldeq{</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">string</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. 12536--><p class="noindent" >
+In this case the &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; must be the field name not the key (see <a
+href="#tab:fieldmap">table&#x00A0;4.1</a>). If the
+field isn&#8217;t recognised, an error will occur. This command internally uses <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-91030"></a>&#8217;s
+<span
+class="cmtt-10">\ifcsstring </span>to perform the comparison. <span
+class="cmti-10">The string is not expanded during the</span>
+<span
+class="cmti-10">test.</span>
+</p><!--l. 12543--><p class="indent" > The result may vary depending on whether or not expansion is on for the given field
+(when the entry was defined). For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-387">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\newcommand*{\foo}{FOO}
+&#x00A0;<br />\newglossaryentry{sample1}{name={sample1},description={an&#x00A0;example},
+&#x00A0;<br />user1={FOO}}
+&#x00A0;<br />\newglossaryentry{sample2}{name={sample2},description={an&#x00A0;example},
+&#x00A0;<br />user1={\foo}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\ifglsfieldeq{sample1}{useri}{FOO}{TRUE}{FALSE}.
+&#x00A0;<br />\ifglsfieldeq{sample2}{useri}{FOO}{TRUE}{FALSE}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 12562--><p class="nopar" > This will produce &#8220;TRUE&#8221; in both cases since expansion is on, so <span
+class="cmtt-10">\foo </span>was expanded to
+&#8220;FOO&#8221; when <span
+class="cmtt-10">sample2 </span>was defined. If the tests are changed to:
+
+
+</p>
+ <div class="verbatim" id="verbatim-388">
+\ifglsfieldeq{sample1}{useri}{\foo}{TRUE}{FALSE}.
+&#x00A0;<br />\ifglsfieldeq{sample2}{useri}{\foo}{TRUE}{FALSE}.
+</div>
+<!--l. 12570--><p class="nopar" > then this will produce &#8220;FALSE&#8221; in both cases. Now suppose expansion is switched off for the
+<span
+class="cmss-10">user1</span><a
+ id="dx1-91031"></a> key:
+
+
+</p>
+ <div class="verbatim" id="verbatim-389">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\newcommand*{\foo}{FOO}
+&#x00A0;<br />\glssetnoexpandfield{useri}
+&#x00A0;<br />\newglossaryentry{sample1}{name={sample1},description={an&#x00A0;example},
+&#x00A0;<br />user1={FOO}}
+&#x00A0;<br />\newglossaryentry{sample2}{name={sample2},description={an&#x00A0;example},
+&#x00A0;<br />user1={\foo}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\ifglsfieldeq{sample1}{useri}{FOO}{TRUE}{FALSE}.
+&#x00A0;<br />\ifglsfieldeq{sample2}{useri}{FOO}{TRUE}{FALSE}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 12592--><p class="nopar" > This now produces &#8220;TRUE&#8221; for the first case (comparing &#8220;FOO&#8221; with &#8220;FOO&#8221;) and
+&#8220;FALSE&#8221; for the second case (comparing &#8220;<span
+class="cmtt-10">\foo</span>&#8221; with &#8220;FOO&#8221;).
+</p><!--l. 12597--><p class="indent" > The reverse happens in the following:
+
+
+</p>
+ <div class="verbatim" id="verbatim-390">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\newcommand*{\foo}{FOO}
+&#x00A0;<br />\glssetnoexpandfield{useri}
+&#x00A0;<br />\newglossaryentry{sample1}{name={sample1},description={an&#x00A0;example},
+&#x00A0;<br />user1={FOO}}
+&#x00A0;<br />\newglossaryentry{sample2}{name={sample2},description={an&#x00A0;example},
+&#x00A0;<br />user1={\foo}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\ifglsfieldeq{sample1}{useri}{\foo}{TRUE}{FALSE}.
+&#x00A0;<br />\ifglsfieldeq{sample2}{useri}{\foo}{TRUE}{FALSE}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 12617--><p class="nopar" > This now produces &#8220;FALSE&#8221; for the first case (comparing &#8220;FOO&#8221; with &#8220;<span
+class="cmtt-10">\foo</span>&#8221;) and
+&#8220;TRUE&#8221; for the second case (comparing &#8220;<span
+class="cmtt-10">\foo</span>&#8221; with &#8220;<span
+class="cmtt-10">\foo</span>&#8221;).
+</p><!--l. 12622--><p class="indent" > You can test if the value of a field is equal to the replacement text of a command
+using:
+</p><!--l. 12624--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsfielddefeq</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91032"></a> <span
+class="cmtt-10">\ifglsfielddefeq{</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">command</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. 12626--><p class="noindent" >
+This internally uses <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-91033"></a>&#8217;s <span
+class="cmtt-10">\ifdefstrequal </span>command to perform the comparison. The
+argument &#x27E8;<span
+class="cmti-10">command</span>&#x27E9; must be a macro.
+</p><!--l. 12630--><p class="indent" > For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-391">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\newcommand*{\foo}{FOO}
+&#x00A0;<br />\glssetnoexpandfield{useri}
+&#x00A0;<br />\newglossaryentry{sample1}{name={sample1},description={an&#x00A0;example},
+&#x00A0;<br />user1={FOO}}
+&#x00A0;<br />\newglossaryentry{sample2}{name={sample2},description={an&#x00A0;example},
+&#x00A0;<br />user1={\foo}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\ifglsfielddefeq{sample1}{useri}{\foo}{TRUE}{FALSE}.
+&#x00A0;<br />\ifglsfielddefeq{sample2}{useri}{\foo}{TRUE}{FALSE}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 12650--><p class="nopar" > Here, the first case produces &#8220;TRUE&#8221; since the value of the <span
+class="cmtt-10">useri </span>field (&#8220;FOO&#8221;) is the same
+as the replacement text (definition) of <span
+class="cmtt-10">\foo </span>(&#8220;FOO&#8221;). We have the result &#8220;<span
+class="cmtt-10">FOO</span>&#8221; is equal to
+&#8220;<span
+class="cmtt-10">FOO</span>&#8221;.
+</p><!--l. 12656--><p class="indent" > The second case produces &#8220;FALSE&#8221; since the value of the <span
+class="cmtt-10">useri </span>field (&#8220;<span
+class="cmtt-10">\foo</span>&#8221;) is not the
+same as the replacement text (definition) of <span
+class="cmtt-10">\foo </span>(&#8220;FOO&#8221;). No expansion has been
+performed on the value of the <span
+class="cmtt-10">useri </span>field. We have the result &#8220;<span
+class="cmtt-10">\foo</span>&#8221; is not equal to
+&#8220;<span
+class="cmtt-10">FOO</span>&#8221;.
+</p><!--l. 12662--><p class="indent" > If we add:
+
+
+</p>
+ <div class="verbatim" id="verbatim-392">
+\newcommand{\FOO}{\foo}
+&#x00A0;<br />\ifglsfielddefeq{sample2}{useri}{\FOO}{TRUE}{FALSE}.
+</div>
+<!--l. 12666--><p class="nopar" > we now get &#8220;TRUE&#8221; since the value of the <span
+class="cmtt-10">useri </span>field (&#8220;<span
+class="cmtt-10">\foo</span>&#8221;) is the same as the
+replacement text (definition) of <span
+class="cmtt-10">\FOO </span>(&#8220;<span
+class="cmtt-10">\foo</span>&#8221;). We have the result &#8220;<span
+class="cmtt-10">\foo</span>&#8221; is equal to
+&#8220;<span
+class="cmtt-10">\foo</span>&#8221;.
+</p><!--l. 12672--><p class="indent" > There is a similar command that requires the control sequence name (without the leading
+backslash) instead of the actual control sequence:
+</p><!--l. 12674--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsfieldcseq</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-91034"></a> <span
+class="cmtt-10">\ifglsfieldcseq{</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">csname</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. 12676--><p class="noindent" >
+This internally uses <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-91035"></a>&#8217;s <span
+class="cmtt-10">\ifcsstrequal </span>command instead of <span
+class="cmtt-10">\ifdefstrequal</span>.
+</p><!--l. 12680--><p class="noindent" >
+</p>
+<!--l. 12680--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">16.3 </span> <a
+ id="sec:fetchset"></a>Fetching and Updating the Value of a Field</h3>
+<!--l. 12683--><p class="noindent" >You can fetch the value of a given field and store it in a control sequence using:
+</p><!--l. 12685--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfieldfetch</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-92001"></a> <span
+class="cmtt-10">\glsfieldfetch{</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. 12687--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label identifying the glossary entry, &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; is the field label (see
+<a
+href="#tab:fieldmap">table&#x00A0;4.1</a>) and &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; is the control sequence in which to store the value. Remember that
+&#x27E8;<span
+class="cmti-10">field</span>&#x27E9; is the internal label and is not necessarily the same as the key used to set
+that field in the argument of <span
+class="cmtt-10">\newglossaryentry </span>(or the optional argument of
+<span
+class="cmtt-10">\newacronym</span>).
+</p><!--l. 12696--><p class="indent" > You can change the value of a given field using one of the following commands. Note that
+these commands only change the value of the given field. They have no affect on any related
+field. For example, if you change the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-92002"></a> field, it won&#8217;t modify the value given by
+the <span
+class="cmss-10">name</span><a
+ id="dx1-92003"></a>, <span
+class="cmss-10">plural</span><a
+ id="dx1-92004"></a>, <span
+class="cmss-10">first</span><a
+ id="dx1-92005"></a> or any other related key.
+</p><!--l. 12702--><p class="indent" > In all the four related commands below, &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; are as above and &#x27E8;<span
+class="cmti-10">definition</span>&#x27E9; is the
+new value of the field.
+</p><!--l. 12706--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfielddef</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-92006"></a> <span
+class="cmtt-10">\glsfielddef{</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">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12708--><p class="noindent" >
+This uses <span
+class="cmtt-10">\def </span>to change the value of the field (so it will be localised by any grouping).
+</p><!--l. 12712--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfieldedef</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-92007"></a> <span
+class="cmtt-10">\glsfieldedef{</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">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12714--><p class="noindent" >
+This uses <span
+class="cmtt-10">\edef </span>to change the value of the field (so it will be localised by any grouping). Any
+fragile commands contained in the &#x27E8;<span
+class="cmti-10">definition</span>&#x27E9; must be protected.
+</p><!--l. 12719--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfieldgdef</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-92008"></a> <span
+class="cmtt-10">\glsfieldgdef{</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">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12721--><p class="noindent" >
+This uses <span
+class="cmtt-10">\gdef </span>to change the value of the field.
+
+
+</p><!--l. 12724--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfieldxdef</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-92009"></a> <span
+class="cmtt-10">\glsfieldxdef{</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">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12726--><p class="noindent" >
+This uses <span
+class="cmtt-10">\xdef </span>to change the value of the field. Any fragile commands contained in the
+&#x27E8;<span
+class="cmti-10">definition</span>&#x27E9; must be protected.
+
+
+</p>
+<!--l. 12731--><p class="indent" > </div>
+</p><!--l. 12731--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">17. <a
+ id="sec:prefix"></a>Prefixes or Determiners</h2>
+</p><!--l. 12733--><p class="indent" > The <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-93001"></a> package that comes with the <span
+class="cmss-10">glossaries </span>package provides additional
+keys that can be used as prefixes. For example, if you want to specify determiners (such as
+&#8220;a&#8221;, &#8220;an&#8221; or &#8220;the&#8221;). The <span
+class="cmss-10">glossaries-prefix </span>package automatically loads the <span
+class="cmss-10">glossaries </span>package
+and has the same package options.
+</p><!--l. 12741--><p class="indent" > The extra keys for <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-93002"></a> are as follows:
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">prefix</span><a
+ id="dx1-93003"></a> </dt><dd
+class="description">The prefix associated with the <span
+class="cmss-10">text</span><a
+ id="dx1-93004"></a> key. This defaults to nothing.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">prefixplural</span><a
+ id="dx1-93005"></a> </dt><dd
+class="description">The prefix associated with the <span
+class="cmss-10">plural</span><a
+ id="dx1-93006"></a> key. This defaults to nothing.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">prefixfirst</span><a
+ id="dx1-93007"></a> </dt><dd
+class="description">The prefix associated with the <span
+class="cmss-10">first</span><a
+ id="dx1-93008"></a> key. If omitted, this defaults to the value
+ of the <span
+class="cmss-10">prefix</span><a
+ id="dx1-93009"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">prefixfirstplural</span><a
+ id="dx1-93010"></a> </dt><dd
+class="description">The prefix associated with the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-93011"></a> key. If omitted, this defaults
+ to the value of the <span
+class="cmss-10">prefixplural</span><a
+ id="dx1-93012"></a> key.</dd></dl>
+<a
+ id="x1-93013r30"></a>
+<!--l. 12758--><p class="noindent" ><span
+class="cmbx-12">Example 30</span><span
+class="cmbx-12">&#x00A0;(Defining Determiners)</span><a
+ id="x1-93014"></a>
+</p><!--l. 12759--><p class="indent" > Here&#8217;s the start of my example document:
+
+
+</p>
+ <div class="verbatim" id="verbatim-393">
+documentclass{article}
+&#x00A0;<br />\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage[toc,acronym]{glossaries-prefix}
+</div>
+<!--l. 12765--><p class="nopar" > Note that I&#8217;ve simply replaced <span
+class="cmss-10">glossaries </span>from previous sample documents with <span
+class="cmss-10">glossaries-prefix</span>. Now for a
+sample definition<span class="footnote-mark"><a
+href="#fn1x17" id="fn1x17-bk"><sup class="textsuperscript">17.1</sup></a></span><a
+ id="x1-93015f1"></a>:
+
+
+</p>
+ <div class="verbatim" id="verbatim-394">
+\newglossaryentry{sample}{name={sample},%
+&#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example},%
+&#x00A0;<br />&#x00A0;&#x00A0;prefix={a~},%
+&#x00A0;<br />&#x00A0;&#x00A0;prefixplural={the\space}%
+&#x00A0;<br />}
+</div>
+<!--l. 12777--><p class="nopar" > Note that I&#8217;ve had to explicitly insert a&#x00A0;space after the prefix. This allows for the possibility
+of prefixes that shouldn&#8217;t have a&#x00A0;space, such as:
+
+
+</p>
+ <div class="verbatim" id="verbatim-395">
+\newglossaryentry{oeil}{name={oeil},
+&#x00A0;<br />&#x00A0;&#x00A0;plural={yeux},
+&#x00A0;<br />&#x00A0;&#x00A0;description={eye},
+&#x00A0;<br />&#x00A0;&#x00A0;prefix={l'},
+&#x00A0;<br />&#x00A0;&#x00A0;prefixplural={les\space}}
+</div>
+<!--l. 12787--><p class="nopar" > Where a space is required at the end of the prefix, you must use a&#x00A0;spacing command, such as
+<span
+class="cmtt-10">\space</span>, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\&#x2423;</span></span></span> (backslash space) or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">~</span></span></span> due to the automatic spacing trimming performed in
+&#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; options.
+</p><!--l. 12793--><p class="indent" > The prefixes can also be used with acronyms. For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-396">
+\newacronym
+&#x00A0;<br />&#x00A0;[%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;prefix={an\space},prefixfirst={a~}%
+&#x00A0;<br />&#x00A0;]{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 12799--><p class="nopar" > </p>
+<div class="center"
+>
+<!--l. 12800--><p class="noindent" >
+</p><!--l. 12800--><p class="noindent" >____________________________</p></div>
+<!--l. 12802--><p class="indent" > The <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-93017"></a> package provides convenient commands to use these prefixes with
+commands such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-93018"></a>. Note that the prefix is not considered part of the <a
+href="#glo:linktext">link text<a
+ id="dx1-93019"></a></a>, so it&#8217;s
+not included in the hyperlink (where hyperlinks are enabled). The options and any star or
+plus modifier are passed on to the <a
+href="#sec:gls-like"><span
+class="cmtt-10">\gls</span>-like</a>&#x00A0;command. (See <a
+href="#sec:glslink"><span
+class="tcrm-1000">&sect;</span>6 </a><a
+href="#sec:glslink">Links to Glossary Entries<!--tex4ht:ref: sec:glslink --></a> for
+further details.)
+</p><!--l. 12809--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\pgls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93020"></a> <span
+class="cmtt-10">\pgls[</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. 12811--><p class="noindent" >
+This is inserts the value of the <span
+class="cmss-10">prefix</span><a
+ id="dx1-93021"></a> key (or <span
+class="cmss-10">prefixfirst</span><a
+ id="dx1-93022"></a> key, on <a
+href="#glo:firstuse">first use</a>) in front of <span
+class="cmtt-10">\gls</span>
+<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>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>.
+</p><!--l. 12816--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Pgls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93023"></a> <span
+class="cmtt-10">\Pgls[</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. 12818--><p class="noindent" >
+If the <span
+class="cmss-10">prefix</span><a
+ id="dx1-93024"></a> key (or <span
+class="cmss-10">prefixfirst</span><a
+ id="dx1-93025"></a>, on first use) has been set, this displays the value of that
+key with the first letter converted to upper case followed by <span
+class="cmtt-10">\gls[</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>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>. If that key hasn&#8217;t been set, this is equivalent to <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-93026"></a><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>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>.
+</p><!--l. 12826--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\PGLS</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93027"></a> <span
+class="cmtt-10">\PGLS[</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. 12828--><p class="noindent" >
+As <span
+class="cmtt-10">\pgls </span>but converts the prefix to upper case and uses <span
+class="cmtt-10">\GLS</span><a
+ id="dx1-93028"></a> instead of <span
+class="cmtt-10">\gls</span>.
+</p><!--l. 12832--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\pglspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93029"></a> <span
+class="cmtt-10">\pglspl[</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. 12834--><p class="noindent" >
+This is inserts the value of the <span
+class="cmss-10">prefixplural</span><a
+ id="dx1-93030"></a> key (or <span
+class="cmss-10">prefixfirstplural</span><a
+ id="dx1-93031"></a> key, on <a
+href="#glo:firstuse">first use</a>) in front of
+<span
+class="cmtt-10">\glspl[</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>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>.
+</p><!--l. 12839--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Pglspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93032"></a> <span
+class="cmtt-10">\Pglspl[</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. 12841--><p class="noindent" >
+If the <span
+class="cmss-10">prefixplural</span><a
+ id="dx1-93033"></a> key (or <span
+class="cmss-10">prefixfirstplural</span><a
+ id="dx1-93034"></a>, on first use) has been set, this displays the value of
+that key with the first letter converted to upper case followed by <span
+class="cmtt-10">\glspl[</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>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>. If that key hasn&#8217;t been set, this is equivalent to <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-93035"></a><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>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>.
+</p><!--l. 12849--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\PGLSpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93036"></a> <span
+class="cmtt-10">\PGLSpl[</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. 12851--><p class="noindent" >
+As <span
+class="cmtt-10">\pglspl </span>but converts the prefix to upper case and uses <span
+class="cmtt-10">\GLSpl</span><a
+ id="dx1-93037"></a> instead of <span
+class="cmtt-10">\glspl</span>.
+
+
+<a
+ id="x1-93038r31"></a>
+</p><!--l. 12855--><p class="noindent" ><span
+class="cmbx-12">Example 31</span><span
+class="cmbx-12">&#x00A0;(Using Prefixes)</span><a
+ id="x1-93039"></a>
+</p><!--l. 12856--><p class="indent" > Continuing from Example&#x00A0;<a
+href="#x1-93013r30">30<!--tex4ht:ref: ex:determiners --></a>, now that I&#8217;ve defined my entries, I&#x00A0;can use them in the text
+via the above commands:
+
+
+</p>
+ <div class="verbatim" id="verbatim-397">
+First&#x00A0;use:&#x00A0;\pgls{svm}.&#x00A0;Next&#x00A0;use:&#x00A0;\pgls{svm}.
+&#x00A0;<br />Singular:&#x00A0;\pgls{sample},&#x00A0;\pgls{oeil}.
+&#x00A0;<br />Plural:&#x00A0;\pglspl{sample},&#x00A0;\pglspl{oeil}.
+</div>
+<!--l. 12862--><p class="nopar" > which produces:
+ </p><div class="quote">
+ <!--l. 12865--><p class="noindent" >First use: a&#x00A0;support vector machine (SVM). Next use: an SVM. Singular:
+ a&#x00A0;sample, l&#8217;oeil. Plural: the samples, les yeux.</p></div>
+<!--l. 12869--><p class="noindent" >For a complete document, see <a
+href="#x1-11115r39"><span
+class="cmtt-10">sample-prefix.tex</span></a>. </p>
+<div class="center"
+>
+<!--l. 12870--><p class="noindent" >
+</p><!--l. 12870--><p class="noindent" >____________________________</p></div>
+<!--l. 12872--><p class="indent" > This package also provides the commands described below, none of which perform any
+check to determine the entry&#8217;s existence.
+</p><!--l. 12875--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasprefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93040"></a> <span
+class="cmtt-10">\ifglshasprefix{</span>&#x27E8;<span
+class="cmitt-10">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. 12877--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; if the entry identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a non-empty value for the <span
+class="cmss-10">prefix</span><a
+ id="dx1-93041"></a>
+key.
+</p><!--l. 12881--><p class="indent" > This package also provides the following commands:
+</p><!--l. 12882--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasprefixplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93042"></a> <span
+class="cmtt-10">\ifglshasprefixplural{</span>&#x27E8;<span
+class="cmitt-10">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. 12884--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; if the entry identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a non-empty value for the <span
+class="cmss-10">prefixplural</span><a
+ id="dx1-93043"></a>
+key.
+</p><!--l. 12888--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasprefixfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93044"></a> <span
+class="cmtt-10">\ifglshasprefixfirst{</span>&#x27E8;<span
+class="cmitt-10">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. 12890--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; if the entry identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a non-empty value for the <span
+class="cmss-10">prefixfirst</span><a
+ id="dx1-93045"></a>
+key.
+</p><!--l. 12894--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglshasprefixfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93046"></a> <span
+class="cmtt-10">\ifglshasprefixfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true part</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12896--><p class="noindent" >
+Does &#x27E8;<span
+class="cmti-10">true part</span>&#x27E9; if the entry identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a non-empty value for the <span
+class="cmss-10">prefixfirstplural</span><a
+ id="dx1-93047"></a>
+key.
+</p><!--l. 12900--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93048"></a> <span
+class="cmtt-10">\glsentryprefix{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12902--><p class="noindent" >
+Displays the value of the <span
+class="cmss-10">prefix</span><a
+ id="dx1-93049"></a> key for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 12906--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprefixfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93050"></a> <span
+class="cmtt-10">\glsentryprefixfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12908--><p class="noindent" >
+Displays the value of the <span
+class="cmss-10">prefixfirst</span><a
+ id="dx1-93051"></a> key for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+
+
+</p><!--l. 12912--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprefixplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93052"></a> <span
+class="cmtt-10">\glsentryprefixplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12914--><p class="noindent" >
+Displays the value of the <span
+class="cmss-10">prefixplural</span><a
+ id="dx1-93053"></a> key for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. (No check is performed
+to determine if the entry exists.)
+</p><!--l. 12919--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprefixfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93054"></a> <span
+class="cmtt-10">\glsentryprefixfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12921--><p class="noindent" >
+Displays the value of the <span
+class="cmss-10">prefixfirstplural</span><a
+ id="dx1-93055"></a> key for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. (No check is
+performed to determine if the entry exists.)
+</p><!--l. 12926--><p class="indent" > There are also variants that convert the first letter to upper
+case<span class="footnote-mark"><a
+href="#fn2x17" id="fn2x17-bk"><sup class="textsuperscript">17.2</sup></a></span><a
+ id="x1-93056f2"></a>:
+</p><!--l. 12929--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryprefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93057"></a> <span
+class="cmtt-10">\Glsentryprefix{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12931--><p class="noindent" >
+</p><!--l. 12932--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryprefixfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93058"></a> <span
+class="cmtt-10">\Glsentryprefixfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12934--><p class="noindent" >
+</p><!--l. 12935--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryprefixplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93059"></a> <span
+class="cmtt-10">\Glsentryprefixplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12937--><p class="noindent" >
+</p><!--l. 12939--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsentryprefixfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-93060"></a> <span
+class="cmtt-10">\Glsentryprefixfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12941--><p class="noindent" >
+</p><!--l. 12943--><p class="indent" > <div class="important" title="Important Note"> As with analogous commands such as <span
+class="cmtt-10">\Glsentrytext</span><a
+ id="dx1-93061"></a>, these commands aren&#8217;t
+expandable so can&#8217;t be used in PDF bookmarks. </div>
+</p><!--l. 12946--><p class="noindent" >
+<a
+ id="x1-93062r32"></a>
+</p><!--l. 12948--><p class="noindent" ><span
+class="cmbx-12">Example 32</span><span
+class="cmbx-12">&#x00A0;(Adding Determiner to Glossary Style)</span><a
+ id="x1-93063"></a>
+</p><!--l. 12949--><p class="indent" > You can use the above commands to define a new glossary style that uses the determiner.
+For example, the following style is a slight modification of the <span
+class="cmss-10">list</span><a
+ id="dx1-93064"></a> style that inserts the prefix
+before the name:
+
+
+</p>
+ <div class="verbatim" id="verbatim-398">
+\newglossarystyle{plist}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\setglossarystyle{list}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glossentry}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\item[\glsentryitem{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentryprefix{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glstarget{##1}{\glossentryname{##1}}]
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossentrydesc{##1}\glspostdescription\space&#x00A0;##2}%
+&#x00A0;<br />}
+</div>
+<!--l. 12962--><p class="nopar" > </p>
+<div class="center"
+>
+<!--l. 12963--><p class="noindent" >
+</p><!--l. 12963--><p class="noindent" >____________________________</p></div>
+
+
+<!--l. 12965--><p class="indent" > </div>
+</p><!--l. 12965--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">18. <a
+ id="sec:accsupp"></a>Accessibility Support</h2>
+</p><!--l. 12967--><p class="indent" > Limited accessibility support is provided by the accompanying <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-94001"></a> package,
+but note that this package is experimental and it requires the <span
+class="cmss-10">accsupp</span><a
+ id="dx1-94002"></a> package which is also
+listed as experimental. This package defines additional keys that may be used when defining
+glossary entries. The keys are as follows:
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">access</span><a
+ id="dx1-94003"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">name</span><a
+ id="dx1-94004"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">textaccess</span><a
+ id="dx1-94005"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">text</span><a
+ id="dx1-94006"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">firstaccess</span><a
+ id="dx1-94007"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">first</span><a
+ id="dx1-94008"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">pluralaccess</span><a
+ id="dx1-94009"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">plural</span><a
+ id="dx1-94010"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">firstpluralaccess</span><a
+ id="dx1-94011"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-94012"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">symbolaccess</span><a
+ id="dx1-94013"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">symbol</span><a
+ id="dx1-94014"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">symbolpluralaccess</span><a
+ id="dx1-94015"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">symbolplural</span><a
+ id="dx1-94016"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">descriptionaccess</span><a
+ id="dx1-94017"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">description</span><a
+ id="dx1-94018"></a> key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">descriptionpluralaccess</span><a
+ id="dx1-94019"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-94020"></a>
+ key.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">longaccess</span><a
+ id="dx1-94021"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">long</span><a
+ id="dx1-94022"></a> key (used by <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-94023"></a>).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">shortaccess</span><a
+ id="dx1-94024"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">short</span><a
+ id="dx1-94025"></a> key (used by
+ <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-94026"></a>).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">longpluralaccess</span><a
+ id="dx1-94027"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">longplural</span><a
+ id="dx1-94028"></a> key (used by
+ <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-94029"></a>).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">shortpluralaccess</span><a
+ id="dx1-94030"></a> </dt><dd
+class="description">The replacement text corresponding to the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-94031"></a> key (used by
+ <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-94032"></a>).
+ </dd></dl>
+<!--l. 13014--><p class="noindent" >For example:
+
+
+</p>
+ <div class="verbatim" id="verbatim-399">
+\newglossaryentry{tex}{name={\TeX},description={Document
+&#x00A0;<br />preparation&#x00A0;language},access={TeX}}
+</div>
+<!--l. 13018--><p class="nopar" > Now <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{tex}</span></span></span> will be equivalent to
+
+
+</p>
+ <div class="verbatim" id="verbatim-400">
+\BeginAccSupp{ActualText=TeX}\TeX\EndAccSupp{}
+</div>
+<!--l. 13022--><p class="nopar" > The sample file <a
+href="#x1-11117r40"><span
+class="cmtt-10">sampleaccsupp.tex</span></a> illustrates the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-94033"></a> package.
+</p><!--l. 13026--><p class="indent" > See the documented code (<span
+class="cmtt-10">glossaries-code.pdf</span>) for further details. I&#x00A0;recommend that
+you also read the <span
+class="cmss-10">accsupp</span><a
+ id="dx1-94034"></a> documentation.
+
+
+</p>
+<!--l. 13030--><p class="indent" > </div>
+</p><!--l. 13030--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">19. <a
+ id="sec:trouble"></a>Troubleshooting</h2>
+</p><!--l. 13033--><p class="indent" > In addition to the sample files listed in <a
+href="#sec:samples"><span
+class="tcrm-1000">&sect;</span>1.2 </a><a
+href="#sec:samples">Sample Documents<!--tex4ht:ref: sec:samples --></a>, the <span
+class="cmss-10">glossaries </span>package
+comes with some minimal example files, <span
+class="cmtt-10">minimalgls.tex</span>, <span
+class="cmtt-10">mwe-gls.tex</span>, <span
+class="cmtt-10">mwe-acr.tex </span>and
+<span
+class="cmtt-10">mwe-acr-desc.tex</span>, which can be used for testing. These should be located in the <span
+class="cmtt-10">samples</span>
+subdirectory (folder) of the <span
+class="cmss-10">glossaries </span>documentation directory. The location varies according to
+your operating system and <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;installation. For example, on my Linux partition it can be found
+in <span
+class="cmtt-10">/usr/local/texlive/2014/texmf-dist/doc/latex/glossaries/</span>. The <a
+href="#glo:makeglossariesgui"><span
+class="cmtt-10">makeglossariesgui</span><a
+ id="dx1-95001"></a></a>
+application can also be used to test for various problems. Further information on debugging
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;code is available at <a
+href="http://www.dickimaw-books.com/latex/minexample/" class="url" ><span
+class="cmtt-10">http://www.dickimaw-books.com/latex/minexample/</span></a>.
+</p><!--l. 13048--><p class="indent" > If you have any problems, please first consult the <a
+href="http://www.dickimaw-books.com/faqs/glossariesfaq.html" ><span
+class="cmss-10">glossaries </span>FAQ</a>. If that doesn&#8217;t
+help, try posting your query to somewhere like the <span
+class="cmtt-10">comp.text.tex </span>newsgroup, the
+<a
+href="http://www.latex-community.org/" ><span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;Community Forum</a> or <a
+href="http://tex.stackexchange.com/" ><span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;on StackExchange</a>. Bug reports can be submitted via
+<a
+href="http://www.dickimaw-books.com/bug-report.html" >my package bug report form</a>.
+
+
+</p>
+<!--l. 2--><p class="indent" > </div>
+</p><!--l. 2--><p class="noindent" ><a
+href="#top">Top</a></p><h2 class="likechapterHead"><a
+ id="x1-9600019"></a>Index</h2>
+ <span
+class="cmbx-10">Symbols</span>
+ <div class="theindex"><span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\@gls@codepage</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-21012" ><span
+class="cmti-10">1</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\@glsorder</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-21009" ><span
+class="cmti-10">2</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\@istfilename</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-21004" ><span
+class="cmti-10">3</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\@newglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-21003" ><span
+class="cmti-10">4</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\@xdylanguage</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-21011" ><span
+class="cmti-10">5</span></a> <br /></span>
+<p class="theindex"> <span
+class="cmbx-10">A</span>
+<span class="index-item"><span
+class="cmss-10">accsupp </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94002" >6</a>, <a
+href="glossaries-user.html#dx1-94034" >7</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ACRfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69080" ><span
+class="cmti-10">8</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Acrfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69079" ><span
+class="cmti-10">9</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69076" ><span
+class="cmti-10">10</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrfullfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69077" ><span
+class="cmti-10">11</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69078" ><span
+class="cmti-10">12</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ACRfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69083" ><span
+class="cmti-10">13</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Acrfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69082" ><span
+class="cmti-10">14</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69081" ><span
+class="cmti-10">15</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ACRlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69069" ><span
+class="cmti-10">16</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Acrlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69068" ><span
+class="cmti-10">17</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69064" ><span
+class="cmti-10">18</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ACRlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69072" ><span
+class="cmti-10">19</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Acrlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69071" ><span
+class="cmti-10">20</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69070" ><span
+class="cmti-10">21</span></a> <br /></span>
+<span class="index-item">acronym styles:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">dua</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71018" >22</a>, <a
+href="glossaries-user.html#dx1-71052" >23</a>, <a
+href="glossaries-user.html#dx1-71056" >24</a>, <a
+href="glossaries-user.html#dx1-72021" >25</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">dua-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71053" >26</a>, <a
+href="glossaries-user.html#dx1-71059" >27</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71019" >28</a>, <a
+href="glossaries-user.html#dx1-71063" >29</a>, <a
+href="glossaries-user.html#dx1-72020" >30</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71073" >31</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71064" >32</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sc-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11027" >33</a>, <a
+href="glossaries-user.html#dx1-71074" >34</a>, <a
+href="glossaries-user.html#dx1-71083" >35</a>, <a
+href="glossaries-user.html#dx1-71086" >36</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71065" >37</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sm-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71075" >38</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sc-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71007" >39</a>, <a
+href="glossaries-user.html#dx1-71021" >40</a>, <a
+href="glossaries-user.html#dx1-71040" >41</a>, <a
+href="glossaries-user.html#dx1-72033" >42</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-user.html#dx1-71036" >43</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57069" >44</a>, <a
+href="glossaries-user.html#dx1-71020" >45</a>, <a
+href="glossaries-user.html#dx1-71039" >46</a>, <a
+href="glossaries-user.html#dx1-72011" >47</a>, <a
+href="glossaries-user.html#dx1-72028" >48</a>, <a
+href="glossaries-user.html#dx1-72034" >49</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71035" >50</a>, <a
+href="glossaries-user.html#dx1-71051" >51</a>, <a
+href="glossaries-user.html#dx1-72030" >52</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sm-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71011" >53</a>, <a
+href="glossaries-user.html#dx1-71022" >54</a>, <a
+href="glossaries-user.html#dx1-71041" >55</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-user.html#dx1-71037" >56</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sp-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71023" >57</a>, <a
+href="glossaries-user.html#dx1-71027" >58</a>, <a
+href="glossaries-user.html#dx1-71042" >59</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-user.html#dx1-71038" >60</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">sc-short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71030" >61</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-user.html#dx1-71049" >62</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71029" >63</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">short-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71048" >64</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">sm-short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71031" >65</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-user.html#dx1-71050" >66</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acronymentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-70010" ><span
+class="cmti-10">67</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acronymfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71002" ><span
+class="cmti-10">68</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acronymsort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-70012" ><span
+class="cmti-10">69</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acronymtype</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-68016" ><span
+class="cmti-10">70</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ACRshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69058" ><span
+class="cmti-10">71</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Acrshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69057" ><span
+class="cmti-10">72</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69052" ><span
+class="cmti-10">73</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ACRshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69061" ><span
+class="cmti-10">74</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Acrshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69060" ><span
+class="cmti-10">75</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acrshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69059" ><span
+class="cmti-10">76</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\altnewglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-68008" ><span
+class="cmti-10">77</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">amsgen </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-14" >78</a>, <a
+href="glossaries-user.html#dx1-15" >79</a>, <a
+href="glossaries-user.html#dx1-16" >80</a>, <a
+href="glossaries-user.html#dx1-72080" >81</a>, <a
+href="glossaries-user.html#dx1-72081" >82</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">amsmath </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55006" >83</a>, <a
+href="glossaries-user.html#dx1-75021" >84</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">arara</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-4008" >85</a>, <a
+href="glossaries-user.html#dx1-7028" >86</a>, <a
+href="glossaries-user.html#dx1-16021" >87</a>, <a
+href="glossaries-user.html#dx1-16022" >88</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">array </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81006" >89</a>, <a
+href="glossaries-user.html#dx1-84006" >90</a> <br /></span>
+</p><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-user.html#dx1-7016" >91</a>, <a
+href="glossaries-user.html#dx1-13033" >92</a>, <a
+href="glossaries-user.html#dx1-13045" >93</a>, <a
+href="glossaries-user.html#dx1-13049" >94</a>, <a
+href="glossaries-user.html#dx1-14001" >95</a>, <a
+href="glossaries-user.html#dx1-14003" >96</a>, <a
+href="glossaries-user.html#dx1-14005" >97</a>, <a
+href="glossaries-user.html#dx1-14007" >98</a>, <a
+href="glossaries-user.html#dx1-14016" >99</a>, <a
+href="glossaries-user.html#dx1-14018" >100</a>, <a
+href="glossaries-user.html#dx1-14019" >101</a>, <a
+href="glossaries-user.html#dx1-14022" >102</a>, <a
+href="glossaries-user.html#dx1-14034" >103</a>, <a
+href="glossaries-user.html#dx1-14037" >104</a>, <a
+href="glossaries-user.html#dx1-14040" >105</a>, <a
+href="glossaries-user.html#dx1-14047" >106</a>, <a
+href="glossaries-user.html#dx1-23053" >107</a>, <a
+href="glossaries-user.html#dx1-23058" >108</a>, <a
+href="glossaries-user.html#dx1-23063" >109</a>, <a
+href="glossaries-user.html#dx1-23065" >110</a>, <a
+href="glossaries-user.html#dx1-23067" >111</a>, <a
+href="glossaries-user.html#dx1-23072" >112</a>, <a
+href="glossaries-user.html#dx1-23078" >113</a>, <a
+href="glossaries-user.html#dx1-34010" >114</a>, <a
+href="glossaries-user.html#dx1-44012" >115</a>, <a
+href="glossaries-user.html#dx1-47007" >116</a>, <a
+href="glossaries-user.html#dx1-68023" >117</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">beamer </span>class&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55004" >118</a>, <a
+href="glossaries-user.html#dx1-55010" >119</a>, <a
+href="glossaries-user.html#dx1-75014" >120</a>, <a
+href="glossaries-user.html#dx1-75016" >121</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">beamer </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-14046" >122</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">bib2gls</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-2" >123</a>, <a
+href="glossaries-user.html#dx1-18" >124</a>, <a
+href="glossaries-user.html#dx1-3001" ><span
+class="cmbx-10">125</span></a>, <a
+href="glossaries-user.html#dx1-9001" >126</a>, <a
+href="glossaries-user.html#dx1-9002" >127</a>, <a
+href="glossaries-user.html#dx1-9008" >128</a>, <a
+href="glossaries-user.html#dx1-9009" >129</a>, <a
+href="glossaries-user.html#dx1-10003" >130</a>, <a
+href="glossaries-user.html#dx1-13004" >131</a>, <a
+href="glossaries-user.html#dx1-13009" >132</a>, <a
+href="glossaries-user.html#dx1-13012" >133</a>, <a
+href="glossaries-user.html#dx1-13022" >134</a>, <a
+href="glossaries-user.html#dx1-13026" >135</a>, <a
+href="glossaries-user.html#dx1-14051" >136</a>, <a
+href="glossaries-user.html#dx1-14055" >137</a>, <a
+href="glossaries-user.html#dx1-16011" >138</a>, <a
+href="glossaries-user.html#dx1-16013" >139</a>, <a
+href="glossaries-user.html#dx1-16015" >140</a>, <a
+href="glossaries-user.html#dx1-16018" >141</a>, <a
+href="glossaries-user.html#dx1-31001" >142</a>, <a
+href="glossaries-user.html#dx1-44009" >143</a>, <a
+href="glossaries-user.html#dx1-49013" >144</a>, <a
+href="glossaries-user.html#dx1-49015" >145</a>, <a
+href="glossaries-user.html#dx1-50008" >146</a>, <a
+href="glossaries-user.html#dx1-50009" >147</a>, <a
+href="glossaries-user.html#dx1-50018" >148</a>, <a
+href="glossaries-user.html#dx1-50019" >149</a>, <a
+href="glossaries-user.html#dx1-52016" >150</a>, <a
+href="glossaries-user.html#dx1-52017" >151</a>, <a
+href="glossaries-user.html#dx1-63042" >152</a>, <a
+href="glossaries-user.html#dx1-63043" >153</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">booktabs </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80006" >154</a>, <a
+href="glossaries-user.html#dx1-81009" >155</a>, <a
+href="glossaries-user.html#dx1-82011" >156</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">C</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-user.html#dx1-76010" ><span
+class="cmti-10">157</span></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-user.html#dx1-76008" ><span
+class="cmti-10">158</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-user.html#dx1-76014" ><span
+class="cmti-10">159</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-user.html#dx1-76012" ><span
+class="cmti-10">160</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-user.html#dx1-76011" ><span
+class="cmti-10">161</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-user.html#dx1-76009" ><span
+class="cmti-10">162</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-user.html#dx1-76015" ><span
+class="cmti-10">163</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-user.html#dx1-76013" ><span
+class="cmti-10">164</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">classicthesis </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25027" >165</a>, <a
+href="glossaries-user.html#dx1-25045" >166</a>, <a
+href="glossaries-user.html#dx1-25050" >167</a>, <a
+href="glossaries-user.html#dx1-79007" >168</a>, <a
+href="glossaries-user.html#dx1-79046" >169</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\currentglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88070" ><span
+class="cmti-10">170</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">D</span>
+<span class="index-item"><span
+class="cmss-10">datatool </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13" >171</a>, <a
+href="glossaries-user.html#dx1-63045" >172</a>, <a
+href="glossaries-user.html#dx1-63048" >173</a>, <a
+href="glossaries-user.html#dx1-63050" >174</a>, <a
+href="glossaries-user.html#dx1-63052" >175</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">datatool-base </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-12" >176</a>, <a
+href="glossaries-user.html#dx1-13019" >177</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\DeclareAcronymList</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27022" ><span
+class="cmti-10">178</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\defglsentryfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57007" ><span
+class="cmti-10">179</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\DefineAcronymSynonyms</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27027" ><span
+class="cmti-10">180</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">doc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-21" >181</a>, <a
+href="glossaries-user.html#dx1-22" >182</a>, <a
+href="glossaries-user.html#dx1-26" >183</a>, <a
+href="glossaries-user.html#dx1-29044" >184</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">E</span>
+<span class="index-item">encap&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-50002" >185</a> <br /></span>
+<span class="index-item">entry location&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3002" ><span
+class="cmbx-10">186</span></a> <br /></span>
+<span class="index-item">environments:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">theglossary</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88003" ><span
+class="cmti-10">187</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">etoolbox </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-8" >188</a>, <a
+href="glossaries-user.html#dx1-26043" >189</a>, <a
+href="glossaries-user.html#dx1-57018" >190</a>, <a
+href="glossaries-user.html#dx1-91030" >191</a>, <a
+href="glossaries-user.html#dx1-91033" >192</a>, <a
+href="glossaries-user.html#dx1-91035" >193</a> <br /></span>
+<span class="index-item">Extended Latin Alphabet&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3003" ><span
+class="cmbx-10">194</span></a> <br /></span>
+<span class="index-item">extended Latin character&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3005" >195</a>, <a
+href="glossaries-user.html#dx1-3006" ><span
+class="cmbx-10">196</span></a>, <a
+href="glossaries-user.html#dx1-3030" >197</a>, <a
+href="glossaries-user.html#dx1-3045" >198</a>, <a
+href="glossaries-user.html#dx1-3052" >199</a>, <a
+href="glossaries-user.html#dx1-11098" >200</a>, <a
+href="glossaries-user.html#dx1-34008" >201</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">F</span>
+<span class="index-item">file types<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.alg</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-16079" >202</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.aux</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13024" >203</a>, <a
+href="glossaries-user.html#dx1-17002" >204</a>, <a
+href="glossaries-user.html#dx1-17018" >205</a>, <a
+href="glossaries-user.html#dx1-54008" >206</a>, <a
+href="glossaries-user.html#dx1-65004" >207</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.glg</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-16078" >208</a>, <a
+href="glossaries-user.html#dx1-19016" >209</a>, <a
+href="glossaries-user.html#dx1-20013" >210</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.glg2</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25" >211</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.glo</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17019" >212</a>, <a
+href="glossaries-user.html#dx1-19018" >213</a>, <a
+href="glossaries-user.html#dx1-20015" >214</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.gls</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-19017" >215</a>, <a
+href="glossaries-user.html#dx1-20014" >216</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.glsdefs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-44013" >217</a>, <a
+href="glossaries-user.html#dx1-47013" >218</a>, <a
+href="glossaries-user.html#dx1-47017" >219</a>, <a
+href="glossaries-user.html#dx1-47018" >220</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.ist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-20005" >221</a>, <a
+href="glossaries-user.html#dx1-20007" >222</a>, <a
+href="glossaries-user.html#dx1-21006" >223</a>, <a
+href="glossaries-user.html#dx1-26061" >224</a>, <a
+href="glossaries-user.html#dx1-33003" >225</a>, <a
+href="glossaries-user.html#dx1-33012" >226</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.tex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13014" >227</a>, <a
+href="glossaries-user.html#dx1-13023" >228</a>, <a
+href="glossaries-user.html#dx1-19010" >229</a>, <a
+href="glossaries-user.html#dx1-20004" >230</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.xdy</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-19012" >231</a>, <a
+href="glossaries-user.html#dx1-19013" >232</a>, <a
+href="glossaries-user.html#dx1-21008" >233</a>, <a
+href="glossaries-user.html#dx1-26070" >234</a>, <a
+href="glossaries-user.html#dx1-33005" >235</a>, <a
+href="glossaries-user.html#dx1-33009" >236</a>, <a
+href="glossaries-user.html#dx1-33014" >237</a>, <a
+href="glossaries-user.html#dx1-64005" >238</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">glo2</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24" >239</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">gls2</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23" >240</a> <br /></span>
+<span class="index-item">first use&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3010" >241</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;flag&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3018" >242</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;text&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3019" >243</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\firstacronymfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71001" ><span
+class="cmti-10">244</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">flowfram </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83011" >245</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">fmtcount </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11090" >246</a>, <a
+href="glossaries-user.html#dx1-66047" >247</a>, <a
+href="glossaries-user.html#dx1-66049" >248</a>, <a
+href="glossaries-user.html#dx1-66050" >249</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">fontspec </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34142" >250</a>, <a
+href="glossaries-user.html#dx1-67006" >251</a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\forallacronyms</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-90002" ><span
+class="cmti-10">252</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\forallglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-90001" ><span
+class="cmti-10">253</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\forallglsentries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-90007" ><span
+class="cmti-10">254</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\forglsentries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-90005" ><span
+class="cmti-10">255</span></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">\Genacrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57065" ><span
+class="cmti-10">256</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\genacrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57059" ><span
+class="cmti-10">257</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GenericAcronymFields</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-72022" ><span
+class="cmti-10">258</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Genplacrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57066" ><span
+class="cmti-10">259</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\genplacrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57061" ><span
+class="cmti-10">260</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3" >261</a>, <a
+href="glossaries-user.html#dx1-12001" >262</a>, <a
+href="glossaries-user.html#dx1-14008" >263</a>, <a
+href="glossaries-user.html#dx1-29038" >264</a>, <a
+href="glossaries-user.html#dx1-29041" >265</a>, <a
+href="glossaries-user.html#dx1-44011" >266</a>, <a
+href="glossaries-user.html#dx1-51007" >267</a>, <a
+href="glossaries-user.html#dx1-51014" >268</a>, <a
+href="glossaries-user.html#dx1-54021" >269</a>, <a
+href="glossaries-user.html#dx1-54040" >270</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-accsupp </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11118" >271</a>, <a
+href="glossaries-user.html#dx1-34016" >272</a>, <a
+href="glossaries-user.html#dx1-94001" >273</a>, <a
+href="glossaries-user.html#dx1-94033" >274</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-babel </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23059" >275</a>, <a
+href="glossaries-user.html#dx1-23070" >276</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-extra </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-5008" >277</a>, <a
+href="glossaries-user.html#dx1-7009" >278</a>, <a
+href="glossaries-user.html#dx1-7010" >279</a>, <a
+href="glossaries-user.html#dx1-7023" >280</a>, <a
+href="glossaries-user.html#dx1-7039" >281</a>, <a
+href="glossaries-user.html#dx1-8011" >282</a>, <a
+href="glossaries-user.html#dx1-8012" >283</a>, <a
+href="glossaries-user.html#dx1-8020" >284</a>, <a
+href="glossaries-user.html#dx1-9003" >285</a>, <a
+href="glossaries-user.html#dx1-10004" >286</a>, <a
+href="glossaries-user.html#dx1-12015" >287</a>, <a
+href="glossaries-user.html#dx1-13011" >288</a>, <a
+href="glossaries-user.html#dx1-16010" >289</a>, <a
+href="glossaries-user.html#dx1-16012" >290</a>, <a
+href="glossaries-user.html#dx1-26021" >291</a>, <a
+href="glossaries-user.html#dx1-34002" >292</a>, <a
+href="glossaries-user.html#dx1-34005" >293</a>, <a
+href="glossaries-user.html#dx1-62006" >294</a>, <a
+href="glossaries-user.html#dx1-63079" >295</a>, <a
+href="glossaries-user.html#dx1-69001" >296</a>, <a
+href="glossaries-user.html#dx1-69006" >297</a>, <a
+href="glossaries-user.html#dx1-69047" >298</a>, <a
+href="glossaries-user.html#dx1-78042" >299</a>, <a
+href="glossaries-user.html#dx1-78044" >300</a>, <a
+href="glossaries-user.html#dx1-78046" >301</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-extra-stylemods </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78045" >302</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-polyglossia </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23061" >303</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-prefix </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11116" >304</a>, <a
+href="glossaries-user.html#dx1-34015" >305</a>, <a
+href="glossaries-user.html#dx1-93001" >306</a>, <a
+href="glossaries-user.html#dx1-93017" >307</a> <br /></span>
+<span class="index-item">glossary counters:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">glossaryentry</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25004" ><span
+class="cmti-10">308</span></a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">glossarysubentry</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25022" ><span
+class="cmti-10">309</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17" >310</a>, <a
+href="glossaries-user.html#dx1-4005" >311</a>, <a
+href="glossaries-user.html#dx1-29035" >312</a>, <a
+href="glossaries-user.html#dx1-74001" >313</a>, <a
+href="glossaries-user.html#dx1-74002" >314</a>, <a
+href="glossaries-user.html#dx1-74005" >315</a> <br /></span>
+<span class="index-item">glossary styles:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-71047" >316</a>, <a
+href="glossaries-user.html#dx1-71080" >317</a>, <a
+href="glossaries-user.html#dx1-72068" >318</a>, <a
+href="glossaries-user.html#dx1-79025" >319</a>, <a
+href="glossaries-user.html#dx1-79031" >320</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlistgroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79030" >321</a>, <a
+href="glossaries-user.html#dx1-79033" >322</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlisthypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79032" >323</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlong4col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78024" >324</a>, <a
+href="glossaries-user.html#dx1-80032" >325</a>, <a
+href="glossaries-user.html#dx1-80039" >326</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlong4col-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82031" >327</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlong4colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80043" >328</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlong4colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80045" >329</a>, <a
+href="glossaries-user.html#dx1-82032" >330</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlong4colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80047" >331</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlongragged4col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81030" >332</a>, <a
+href="glossaries-user.html#dx1-81035" >333</a>, <a
+href="glossaries-user.html#dx1-81037" >334</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlongragged4col-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82037" >335</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlongragged4colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81034" >336</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlongragged4colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81036" >337</a>, <a
+href="glossaries-user.html#dx1-81039" >338</a>, <a
+href="glossaries-user.html#dx1-82038" >339</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altlongragged4colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81038" >340</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuper4col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78025" >341</a>, <a
+href="glossaries-user.html#dx1-83037" >342</a>, <a
+href="glossaries-user.html#dx1-83044" >343</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuper4colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83048" >344</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuper4colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83050" >345</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuper4colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83052" >346</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuperragged4col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84032" >347</a>, <a
+href="glossaries-user.html#dx1-84035" >348</a>, <a
+href="glossaries-user.html#dx1-84037" >349</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuperragged4colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84034" >350</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuperragged4colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84036" >351</a>, <a
+href="glossaries-user.html#dx1-84039" >352</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">altsuperragged4colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84038" >353</a> <br /></span>
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">alttree</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78028" >354</a>, <a
+href="glossaries-user.html#dx1-85010" >355</a>, <a
+href="glossaries-user.html#dx1-85013" >356</a>, <a
+href="glossaries-user.html#dx1-85034" >357</a>, <a
+href="glossaries-user.html#dx1-85047" >358</a>, <a
+href="glossaries-user.html#dx1-85052" >359</a>, <a
+href="glossaries-user.html#dx1-85056" >360</a>, <a
+href="glossaries-user.html#dx1-86040" >361</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">alttreegroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85055" >362</a>, <a
+href="glossaries-user.html#dx1-85058" >363</a>, <a
+href="glossaries-user.html#dx1-86042" >364</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">alttreehypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85057" >365</a>, <a
+href="glossaries-user.html#dx1-86045" >366</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25051" >367</a>, <a
+href="glossaries-user.html#dx1-79016" >368</a>, <a
+href="glossaries-user.html#dx1-79029" >369</a>, <a
+href="glossaries-user.html#dx1-79040" >370</a>, <a
+href="glossaries-user.html#dx1-85016" >371</a>, <a
+href="glossaries-user.html#dx1-85017" >372</a>, <a
+href="glossaries-user.html#dx1-85022" >373</a>, <a
+href="glossaries-user.html#dx1-85023" >374</a>, <a
+href="glossaries-user.html#dx1-85025" >375</a>, <a
+href="glossaries-user.html#dx1-85030" >376</a>, <a
+href="glossaries-user.html#dx1-86006" >377</a>, <a
+href="glossaries-user.html#dx1-86019" >378</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">indexgroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85024" >379</a>, <a
+href="glossaries-user.html#dx1-85027" >380</a>, <a
+href="glossaries-user.html#dx1-86021" >381</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">indexhypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85007" >382</a>, <a
+href="glossaries-user.html#dx1-85026" >383</a>, <a
+href="glossaries-user.html#dx1-86024" >384</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">inline</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11067" >385</a>, <a
+href="glossaries-user.html#dx1-87002" >386</a>, <a
+href="glossaries-user.html#dx1-87007" >387</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">list</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25044" >388</a>, <a
+href="glossaries-user.html#dx1-79010" >389</a>, <a
+href="glossaries-user.html#dx1-79018" >390</a>, <a
+href="glossaries-user.html#dx1-79026" >391</a>, <a
+href="glossaries-user.html#dx1-79027" >392</a>, <a
+href="glossaries-user.html#dx1-79028" >393</a>, <a
+href="glossaries-user.html#dx1-88008" >394</a>, <a
+href="glossaries-user.html#dx1-88017" >395</a>, <a
+href="glossaries-user.html#dx1-88035" >396</a>, <a
+href="glossaries-user.html#dx1-88051" >397</a>, <a
+href="glossaries-user.html#dx1-88093" >398</a>, <a
+href="glossaries-user.html#dx1-88095" >399</a>, <a
+href="glossaries-user.html#dx1-93064" >400</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">listdotted</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78038" >401</a>, <a
+href="glossaries-user.html#dx1-79006" >402</a>, <a
+href="glossaries-user.html#dx1-79043" >403</a>, <a
+href="glossaries-user.html#dx1-79044" >404</a>, <a
+href="glossaries-user.html#dx1-79045" >405</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">listgroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26022" >406</a>, <a
+href="glossaries-user.html#dx1-78006" >407</a>, <a
+href="glossaries-user.html#dx1-79017" >408</a>, <a
+href="glossaries-user.html#dx1-79020" >409</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">listhypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79019" >410</a>, <a
+href="glossaries-user.html#dx1-79034" >411</a>, <a
+href="glossaries-user.html#dx1-85009" >412</a>, <a
+href="glossaries-user.html#dx1-85028" >413</a>, <a
+href="glossaries-user.html#dx1-85039" >414</a>, <a
+href="glossaries-user.html#dx1-85046" >415</a>, <a
+href="glossaries-user.html#dx1-85059" >416</a>, <a
+href="glossaries-user.html#dx1-88032" >417</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78027" >418</a>, <a
+href="glossaries-user.html#dx1-78034" >419</a>, <a
+href="glossaries-user.html#dx1-80007" >420</a>, <a
+href="glossaries-user.html#dx1-80014" >421</a>, <a
+href="glossaries-user.html#dx1-80016" >422</a>, <a
+href="glossaries-user.html#dx1-80020" >423</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82024" >424</a>, <a
+href="glossaries-user.html#dx1-82028" >425</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long3col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78011" >426</a>, <a
+href="glossaries-user.html#dx1-80019" >427</a>, <a
+href="glossaries-user.html#dx1-80025" >428</a>, <a
+href="glossaries-user.html#dx1-80027" >429</a>, <a
+href="glossaries-user.html#dx1-80031" >430</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long3col-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82026" >431</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long3colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78013" >432</a>, <a
+href="glossaries-user.html#dx1-80024" >433</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long3colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78012" >434</a>, <a
+href="glossaries-user.html#dx1-80026" >435</a>, <a
+href="glossaries-user.html#dx1-80029" >436</a>, <a
+href="glossaries-user.html#dx1-82027" >437</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long3colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78014" >438</a>, <a
+href="glossaries-user.html#dx1-80028" >439</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long4col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78022" >440</a>, <a
+href="glossaries-user.html#dx1-80030" >441</a>, <a
+href="glossaries-user.html#dx1-80034" >442</a>, <a
+href="glossaries-user.html#dx1-80036" >443</a>, <a
+href="glossaries-user.html#dx1-80040" >444</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long4col-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82029" >445</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long4colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80033" >446</a>, <a
+href="glossaries-user.html#dx1-80044" >447</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long4colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80035" >448</a>, <a
+href="glossaries-user.html#dx1-80038" >449</a>, <a
+href="glossaries-user.html#dx1-80046" >450</a>, <a
+href="glossaries-user.html#dx1-82030" >451</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long4colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80037" >452</a>, <a
+href="glossaries-user.html#dx1-80048" >453</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80013" >454</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80015" >455</a>, <a
+href="glossaries-user.html#dx1-80018" >456</a>, <a
+href="glossaries-user.html#dx1-82025" >457</a>, <a
+href="glossaries-user.html#dx1-88019" >458</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-80017" >459</a>, <a
+href="glossaries-user.html#dx1-63071" >460</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81010" >461</a>, <a
+href="glossaries-user.html#dx1-81014" >462</a>, <a
+href="glossaries-user.html#dx1-81016" >463</a>, <a
+href="glossaries-user.html#dx1-81020" >464</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82033" >465</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged3col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81019" >466</a>, <a
+href="glossaries-user.html#dx1-81025" >467</a>, <a
+href="glossaries-user.html#dx1-81027" >468</a>, <a
+href="glossaries-user.html#dx1-81031" >469</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged3col-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82035" >470</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged3colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81024" >471</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged3colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81026" >472</a>, <a
+href="glossaries-user.html#dx1-81029" >473</a>, <a
+href="glossaries-user.html#dx1-82036" >474</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longragged3colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81028" >475</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longraggedborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81013" >476</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longraggedheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81015" >477</a>, <a
+href="glossaries-user.html#dx1-81018" >478</a>, <a
+href="glossaries-user.html#dx1-82034" >479</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">longraggedheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81017" >480</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolalttree</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86039" >481</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolalttreegroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86041" >482</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolalttreehypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86043" >483</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolalttreespannav</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86044" >484</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86005" >485</a>, <a
+href="glossaries-user.html#dx1-86018" >486</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolindexgroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86020" >487</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolindexhypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86022" >488</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcolindexspannav</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86023" >489</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltree</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86025" >490</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreegroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86027" >491</a> <br /></span>
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreehypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86029" >492</a>, <a
+href="glossaries-user.html#dx1-86046" >493</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreenoname</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86032" >494</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreenonamegroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86034" >495</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreenonamehypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86036" >496</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreenonamespannav</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86037" >497</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">mcoltreespannav</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86030" >498</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83012" >499</a>, <a
+href="glossaries-user.html#dx1-83019" >500</a>, <a
+href="glossaries-user.html#dx1-83021" >501</a>, <a
+href="glossaries-user.html#dx1-83025" >502</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super3col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83024" >503</a>, <a
+href="glossaries-user.html#dx1-83030" >504</a>, <a
+href="glossaries-user.html#dx1-83032" >505</a>, <a
+href="glossaries-user.html#dx1-83036" >506</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super3colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83029" >507</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super3colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83031" >508</a>, <a
+href="glossaries-user.html#dx1-83034" >509</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super3colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83033" >510</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super4col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78023" >511</a>, <a
+href="glossaries-user.html#dx1-83035" >512</a>, <a
+href="glossaries-user.html#dx1-83039" >513</a>, <a
+href="glossaries-user.html#dx1-83041" >514</a>, <a
+href="glossaries-user.html#dx1-83045" >515</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super4colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83038" >516</a>, <a
+href="glossaries-user.html#dx1-83049" >517</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super4colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83040" >518</a>, <a
+href="glossaries-user.html#dx1-83043" >519</a>, <a
+href="glossaries-user.html#dx1-83051" >520</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">super4colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83042" >521</a>, <a
+href="glossaries-user.html#dx1-83053" >522</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83018" >523</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-83020" >524</a>, <a
+href="glossaries-user.html#dx1-83023" >525</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63069" >526</a>, <a
+href="glossaries-user.html#dx1-83022" >527</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superragged</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84009" >528</a>, <a
+href="glossaries-user.html#dx1-84016" >529</a>, <a
+href="glossaries-user.html#dx1-84018" >530</a>, <a
+href="glossaries-user.html#dx1-84022" >531</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superragged3col</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84021" >532</a>, <a
+href="glossaries-user.html#dx1-84027" >533</a>, <a
+href="glossaries-user.html#dx1-84029" >534</a>, <a
+href="glossaries-user.html#dx1-84033" >535</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superragged3colborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84026" >536</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superragged3colheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84028" >537</a>, <a
+href="glossaries-user.html#dx1-84031" >538</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superragged3colheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84030" >539</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superraggedborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84015" >540</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superraggedheader</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84017" >541</a>, <a
+href="glossaries-user.html#dx1-84020" >542</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">superraggedheaderborder</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84019" >543</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">tree</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-72066" >544</a>, <a
+href="glossaries-user.html#dx1-85015" >545</a>, <a
+href="glossaries-user.html#dx1-85029" >546</a>, <a
+href="glossaries-user.html#dx1-85036" >547</a>, <a
+href="glossaries-user.html#dx1-85041" >548</a>, <a
+href="glossaries-user.html#dx1-85048" >549</a>, <a
+href="glossaries-user.html#dx1-86026" >550</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">treegroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85035" >551</a>, <a
+href="glossaries-user.html#dx1-85038" >552</a>, <a
+href="glossaries-user.html#dx1-86028" >553</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">treehypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79024" >554</a>, <a
+href="glossaries-user.html#dx1-85037" >555</a>, <a
+href="glossaries-user.html#dx1-86031" >556</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">treenoname</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85012" >557</a>, <a
+href="glossaries-user.html#dx1-85040" >558</a>, <a
+href="glossaries-user.html#dx1-85043" >559</a>, <a
+href="glossaries-user.html#dx1-86033" >560</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">treenonamegroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85042" >561</a>, <a
+href="glossaries-user.html#dx1-85045" >562</a>, <a
+href="glossaries-user.html#dx1-86035" >563</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">treenonamehypergroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85044" >564</a>, <a
+href="glossaries-user.html#dx1-86038" >565</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-bookindex </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78004" >566</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-inline </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87001" >567</a>, <a
+href="glossaries-user.html#dx1-87005" >568</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-list </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25029" >569</a>, <a
+href="glossaries-user.html#dx1-25042" >570</a>, <a
+href="glossaries-user.html#dx1-25043" >571</a>, <a
+href="glossaries-user.html#dx1-63075" >572</a>, <a
+href="glossaries-user.html#dx1-79001" >573</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-long </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25030" >574</a>, <a
+href="glossaries-user.html#dx1-25034" >575</a>, <a
+href="glossaries-user.html#dx1-25036" >576</a>, <a
+href="glossaries-user.html#dx1-63076" >577</a>, <a
+href="glossaries-user.html#dx1-80001" >578</a>, <a
+href="glossaries-user.html#dx1-81002" >579</a>, <a
+href="glossaries-user.html#dx1-82005" >580</a>, <a
+href="glossaries-user.html#dx1-82009" >581</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-longbooktabs </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82001" >582</a>, <a
+href="glossaries-user.html#dx1-82004" >583</a>, <a
+href="glossaries-user.html#dx1-82007" >584</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-longnoloc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78005" >585</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-longragged </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-81001" >586</a>, <a
+href="glossaries-user.html#dx1-81005" >587</a>, <a
+href="glossaries-user.html#dx1-81007" >588</a>, <a
+href="glossaries-user.html#dx1-82006" >589</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-mcols </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25054" >590</a>, <a
+href="glossaries-user.html#dx1-85053" >591</a>, <a
+href="glossaries-user.html#dx1-86001" >592</a>, <a
+href="glossaries-user.html#dx1-86010" >593</a>, <a
+href="glossaries-user.html#dx1-86012" >594</a>, <a
+href="glossaries-user.html#dx1-86013" >595</a>, <a
+href="glossaries-user.html#dx1-86017" >596</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-ragged </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82010" >597</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-super </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25031" >598</a>, <a
+href="glossaries-user.html#dx1-25038" >599</a>, <a
+href="glossaries-user.html#dx1-25040" >600</a>, <a
+href="glossaries-user.html#dx1-63077" >601</a>, <a
+href="glossaries-user.html#dx1-83001" >602</a>, <a
+href="glossaries-user.html#dx1-84002" >603</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-superragged </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-84001" >604</a>, <a
+href="glossaries-user.html#dx1-84005" >605</a>, <a
+href="glossaries-user.html#dx1-84007" >606</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-tree </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25032" >607</a>, <a
+href="glossaries-user.html#dx1-25048" >608</a>, <a
+href="glossaries-user.html#dx1-25049" >609</a>, <a
+href="glossaries-user.html#dx1-25052" >610</a>, <a
+href="glossaries-user.html#dx1-63078" >611</a>, <a
+href="glossaries-user.html#dx1-85001" >612</a>, <a
+href="glossaries-user.html#dx1-85050" >613</a>, <a
+href="glossaries-user.html#dx1-86009" >614</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">glossaryentry </span>(counter)&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25003" ><span
+class="cmti-10">615</span></a>, <a
+href="glossaries-user.html#dx1-25012" >616</a>, <a
+href="glossaries-user.html#dx1-25013" >617</a>, <a
+href="glossaries-user.html#dx1-25017" >618</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossaryheader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88015" ><span
+class="cmti-10">619</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossarypostamble</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63066" ><span
+class="cmti-10">620</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossarypreamble</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63064" ><span
+class="cmti-10">621</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">glossarysubentry </span>(counter)&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25021" ><span
+class="cmti-10">622</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88038" ><span
+class="cmti-10">623</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glossentrydesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62029" ><span
+class="cmti-10">624</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossentrydesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62028" ><span
+class="cmti-10">625</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glossentryname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62013" ><span
+class="cmti-10">626</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossentryname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62012" ><span
+class="cmti-10">627</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glossentrysymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62036" ><span
+class="cmti-10">628</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossentrysymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62035" ><span
+class="cmti-10">629</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLS</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55022" ><span
+class="cmti-10">630</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Gls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55021" ><span
+class="cmti-10">631</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55011" ><span
+class="cmti-10">632</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-user.html#dx1-71028" ><span
+class="cmti-10">633</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsadd</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-59001" ><span
+class="cmti-10">634</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddall</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-59003" ><span
+class="cmti-10">635</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\glsaddall </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">types</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-59004" >636</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddallunused</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-59008" ><span
+class="cmti-10">637</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddkey</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-38001" ><span
+class="cmti-10">638</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddprotectedpagefmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-51015" ><span
+class="cmti-10">639</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddstoragekey</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-39001" ><span
+class="cmti-10">640</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsAddXdyAttribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66014" ><span
+class="cmti-10">641</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsAddXdyCounters</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66009" ><span
+class="cmti-10">642</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsAddXdyLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66024" ><span
+class="cmti-10">643</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsautoprefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24041" ><span
+class="cmti-10">644</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsbackslash</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-64012" ><span
+class="cmti-10">645</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscapscase</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57021" ><span
+class="cmti-10">646</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsclearpage</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24018" ><span
+class="cmti-10">647</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsclosebrace</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-64008" ><span
+class="cmti-10">648</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-user.html#dx1-91027" ><span
+class="cmti-10">649</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscustomtext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57015" ><span
+class="cmti-10">650</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56054" ><span
+class="cmti-10">651</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56053" ><span
+class="cmti-10">652</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56050" ><span
+class="cmti-10">653</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdescwidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78016" ><span
+class="cmti-10">654</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdisablehyper</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-58005" ><span
+class="cmti-10">655</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdisp</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55056" ><span
+class="cmti-10">656</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdisplaynumberlist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62061" ><span
+class="cmti-10">657</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdoifexists</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91005" ><span
+class="cmti-10">658</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdoifexistsordo</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91008" ><span
+class="cmti-10">659</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdoifexistsorwarn</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91007" ><span
+class="cmti-10">660</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdoifnoexists</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91006" ><span
+class="cmti-10">661</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdoifnoexistsordo</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91009" ><span
+class="cmti-10">662</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdosanitizesort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26031" ><span
+class="cmti-10">663</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsenableentrycount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-76003" ><span
+class="cmti-10">664</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsenablehyper</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-58006" ><span
+class="cmti-10">665</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrycounterlabel</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88048" ><span
+class="cmti-10">666</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsEntryCounterLabelPrefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25006" ><span
+class="cmti-10">667</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-user.html#dx1-76006" ><span
+class="cmti-10">668</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrydesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62027" ><span
+class="cmti-10">669</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrydesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62026" ><span
+class="cmti-10">670</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrydescplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62031" ><span
+class="cmti-10">671</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrydescplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62030" ><span
+class="cmti-10">672</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62021" ><span
+class="cmti-10">673</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62020" ><span
+class="cmti-10">674</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62024" ><span
+class="cmti-10">675</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62023" ><span
+class="cmti-10">676</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57006" ><span
+class="cmti-10">677</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69129" ><span
+class="cmti-10">678</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69128" ><span
+class="cmti-10">679</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69131" ><span
+class="cmti-10">680</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69130" ><span
+class="cmti-10">681</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryitem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88045" ><span
+class="cmti-10">682</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrylong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69121" ><span
+class="cmti-10">683</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrylong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69120" ><span
+class="cmti-10">684</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrylongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69123" ><span
+class="cmti-10">685</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrylongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69122" ><span
+class="cmti-10">686</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62008" ><span
+class="cmti-10">687</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62007" ><span
+class="cmti-10">688</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrynumberlist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62060" ><span
+class="cmti-10">689</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62018" ><span
+class="cmti-10">690</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62017" ><span
+class="cmti-10">691</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryprefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93057" ><span
+class="cmti-10">692</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93048" ><span
+class="cmti-10">693</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryprefixfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93058" ><span
+class="cmti-10">694</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprefixfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93050" ><span
+class="cmti-10">695</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryprefixfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93060" ><span
+class="cmti-10">696</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprefixfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93054" ><span
+class="cmti-10">697</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryprefixplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93059" ><span
+class="cmti-10">698</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprefixplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93052" ><span
+class="cmti-10">699</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-user.html#dx1-76007" ><span
+class="cmti-10">700</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69125" ><span
+class="cmti-10">701</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69124" ><span
+class="cmti-10">702</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69127" ><span
+class="cmti-10">703</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-69126" ><span
+class="cmti-10">704</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrysymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62033" ><span
+class="cmti-10">705</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrysymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62032" ><span
+class="cmti-10">706</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrysymbolplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62038" ><span
+class="cmti-10">707</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrysymbolplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62037" ><span
+class="cmti-10">708</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentrytext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62015" ><span
+class="cmti-10">709</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrytext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62014" ><span
+class="cmti-10">710</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrytitlecase</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62005" ><span
+class="cmti-10">711</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryuseri</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62040" ><span
+class="cmti-10">712</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryuseri</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62039" ><span
+class="cmti-10">713</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryuserii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62042" ><span
+class="cmti-10">714</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryuserii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62041" ><span
+class="cmti-10">715</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryuseriii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62044" ><span
+class="cmti-10">716</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryuseriii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62043" ><span
+class="cmti-10">717</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryuseriv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62046" ><span
+class="cmti-10">718</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryuseriv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62045" ><span
+class="cmti-10">719</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryuserv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62048" ><span
+class="cmti-10">720</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryuserv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62047" ><span
+class="cmti-10">721</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsentryuservi</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62050" ><span
+class="cmti-10">722</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryuservi</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62049" ><span
+class="cmti-10">723</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsexpandfields</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-40022" ><span
+class="cmti-10">724</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfielddef</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-92006" ><span
+class="cmti-10">725</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfieldedef</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-92007" ><span
+class="cmti-10">726</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfieldfetch</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-92001" ><span
+class="cmti-10">727</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfieldgdef</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-92008" ><span
+class="cmti-10">728</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfieldxdef</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-92009" ><span
+class="cmti-10">729</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-user.html#dx1-85051" ><span
+class="cmti-10">730</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56017" ><span
+class="cmti-10">731</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56016" ><span
+class="cmti-10">732</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56013" ><span
+class="cmti-10">733</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56037" ><span
+class="cmti-10">734</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56036" ><span
+class="cmti-10">735</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56033" ><span
+class="cmti-10">736</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgenacfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57050" ><span
+class="cmti-10">737</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgenentryfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57044" ><span
+class="cmti-10">738</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgetgrouptitle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88026" ><span
+class="cmti-10">739</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsglossarymark</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24013" ><span
+class="cmti-10">740</span></a>, <a
+href="glossaries-user.html#dx1-63061" ><span
+class="cmti-10">741</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgroupheading</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88020" ><span
+class="cmti-10">742</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgroupskip</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88034" ><span
+class="cmti-10">743</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glshyperlink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62051" ><span
+class="cmti-10">744</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glshypernavsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79021" ><span
+class="cmti-10">745</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifhyperon</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57022" ><span
+class="cmti-10">746</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsIfListOfAcronyms</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27025" ><span
+class="cmti-10">747</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57020" ><span
+class="cmti-10">748</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlinedescformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87019" ><span
+class="cmti-10">749</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlineemptydescformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87018" ><span
+class="cmti-10">750</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlinenameformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87016" ><span
+class="cmti-10">751</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlineparentchildseparator</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87012" ><span
+class="cmti-10">752</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlineseparator</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87008" ><span
+class="cmti-10">753</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlinesubdescformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87020" ><span
+class="cmti-10">754</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlinesubnameformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87017" ><span
+class="cmti-10">755</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinlinesubseparator</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87010" ><span
+class="cmti-10">756</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsinsert</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57019" ><span
+class="cmti-10">757</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslabel</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57012" ><span
+class="cmti-10">758</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-user.html#dx1-72024" ><span
+class="cmti-10">759</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsletentryfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62034" ><span
+class="cmti-10">760</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56004" ><span
+class="cmti-10">761</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-user.html#dx1-54071" >762</a>, <a
+href="glossaries-user.html#dx1-66006" >763</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">format</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-50004" >764</a>, <a
+href="glossaries-user.html#dx1-50011" >765</a>, <a
+href="glossaries-user.html#dx1-54041" >766</a>, <a
+href="glossaries-user.html#dx1-54050" >767</a>, <a
+href="glossaries-user.html#dx1-62068" >768</a>, <a
+href="glossaries-user.html#dx1-66010" >769</a>, <a
+href="glossaries-user.html#dx1-66015" >770</a>, <a
+href="glossaries-user.html#dx1-66016" >771</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyper</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23101" >772</a>, <a
+href="glossaries-user.html#dx1-54030" >773</a>, <a
+href="glossaries-user.html#dx1-54036" >774</a>, <a
+href="glossaries-user.html#dx1-57023" >775</a>, <a
+href="glossaries-user.html#dx1-57029" >776</a>, <a
+href="glossaries-user.html#dx1-58003" >777</a>, <a
+href="glossaries-user.html#dx1-59002" >778</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">local</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-54072" >779</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-user.html#dx1-23103" ><span
+class="cmti-10">780</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslinkpostsetkeys</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57073" ><span
+class="cmti-10">781</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslinkvar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57028" ><span
+class="cmti-10">782</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistdottedwidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79039" ><span
+class="cmti-10">783</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistnavigationitem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-79023" ><span
+class="cmti-10">784</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslocalreset</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75004" ><span
+class="cmti-10">785</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslocalresetall</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75008" ><span
+class="cmti-10">786</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslocalunset</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75006" ><span
+class="cmti-10">787</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslocalunsetall</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75010" ><span
+class="cmti-10">788</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-user.html#dx1-72025" ><span
+class="cmti-10">789</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsmcols</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86015" ><span
+class="cmti-10">790</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsmoveentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-45001" ><span
+class="cmti-10">791</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56044" ><span
+class="cmti-10">792</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56043" ><span
+class="cmti-10">793</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56038" ><span
+class="cmti-10">794</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnamefont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63074" ><span
+class="cmti-10">795</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnavhypertarget</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88030" ><span
+class="cmti-10">796</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnavigation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88031" ><span
+class="cmti-10">797</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnoexpandfields</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-40023" ><span
+class="cmti-10">798</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-user.html#dx1-52022" ><span
+class="cmti-10">799</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnumberlistloop</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-52019" ><span
+class="cmti-10">800</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnumlistlastsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62067" ><span
+class="cmti-10">801</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnumlistsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-62066" ><span
+class="cmti-10">802</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsopenbrace</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-64007" ><span
+class="cmti-10">803</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspagelistwidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78017" ><span
+class="cmti-10">804</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34023" ><span
+class="cmti-10">805</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspatchtabularx</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55008" ><span
+class="cmti-10">806</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspercentchar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-64009" ><span
+class="cmti-10">807</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55049" ><span
+class="cmti-10">808</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55048" ><span
+class="cmti-10">809</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55047" ><span
+class="cmti-10">810</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56032" ><span
+class="cmti-10">811</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56031" ><span
+class="cmti-10">812</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56028" ><span
+class="cmti-10">813</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspluralsuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-35001" ><span
+class="cmti-10">814</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspostdescription</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-78039" ><span
+class="cmti-10">815</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspostinline</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-87014" ><span
+class="cmti-10">816</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspostlinkhook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57074" ><span
+class="cmti-10">817</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsprestandardsort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26026" ><span
+class="cmti-10">818</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsquote</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-64014" ><span
+class="cmti-10">819</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsrefentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25005" ><span
+class="cmti-10">820</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsreset</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75003" ><span
+class="cmti-10">821</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsresetall</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75007" ><span
+class="cmti-10">822</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsresetentrycounter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25016" ><span
+class="cmti-10">823</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsrestoreLToutput</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-82023" ><span
+class="cmti-10">824</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssee</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-60017" ><span
+class="cmti-10">825</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsseeformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-61002" ><span
+class="cmti-10">826</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-user.html#dx1-61011" ><span
+class="cmti-10">827</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsseelastsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-61009" ><span
+class="cmti-10">828</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsseesep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-61008" ><span
+class="cmti-10">829</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsSetAlphaCompositor</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-33019" ><span
+class="cmti-10">830</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsSetCompositor</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-33018" ><span
+class="cmti-10">831</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssetexpandfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-40007" ><span
+class="cmti-10">832</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssetnoexpandfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-40008" ><span
+class="cmti-10">833</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetQuote</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13038" ><span
+class="cmti-10">834</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsSetSuffixF</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-52009" ><span
+class="cmti-10">835</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsSetSuffixFF</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-52010" ><span
+class="cmti-10">836</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssetwidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85049" ><span
+class="cmti-10">837</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetWriteIstHook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-53002" ><span
+class="cmti-10">838</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetXdyCodePage</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-65010" ><span
+class="cmti-10">839</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetXdyFirstLetterAfterDigits</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-67004" ><span
+class="cmti-10">840</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetXdyLanguage</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-65007" ><span
+class="cmti-10">841</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetXdyLocationClassOrder</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66058" ><span
+class="cmti-10">842</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetXdyMinRangeLength</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66063" ><span
+class="cmti-10">843</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsSetXdyNumberGroupOrder</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-67007" ><span
+class="cmti-10">844</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-user.html#dx1-72026" ><span
+class="cmti-10">845</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsshowtarget</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23015" ><span
+class="cmti-10">846</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssortnumberfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26017" ><span
+class="cmti-10">847</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssubentrycounterlabel</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88067" ><span
+class="cmti-10">848</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssubentryitem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88064" ><span
+class="cmti-10">849</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSsymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56049" ><span
+class="cmti-10">850</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glssymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56048" ><span
+class="cmti-10">851</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56045" ><span
+class="cmti-10">852</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstarget</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88049" ><span
+class="cmti-10">853</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLStext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56011" ><span
+class="cmti-10">854</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glstext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56010" ><span
+class="cmti-10">855</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56007" ><span
+class="cmti-10">856</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstextformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-54025" ><span
+class="cmti-10">857</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstextup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-72035" ><span
+class="cmti-10">858</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstildechar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-64010" ><span
+class="cmti-10">859</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstocfalse</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24003" ><span
+class="cmti-10">860</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstoctrue</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24002" ><span
+class="cmti-10">861</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreechildpredesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85014" ><span
+class="cmti-10">862</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreegroupheaderfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85006" ><span
+class="cmti-10">863</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreeindent</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85033" ><span
+class="cmti-10">864</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreeitem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85019" ><span
+class="cmti-10">865</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreenamebox</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85054" ><span
+class="cmti-10">866</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreenamefmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85004" ><span
+class="cmti-10">867</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreenavigationfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85008" ><span
+class="cmti-10">868</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreepredesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85011" ><span
+class="cmti-10">869</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreesubitem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85020" ><span
+class="cmti-10">870</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreesubsubitem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-85021" ><span
+class="cmti-10">871</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstype</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-57013" ><span
+class="cmti-10">872</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsunset</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75005" ><span
+class="cmti-10">873</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsunsetall</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75009" ><span
+class="cmti-10">874</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsUseAcrEntryDispStyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-72031" ><span
+class="cmti-10">875</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsUseAcrStyleDefs</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-72032" ><span
+class="cmti-10">876</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSuseri</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56059" ><span
+class="cmti-10">877</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsuseri</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56058" ><span
+class="cmti-10">878</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuseri</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56055" ><span
+class="cmti-10">879</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSuserii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56064" ><span
+class="cmti-10">880</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsuserii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56063" ><span
+class="cmti-10">881</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuserii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56060" ><span
+class="cmti-10">882</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSuseriii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56069" ><span
+class="cmti-10">883</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsuseriii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56068" ><span
+class="cmti-10">884</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuseriii</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56065" ><span
+class="cmti-10">885</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSuseriv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56074" ><span
+class="cmti-10">886</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsuseriv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56073" ><span
+class="cmti-10">887</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuseriv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56070" ><span
+class="cmti-10">888</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSuserv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56079" ><span
+class="cmti-10">889</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsuserv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56078" ><span
+class="cmti-10">890</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuserv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56075" ><span
+class="cmti-10">891</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSuservi</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56084" ><span
+class="cmti-10">892</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsuservi</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56083" ><span
+class="cmti-10">893</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuservi</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-56080" ><span
+class="cmti-10">894</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glswrallowprimitivemodsfalse</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-51026" ><span
+class="cmti-10">895</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glswrite</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-53003" ><span
+class="cmti-10">896</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glswriteentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23116" ><span
+class="cmti-10">897</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">H</span>
+<span class="index-item"><span
+class="cmss-10">html </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-58002" >898</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">hyperref </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-19" >899</a>, <a
+href="glossaries-user.html#dx1-20" >900</a>, <a
+href="glossaries-user.html#dx1-27" >901</a>, <a
+href="glossaries-user.html#dx1-52012" >902</a>, <a
+href="glossaries-user.html#dx1-52020" >903</a>, <a
+href="glossaries-user.html#dx1-54010" >904</a>, <a
+href="glossaries-user.html#dx1-54013" >905</a>, <a
+href="glossaries-user.html#dx1-54016" >906</a>, <a
+href="glossaries-user.html#dx1-54018" >907</a>, <a
+href="glossaries-user.html#dx1-54039" >908</a>, <a
+href="glossaries-user.html#dx1-54054" >909</a>, <a
+href="glossaries-user.html#dx1-55055" >910</a>, <a
+href="glossaries-user.html#dx1-57024" >911</a>, <a
+href="glossaries-user.html#dx1-58001" >912</a>, <a
+href="glossaries-user.html#dx1-58009" >913</a>, <a
+href="glossaries-user.html#dx1-62003" >914</a>, <a
+href="glossaries-user.html#dx1-62004" >915</a>, <a
+href="glossaries-user.html#dx1-62058" >916</a>, <a
+href="glossaries-user.html#dx1-62069" >917</a>, <a
+href="glossaries-user.html#dx1-62070" >918</a>, <a
+href="glossaries-user.html#dx1-66031" >919</a>, <a
+href="glossaries-user.html#dx1-66041" >920</a>, <a
+href="glossaries-user.html#dx1-88050" >921</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">\ifglossaryexists</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91001" ><span
+class="cmti-10">922</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsdescsuppressed</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91023" ><span
+class="cmti-10">923</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsentryexists</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91002" ><span
+class="cmti-10">924</span></a> <br /></span>
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsfieldcseq</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91034" ><span
+class="cmti-10">925</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsfielddefeq</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91032" ><span
+class="cmti-10">926</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsfieldeq</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91029" ><span
+class="cmti-10">927</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshaschildren</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91011" ><span
+class="cmti-10">928</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91021" ><span
+class="cmti-10">929</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91026" ><span
+class="cmti-10">930</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshaslong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91015" ><span
+class="cmti-10">931</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasparent</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91012" ><span
+class="cmti-10">932</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasprefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93040" ><span
+class="cmti-10">933</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasprefixfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93044" ><span
+class="cmti-10">934</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasprefixfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93046" ><span
+class="cmti-10">935</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasprefixplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93042" ><span
+class="cmti-10">936</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshasshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91018" ><span
+class="cmti-10">937</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglshassymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-91013" ><span
+class="cmti-10">938</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsucmark</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24030" ><span
+class="cmti-10">939</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsused</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-75011" ><span
+class="cmti-10">940</span></a>, <a
+href="glossaries-user.html#dx1-91010" ><span
+class="cmti-10">941</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifignoredglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-68012" ><span
+class="cmti-10">942</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">imakeidx </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29024" >943</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">index </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29023" >944</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">inputenc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11016" >945</a>, <a
+href="glossaries-user.html#dx1-11074" >946</a>, <a
+href="glossaries-user.html#dx1-13015" >947</a>, <a
+href="glossaries-user.html#dx1-34083" >948</a>, <a
+href="glossaries-user.html#dx1-34141" >949</a>, <a
+href="glossaries-user.html#dx1-65008" >950</a>, <a
+href="glossaries-user.html#dx1-67005" >951</a> <br /></span>
+<span class="index-item">internal fields:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">location</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-5010" >952</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">L</span>
+<span class="index-item"><span
+class="cmtt-10">latex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29" >953</a>, <a
+href="glossaries-user.html#dx1-54020" >954</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">latexmk</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-16020" >955</a>, <a
+href="glossaries-user.html#dx1-16023" >956</a>, <a
+href="glossaries-user.html#dx1-16029" >957</a> <br /></span>
+<span class="index-item">Latin alphabet&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3027" ><span
+class="cmbx-10">958</span></a>, <a
+href="glossaries-user.html#dx1-7002" >959</a>, <a
+href="glossaries-user.html#dx1-13006" >960</a> <br /></span>
+<span class="index-item">Latin character&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3004" >961</a>, <a
+href="glossaries-user.html#dx1-3007" >962</a>, <a
+href="glossaries-user.html#dx1-3008" >963</a>, <a
+href="glossaries-user.html#dx1-3028" >964</a>, <a
+href="glossaries-user.html#dx1-3029" ><span
+class="cmbx-10">965</span></a>, <a
+href="glossaries-user.html#dx1-3046" >966</a>, <a
+href="glossaries-user.html#dx1-68006" >967</a> <br /></span>
+<span class="index-item">link text&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3031" ><span
+class="cmbx-10">968</span></a>, <a
+href="glossaries-user.html#dx1-54003" >969</a>, <a
+href="glossaries-user.html#dx1-54015" >970</a>, <a
+href="glossaries-user.html#dx1-54017" >971</a>, <a
+href="glossaries-user.html#dx1-54023" >972</a>, <a
+href="glossaries-user.html#dx1-54024" >973</a>, <a
+href="glossaries-user.html#dx1-54026" >974</a>, <a
+href="glossaries-user.html#dx1-54073" >975</a>, <a
+href="glossaries-user.html#dx1-54074" >976</a>, <a
+href="glossaries-user.html#dx1-55012" >977</a>, <a
+href="glossaries-user.html#dx1-55018" >978</a>, <a
+href="glossaries-user.html#dx1-55024" >979</a>, <a
+href="glossaries-user.html#dx1-55025" >980</a>, <a
+href="glossaries-user.html#dx1-55027" >981</a>, <a
+href="glossaries-user.html#dx1-55028" >982</a>, <a
+href="glossaries-user.html#dx1-55032" >983</a>, <a
+href="glossaries-user.html#dx1-55033" >984</a>, <a
+href="glossaries-user.html#dx1-55035" >985</a>, <a
+href="glossaries-user.html#dx1-55036" >986</a>, <a
+href="glossaries-user.html#dx1-55037" >987</a>, <a
+href="glossaries-user.html#dx1-55038" >988</a>, <a
+href="glossaries-user.html#dx1-55039" >989</a>, <a
+href="glossaries-user.html#dx1-55040" >990</a>, <a
+href="glossaries-user.html#dx1-55044" >991</a>, <a
+href="glossaries-user.html#dx1-55045" >992</a>, <a
+href="glossaries-user.html#dx1-56005" >993</a>, <a
+href="glossaries-user.html#dx1-56006" >994</a>, <a
+href="glossaries-user.html#dx1-56009" >995</a>, <a
+href="glossaries-user.html#dx1-56015" >996</a>, <a
+href="glossaries-user.html#dx1-56022" >997</a>, <a
+href="glossaries-user.html#dx1-56027" >998</a>, <a
+href="glossaries-user.html#dx1-56030" >999</a>, <a
+href="glossaries-user.html#dx1-56035" >1000</a>, <a
+href="glossaries-user.html#dx1-56040" >1001</a>, <a
+href="glossaries-user.html#dx1-56047" >1002</a>, <a
+href="glossaries-user.html#dx1-56052" >1003</a>, <a
+href="glossaries-user.html#dx1-56057" >1004</a>, <a
+href="glossaries-user.html#dx1-56062" >1005</a>, <a
+href="glossaries-user.html#dx1-56067" >1006</a>, <a
+href="glossaries-user.html#dx1-56072" >1007</a>, <a
+href="glossaries-user.html#dx1-56077" >1008</a>, <a
+href="glossaries-user.html#dx1-56082" >1009</a>, <a
+href="glossaries-user.html#dx1-57001" >1010</a>, <a
+href="glossaries-user.html#dx1-57081" >1011</a>, <a
+href="glossaries-user.html#dx1-69050" >1012</a>, <a
+href="glossaries-user.html#dx1-69053" >1013</a>, <a
+href="glossaries-user.html#dx1-69065" >1014</a>, <a
+href="glossaries-user.html#dx1-69075" >1015</a>, <a
+href="glossaries-user.html#dx1-93019" >1016</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\loadglsentries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-44001" ><span
+class="cmti-10">1017</span></a> <br /></span>
+<span class="index-item">location list&#x00A0;&#x00A0;<span
+class="cmti-10">see </span><a
+href="glossaries-user.html#dx1-49004" >number list</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-user.html#dx1-34004" ><span
+class="cmti-10">1019</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\longprovideglossaryentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34007" ><span
+class="cmti-10">1020</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">longtable </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25035" >1021</a>, <a
+href="glossaries-user.html#dx1-80010" >1022</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-user.html#dx1-3033" ><span
+class="cmbx-10">1023</span></a>, <a
+href="glossaries-user.html#dx1-3037" >1024</a>, <a
+href="glossaries-user.html#dx1-7032" >1025</a>, <a
+href="glossaries-user.html#dx1-8026" >1026</a>, <a
+href="glossaries-user.html#dx1-8029" >1027</a>, <a
+href="glossaries-user.html#dx1-8030" >1028</a>, <a
+href="glossaries-user.html#dx1-8033" >1029</a>, <a
+href="glossaries-user.html#dx1-8035" >1030</a>, <a
+href="glossaries-user.html#dx1-11008" >1031</a>, <a
+href="glossaries-user.html#dx1-11040" >1032</a>, <a
+href="glossaries-user.html#dx1-11051" >1033</a>, <a
+href="glossaries-user.html#dx1-11062" >1034</a>, <a
+href="glossaries-user.html#dx1-11075" >1035</a>, <a
+href="glossaries-user.html#dx1-11077" >1036</a>, <a
+href="glossaries-user.html#dx1-11079" >1037</a>, <a
+href="glossaries-user.html#dx1-11081" >1038</a>, <a
+href="glossaries-user.html#dx1-11084" >1039</a>, <a
+href="glossaries-user.html#dx1-11101" >1040</a>, <a
+href="glossaries-user.html#dx1-13025" >1041</a>, <a
+href="glossaries-user.html#dx1-13028" >1042</a>, <a
+href="glossaries-user.html#dx1-13042" >1043</a>, <a
+href="glossaries-user.html#dx1-16003" >1044</a>, <a
+href="glossaries-user.html#dx1-16024" >1045</a>, <a
+href="glossaries-user.html#dx1-16030" >1046</a>, <a
+href="glossaries-user.html#dx1-16032" >1047</a>, <a
+href="glossaries-user.html#dx1-16035" >1048</a>, <a
+href="glossaries-user.html#dx1-16038" >1049</a>, <a
+href="glossaries-user.html#dx1-16044" >1050</a>, <a
+href="glossaries-user.html#dx1-16047" >1051</a>, <a
+href="glossaries-user.html#dx1-16051" >1052</a>, <a
+href="glossaries-user.html#dx1-16053" >1053</a>, <a
+href="glossaries-user.html#dx1-16056" >1054</a>, <a
+href="glossaries-user.html#dx1-16058" >1055</a>, <a
+href="glossaries-user.html#dx1-16062" >1056</a>, <a
+href="glossaries-user.html#dx1-16065" >1057</a>, <a
+href="glossaries-user.html#dx1-16070" >1058</a>, <a
+href="glossaries-user.html#dx1-16073" >1059</a>, <a
+href="glossaries-user.html#dx1-16075" >1060</a>, <a
+href="glossaries-user.html#dx1-17001" >1061</a>, <a
+href="glossaries-user.html#dx1-17005" >1062</a>, <a
+href="glossaries-user.html#dx1-17006" >1063</a>, <a
+href="glossaries-user.html#dx1-17007" >1064</a>, <a
+href="glossaries-user.html#dx1-17009" >1065</a>, <a
+href="glossaries-user.html#dx1-17012" >1066</a>, <a
+href="glossaries-user.html#dx1-17013" >1067</a>, <a
+href="glossaries-user.html#dx1-17016" >1068</a>, <a
+href="glossaries-user.html#dx1-17020" >1069</a>, <a
+href="glossaries-user.html#dx1-17027" >1070</a>, <a
+href="glossaries-user.html#dx1-17031" >1071</a>, <a
+href="glossaries-user.html#dx1-17034" >1072</a>, <a
+href="glossaries-user.html#dx1-17035" >1073</a>, <a
+href="glossaries-user.html#dx1-17037" >1074</a>, <a
+href="glossaries-user.html#dx1-18001" >1075</a>, <a
+href="glossaries-user.html#dx1-18003" >1076</a>, <a
+href="glossaries-user.html#dx1-18006" >1077</a>, <a
+href="glossaries-user.html#dx1-18007" >1078</a>, <a
+href="glossaries-user.html#dx1-19005" >1079</a>, <a
+href="glossaries-user.html#dx1-19021" >1080</a>, <a
+href="glossaries-user.html#dx1-19023" >1081</a>, <a
+href="glossaries-user.html#dx1-19025" >1082</a>, <a
+href="glossaries-user.html#dx1-20018" >1083</a>, <a
+href="glossaries-user.html#dx1-20020" >1084</a>, <a
+href="glossaries-user.html#dx1-20022" >1085</a>, <a
+href="glossaries-user.html#dx1-23033" >1086</a>, <a
+href="glossaries-user.html#dx1-25007" >1087</a>, <a
+href="glossaries-user.html#dx1-26051" >1088</a>, <a
+href="glossaries-user.html#dx1-26056" >1089</a>, <a
+href="glossaries-user.html#dx1-26058" >1090</a>, <a
+href="glossaries-user.html#dx1-26065" >1091</a>, <a
+href="glossaries-user.html#dx1-26067" >1092</a>, <a
+href="glossaries-user.html#dx1-26097" >1093</a>, <a
+href="glossaries-user.html#dx1-50016" >1094</a>, <a
+href="glossaries-user.html#dx1-60006" >1095</a>, <a
+href="glossaries-user.html#dx1-62063" >1096</a>, <a
+href="glossaries-user.html#dx1-63005" >1097</a>, <a
+href="glossaries-user.html#dx1-65003" >1098</a>, <a
+href="glossaries-user.html#dx1-65005" >1099</a>, <a
+href="glossaries-user.html#dx1-65013" >1100</a>, <a
+href="glossaries-user.html#dx1-65015" >1101</a>, <a
+href="glossaries-user.html#dx1-68005" >1102</a>, <a
+href="glossaries-user.html#dx1-16046" >1103</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-d</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-18004" >1104</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-k</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17015" >1105</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-m</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17023" >1106</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-Q</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17014" >1107</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-q</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17017" >1108</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-x</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17025" >1109</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-user.html#dx1-33001" ><span
+class="cmti-10">1110</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeglossaries-lite</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3038" ><span
+class="cmbx-10">1111</span></a>, <a
+href="glossaries-user.html#dx1-7033" >1112</a>, <a
+href="glossaries-user.html#dx1-11020" >1113</a>, <a
+href="glossaries-user.html#dx1-11041" >1114</a>, <a
+href="glossaries-user.html#dx1-11052" >1115</a>, <a
+href="glossaries-user.html#dx1-11063" >1116</a>, <a
+href="glossaries-user.html#dx1-11078" >1117</a>, <a
+href="glossaries-user.html#dx1-11085" >1118</a>, <a
+href="glossaries-user.html#dx1-11102" >1119</a>, <a
+href="glossaries-user.html#dx1-16050" >1120</a>, <a
+href="glossaries-user.html#dx1-16052" >1121</a>, <a
+href="glossaries-user.html#dx1-16057" >1122</a>, <a
+href="glossaries-user.html#dx1-16059" >1123</a>, <a
+href="glossaries-user.html#dx1-18002" >1124</a>, <a
+href="glossaries-user.html#dx1-18005" >1125</a>, <a
+href="glossaries-user.html#dx1-18008" >1126</a>, <a
+href="glossaries-user.html#dx1-63006" >1127</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeglossariesgui</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3036" ><span
+class="cmbx-10">1128</span></a>, <a
+href="glossaries-user.html#dx1-16055" >1129</a>, <a
+href="glossaries-user.html#dx1-95001" >1130</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">makeidx </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29022" >1131</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3025" >1132</a>, <a
+href="glossaries-user.html#dx1-3035" >1133</a>, <a
+href="glossaries-user.html#dx1-3040" >1134</a>, <a
+href="glossaries-user.html#dx1-3041" ><span
+class="cmbx-10">1135</span></a>, <a
+href="glossaries-user.html#dx1-7001" >1136</a>, <a
+href="glossaries-user.html#dx1-7003" >1137</a>, <a
+href="glossaries-user.html#dx1-7004" >1138</a>, <a
+href="glossaries-user.html#dx1-7005" >1139</a>, <a
+href="glossaries-user.html#dx1-7008" >1140</a>, <a
+href="glossaries-user.html#dx1-7013" >1141</a>, <a
+href="glossaries-user.html#dx1-7026" >1142</a>, <a
+href="glossaries-user.html#dx1-7027" >1143</a>, <a
+href="glossaries-user.html#dx1-7030" >1144</a>, <a
+href="glossaries-user.html#dx1-7031" >1145</a>, <a
+href="glossaries-user.html#dx1-11009" >1146</a>, <a
+href="glossaries-user.html#dx1-11010" >1147</a>, <a
+href="glossaries-user.html#dx1-11011" >1148</a>, <a
+href="glossaries-user.html#dx1-11035" >1149</a>, <a
+href="glossaries-user.html#dx1-11042" >1150</a>, <a
+href="glossaries-user.html#dx1-11050" >1151</a>, <a
+href="glossaries-user.html#dx1-11053" >1152</a>, <a
+href="glossaries-user.html#dx1-11064" >1153</a>, <a
+href="glossaries-user.html#dx1-11073" >1154</a>, <a
+href="glossaries-user.html#dx1-11093" >1155</a>, <a
+href="glossaries-user.html#dx1-11099" >1156</a>, <a
+href="glossaries-user.html#dx1-13002" >1157</a>, <a
+href="glossaries-user.html#dx1-13005" >1158</a>, <a
+href="glossaries-user.html#dx1-13035" >1159</a>, <a
+href="glossaries-user.html#dx1-13037" >1160</a>, <a
+href="glossaries-user.html#dx1-13040" >1161</a>, <a
+href="glossaries-user.html#dx1-13044" >1162</a>, <a
+href="glossaries-user.html#dx1-13046" >1163</a>, <a
+href="glossaries-user.html#dx1-13051" >1164</a>, <a
+href="glossaries-user.html#dx1-14052" >1165</a>, <a
+href="glossaries-user.html#dx1-16004" >1166</a>, <a
+href="glossaries-user.html#dx1-16007" >1167</a>, <a
+href="glossaries-user.html#dx1-16009" >1168</a>, <a
+href="glossaries-user.html#dx1-16016" >1169</a>, <a
+href="glossaries-user.html#dx1-16025" >1170</a>, <a
+href="glossaries-user.html#dx1-16033" >1171</a>, <a
+href="glossaries-user.html#dx1-16036" >1172</a>, <a
+href="glossaries-user.html#dx1-16039" >1173</a>, <a
+href="glossaries-user.html#dx1-16041" >1174</a>, <a
+href="glossaries-user.html#dx1-16043" >1175</a>, <a
+href="glossaries-user.html#dx1-16048" >1176</a>, <a
+href="glossaries-user.html#dx1-16054" >1177</a>, <a
+href="glossaries-user.html#dx1-16060" >1178</a>, <a
+href="glossaries-user.html#dx1-16063" >1179</a>, <a
+href="glossaries-user.html#dx1-16066" >1180</a>, <a
+href="glossaries-user.html#dx1-16071" >1181</a>, <a
+href="glossaries-user.html#dx1-16077" >1182</a>, <a
+href="glossaries-user.html#dx1-16082" >1183</a>, <a
+href="glossaries-user.html#dx1-16083" >1184</a>, <a
+href="glossaries-user.html#dx1-17004" >1185</a>, <a
+href="glossaries-user.html#dx1-17010" >1186</a>, <a
+href="glossaries-user.html#dx1-17021" >1187</a>, <a
+href="glossaries-user.html#dx1-17024" >1188</a>, <a
+href="glossaries-user.html#dx1-17028" >1189</a>, <a
+href="glossaries-user.html#dx1-17029" >1190</a>, <a
+href="glossaries-user.html#dx1-17030" >1191</a>, <a
+href="glossaries-user.html#x1-200001.5.4" >1192</a>, <a
+href="glossaries-user.html#dx1-20001" >1193</a>, <a
+href="glossaries-user.html#dx1-20003" >1194</a>, <a
+href="glossaries-user.html#dx1-20006" >1195</a>, <a
+href="glossaries-user.html#dx1-20010" >1196</a>, <a
+href="glossaries-user.html#dx1-20012" >1197</a>, <a
+href="glossaries-user.html#dx1-20019" >1198</a>, <a
+href="glossaries-user.html#dx1-20021" >1199</a>, <a
+href="glossaries-user.html#dx1-21002" >1200</a>, <a
+href="glossaries-user.html#dx1-21005" >1201</a>, <a
+href="glossaries-user.html#dx1-21013" >1202</a>, <a
+href="glossaries-user.html#dx1-23046" >1203</a>, <a
+href="glossaries-user.html#dx1-23049" >1204</a>, <a
+href="glossaries-user.html#dx1-25008" >1205</a>, <a
+href="glossaries-user.html#dx1-25063" >1206</a>, <a
+href="glossaries-user.html#dx1-25065" >1207</a>, <a
+href="glossaries-user.html#dx1-25070" >1208</a>, <a
+href="glossaries-user.html#dx1-25073" >1209</a>, <a
+href="glossaries-user.html#dx1-26029" >1210</a>, <a
+href="glossaries-user.html#dx1-26055" >1211</a>, <a
+href="glossaries-user.html#dx1-26057" >1212</a>, <a
+href="glossaries-user.html#dx1-26059" >1213</a>, <a
+href="glossaries-user.html#dx1-26069" >1214</a>, <a
+href="glossaries-user.html#dx1-26079" >1215</a>, <a
+href="glossaries-user.html#dx1-26083" >1216</a>, <a
+href="glossaries-user.html#dx1-26089" >1217</a>, <a
+href="glossaries-user.html#dx1-26092" >1218</a>, <a
+href="glossaries-user.html#dx1-33002" >1219</a>, <a
+href="glossaries-user.html#dx1-33007" >1220</a>, <a
+href="glossaries-user.html#dx1-41003" >1221</a>, <a
+href="glossaries-user.html#dx1-49006" >1222</a>, <a
+href="glossaries-user.html#dx1-50014" >1223</a>, <a
+href="glossaries-user.html#dx1-50017" >1224</a>, <a
+href="glossaries-user.html#dx1-51002" >1225</a>, <a
+href="glossaries-user.html#dx1-51004" >1226</a>, <a
+href="glossaries-user.html#dx1-51005" >1227</a>, <a
+href="glossaries-user.html#dx1-51016" >1228</a>, <a
+href="glossaries-user.html#dx1-51018" >1229</a>, <a
+href="glossaries-user.html#dx1-51021" >1230</a>, <a
+href="glossaries-user.html#dx1-52001" >1231</a>, <a
+href="glossaries-user.html#dx1-52007" >1232</a>, <a
+href="glossaries-user.html#dx1-53004" >1233</a>, <a
+href="glossaries-user.html#dx1-53006" >1234</a>, <a
+href="glossaries-user.html#dx1-54005" >1235</a>, <a
+href="glossaries-user.html#dx1-54042" >1236</a>, <a
+href="glossaries-user.html#dx1-54049" >1237</a>, <a
+href="glossaries-user.html#dx1-62064" >1238</a>, <a
+href="glossaries-user.html#dx1-63007" >1239</a>, <a
+href="glossaries-user.html#dx1-63009" >1240</a>, <a
+href="glossaries-user.html#dx1-68003" >1241</a>, <a
+href="glossaries-user.html#dx1-78015" >1242</a>, <a
+href="glossaries-user.html#dx1-85031" >1243</a>, <a
+href="glossaries-user.html#dx1-88021" >1244</a>, <a
+href="glossaries-user.html#dx1-61004" >1245</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-g</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-7014" >1246</a>, <a
+href="glossaries-user.html#dx1-13036" >1247</a>, <a
+href="glossaries-user.html#dx1-13043" >1248</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-l</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-7029" >1249</a>, <a
+href="glossaries-user.html#dx1-7035" >1250</a>, <a
+href="glossaries-user.html#dx1-11065" >1251</a>, <a
+href="glossaries-user.html#dx1-16086" >1252</a>, <a
+href="glossaries-user.html#dx1-20009" >1253</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\makenoidxglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-32001" ><span
+class="cmti-10">1254</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">memoir </span>class&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24021" >1255</a>, <a
+href="glossaries-user.html#dx1-24031" >1256</a>, <a
+href="glossaries-user.html#dx1-24033" >1257</a>, <a
+href="glossaries-user.html#dx1-24015" >1258</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">mfirstuc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-7" >1259</a>, <a
+href="glossaries-user.html#dx1-13018" >1260</a>, <a
+href="glossaries-user.html#dx1-13020" >1261</a>, <a
+href="glossaries-user.html#dx1-34143" >1262</a>, <a
+href="glossaries-user.html#dx1-55029" >1263</a>, <a
+href="glossaries-user.html#dx1-55031" >1264</a>, <a
+href="glossaries-user.html#dx1-55034" >1265</a>, <a
+href="glossaries-user.html#dx1-55046" >1266</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">multicol </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-86004" >1267</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">mwe </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-12008" >1268</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">N</span>
+<span class="index-item"><span
+class="cmss-10">nameref </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24049" >1269</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-user.html#dx1-69007" ><span
+class="cmti-10">1270</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newacronymstyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-72001" ><span
+class="cmti-10">1271</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-68001" ><span
+class="cmti-10">1272</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newglossary*</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-68007" ><span
+class="cmti-10">1273</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newglossaryentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34003" ><span
+class="cmti-10">1274</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-user.html#dx1-94003" >1275</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">description</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-12009" >1276</a>, <a
+href="glossaries-user.html#dx1-34011" >1277</a>, <a
+href="glossaries-user.html#dx1-34014" >1278</a>, <a
+href="glossaries-user.html#dx1-34021" >1279</a>, <a
+href="glossaries-user.html#dx1-34027" >1280</a>, <a
+href="glossaries-user.html#dx1-34137" >1281</a>, <a
+href="glossaries-user.html#dx1-39008" >1282</a>, <a
+href="glossaries-user.html#dx1-40002" >1283</a>, <a
+href="glossaries-user.html#dx1-40012" >1284</a>, <a
+href="glossaries-user.html#dx1-56051" >1285</a>, <a
+href="glossaries-user.html#dx1-69022" >1286</a>, <a
+href="glossaries-user.html#dx1-71026" >1287</a>, <a
+href="glossaries-user.html#dx1-71043" >1288</a>, <a
+href="glossaries-user.html#dx1-71071" >1289</a>, <a
+href="glossaries-user.html#dx1-72029" >1290</a>, <a
+href="glossaries-user.html#dx1-91022" >1291</a>, <a
+href="glossaries-user.html#dx1-91024" >1292</a>, <a
+href="glossaries-user.html#dx1-94018" >1293</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">descriptionaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94017" >1294</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">descriptionplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34026" >1295</a>, <a
+href="glossaries-user.html#dx1-40003" >1296</a>, <a
+href="glossaries-user.html#dx1-40013" >1297</a>, <a
+href="glossaries-user.html#dx1-94020" >1298</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">descriptionpluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94019" >1299</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">entrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63035" >1300</a>, <a
+href="glossaries-user.html#dx1-63037" >1301</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">first</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3020" >1302</a>, <a
+href="glossaries-user.html#dx1-34031" >1303</a>, <a
+href="glossaries-user.html#dx1-34049" >1304</a>, <a
+href="glossaries-user.html#dx1-34051" >1305</a>, <a
+href="glossaries-user.html#dx1-34052" >1306</a>, <a
+href="glossaries-user.html#dx1-34060" >1307</a>, <a
+href="glossaries-user.html#dx1-34063" >1308</a>, <a
+href="glossaries-user.html#dx1-34133" >1309</a>, <a
+href="glossaries-user.html#dx1-54032" >1310</a>, <a
+href="glossaries-user.html#dx1-55014" >1311</a>, <a
+href="glossaries-user.html#dx1-56014" >1312</a>, <a
+href="glossaries-user.html#dx1-56018" >1313</a>, <a
+href="glossaries-user.html#dx1-56042" >1314</a>, <a
+href="glossaries-user.html#dx1-57040" >1315</a>, <a
+href="glossaries-user.html#dx1-57045" >1316</a>, <a
+href="glossaries-user.html#dx1-57057" >1317</a>, <a
+href="glossaries-user.html#dx1-57060" >1318</a>, <a
+href="glossaries-user.html#dx1-62011" >1319</a>, <a
+href="glossaries-user.html#dx1-62022" >1320</a>, <a
+href="glossaries-user.html#dx1-69044" >1321</a>, <a
+href="glossaries-user.html#dx1-70002" >1322</a>, <a
+href="glossaries-user.html#dx1-75001" >1323</a>, <a
+href="glossaries-user.html#dx1-92005" >1324</a>, <a
+href="glossaries-user.html#dx1-93008" >1325</a>, <a
+href="glossaries-user.html#dx1-94008" >1326</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">firstaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94007" >1327</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">firstplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3021" >1328</a>, <a
+href="glossaries-user.html#dx1-34039" >1329</a>, <a
+href="glossaries-user.html#dx1-34046" >1330</a>, <a
+href="glossaries-user.html#dx1-34057" >1331</a>, <a
+href="glossaries-user.html#dx1-34059" >1332</a>, <a
+href="glossaries-user.html#dx1-34062" >1333</a>, <a
+href="glossaries-user.html#dx1-35005" >1334</a>, <a
+href="glossaries-user.html#dx1-40011" >1335</a>, <a
+href="glossaries-user.html#dx1-55051" >1336</a>, <a
+href="glossaries-user.html#dx1-56019" >1337</a>, <a
+href="glossaries-user.html#dx1-56034" >1338</a>, <a
+href="glossaries-user.html#dx1-57048" >1339</a>, <a
+href="glossaries-user.html#dx1-57058" >1340</a>, <a
+href="glossaries-user.html#dx1-57062" >1341</a>, <a
+href="glossaries-user.html#dx1-62025" >1342</a>, <a
+href="glossaries-user.html#dx1-69029" >1343</a>, <a
+href="glossaries-user.html#dx1-93011" >1344</a>, <a
+href="glossaries-user.html#dx1-94012" >1345</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">firstpluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94011" >1346</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">format</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-54068" >1347</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23108" >1348</a>, <a
+href="glossaries-user.html#dx1-34128" >1349</a>, <a
+href="glossaries-user.html#dx1-34135" >1350</a>, <a
+href="glossaries-user.html#dx1-39005" >1351</a>, <a
+href="glossaries-user.html#dx1-54034" >1352</a>, <a
+href="glossaries-user.html#dx1-55019" >1353</a>, <a
+href="glossaries-user.html#dx1-57042" >1354</a>, <a
+href="glossaries-user.html#dx1-57051" >1355</a>, <a
+href="glossaries-user.html#dx1-69011" >1356</a>, <a
+href="glossaries-user.html#dx1-69066" >1357</a>, <a
+href="glossaries-user.html#dx1-70005" >1358</a>, <a
+href="glossaries-user.html#dx1-91016" >1359</a>, <a
+href="glossaries-user.html#dx1-94022" >1360</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">longaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94021" >1361</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">longplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-15007" >1362</a>, <a
+href="glossaries-user.html#dx1-34129" >1363</a>, <a
+href="glossaries-user.html#dx1-40020" >1364</a>, <a
+href="glossaries-user.html#dx1-55053" >1365</a>, <a
+href="glossaries-user.html#dx1-57053" >1366</a>, <a
+href="glossaries-user.html#dx1-69012" >1367</a>, <a
+href="glossaries-user.html#dx1-69024" >1368</a>, <a
+href="glossaries-user.html#dx1-69025" >1369</a>, <a
+href="glossaries-user.html#dx1-69030" >1370</a>, <a
+href="glossaries-user.html#dx1-69073" >1371</a>, <a
+href="glossaries-user.html#dx1-94028" >1372</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">longpluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94027" >1373</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">name</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-12006" >1374</a>, <a
+href="glossaries-user.html#dx1-12011" >1375</a>, <a
+href="glossaries-user.html#dx1-12012" >1376</a>, <a
+href="glossaries-user.html#dx1-16002" >1377</a>, <a
+href="glossaries-user.html#dx1-26009" >1378</a>, <a
+href="glossaries-user.html#dx1-26028" >1379</a>, <a
+href="glossaries-user.html#dx1-26046" >1380</a>, <a
+href="glossaries-user.html#dx1-34012" >1381</a>, <a
+href="glossaries-user.html#dx1-34017" >1382</a>, <a
+href="glossaries-user.html#dx1-34019" >1383</a>, <a
+href="glossaries-user.html#dx1-34030" >1384</a>, <a
+href="glossaries-user.html#dx1-34073" >1385</a>, <a
+href="glossaries-user.html#dx1-34077" >1386</a>, <a
+href="glossaries-user.html#dx1-34080" >1387</a>, <a
+href="glossaries-user.html#dx1-34086" >1388</a>, <a
+href="glossaries-user.html#dx1-34088" >1389</a>, <a
+href="glossaries-user.html#dx1-34094" >1390</a>, <a
+href="glossaries-user.html#dx1-40001" >1391</a>, <a
+href="glossaries-user.html#dx1-43001" >1392</a>, <a
+href="glossaries-user.html#dx1-55042" >1393</a>, <a
+href="glossaries-user.html#dx1-55043" >1394</a>, <a
+href="glossaries-user.html#dx1-56039" >1395</a>, <a
+href="glossaries-user.html#dx1-62009" >1396</a>, <a
+href="glossaries-user.html#dx1-70009" >1397</a>, <a
+href="glossaries-user.html#dx1-71057" >1398</a>, <a
+href="glossaries-user.html#dx1-71060" >1399</a>, <a
+href="glossaries-user.html#dx1-71070" >1400</a>, <a
+href="glossaries-user.html#dx1-71077" >1401</a>, <a
+href="glossaries-user.html#dx1-71079" >1402</a>, <a
+href="glossaries-user.html#dx1-71084" >1403</a>, <a
+href="glossaries-user.html#dx1-72065" >1404</a>, <a
+href="glossaries-user.html#dx1-88023" >1405</a>, <a
+href="glossaries-user.html#dx1-92003" >1406</a>, <a
+href="glossaries-user.html#dx1-94004" >1407</a>, <a
+href="glossaries-user.html#dx1-61014" >1408</a>, <a
+href="glossaries-user.html#dx1-62055" >1409</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nonumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34107" >1410</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">parent</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34013" >1411</a>, <a
+href="glossaries-user.html#dx1-34018" >1412</a>, <a
+href="glossaries-user.html#dx1-34025" >1413</a>, <a
+href="glossaries-user.html#dx1-42001" >1414</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">plural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-15006" >1415</a>, <a
+href="glossaries-user.html#dx1-34041" >1416</a>, <a
+href="glossaries-user.html#dx1-34048" >1417</a>, <a
+href="glossaries-user.html#dx1-34061" >1418</a>, <a
+href="glossaries-user.html#dx1-35002" >1419</a>, <a
+href="glossaries-user.html#dx1-35004" >1420</a>, <a
+href="glossaries-user.html#dx1-43008" >1421</a>, <a
+href="glossaries-user.html#dx1-55050" >1422</a>, <a
+href="glossaries-user.html#dx1-56026" >1423</a>, <a
+href="glossaries-user.html#dx1-56029" >1424</a>, <a
+href="glossaries-user.html#dx1-57047" >1425</a>, <a
+href="glossaries-user.html#dx1-57056" >1426</a>, <a
+href="glossaries-user.html#dx1-62019" >1427</a>, <a
+href="glossaries-user.html#dx1-69028" >1428</a>, <a
+href="glossaries-user.html#dx1-92004" >1429</a>, <a
+href="glossaries-user.html#dx1-93006" >1430</a>, <a
+href="glossaries-user.html#dx1-94010" >1431</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">pluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94009" >1432</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefix</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93003" >1433</a>, <a
+href="glossaries-user.html#dx1-93009" >1434</a>, <a
+href="glossaries-user.html#dx1-93021" >1435</a>, <a
+href="glossaries-user.html#dx1-93024" >1436</a>, <a
+href="glossaries-user.html#dx1-93041" >1437</a>, <a
+href="glossaries-user.html#dx1-93049" >1438</a>, <a
+href="glossaries-user.html#dx1-93016" >1439</a> <br /></span>
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefixfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93007" >1440</a>, <a
+href="glossaries-user.html#dx1-93022" >1441</a>, <a
+href="glossaries-user.html#dx1-93025" >1442</a>, <a
+href="glossaries-user.html#dx1-93045" >1443</a>, <a
+href="glossaries-user.html#dx1-93051" >1444</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefixfirstplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93010" >1445</a>, <a
+href="glossaries-user.html#dx1-93031" >1446</a>, <a
+href="glossaries-user.html#dx1-93034" >1447</a>, <a
+href="glossaries-user.html#dx1-93047" >1448</a>, <a
+href="glossaries-user.html#dx1-93055" >1449</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefixplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93005" >1450</a>, <a
+href="glossaries-user.html#dx1-93012" >1451</a>, <a
+href="glossaries-user.html#dx1-93030" >1452</a>, <a
+href="glossaries-user.html#dx1-93033" >1453</a>, <a
+href="glossaries-user.html#dx1-93043" >1454</a>, <a
+href="glossaries-user.html#dx1-93053" >1455</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">see</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23018" >1456</a>, <a
+href="glossaries-user.html#dx1-23022" >1457</a>, <a
+href="glossaries-user.html#dx1-23023" >1458</a>, <a
+href="glossaries-user.html#dx1-25080" >1459</a>, <a
+href="glossaries-user.html#dx1-25084" >1460</a>, <a
+href="glossaries-user.html#dx1-34112" >1461</a>, <a
+href="glossaries-user.html#dx1-34113" >1462</a>, <a
+href="glossaries-user.html#dx1-34120" >1463</a>, <a
+href="glossaries-user.html#dx1-34124" >1464</a>, <a
+href="glossaries-user.html#dx1-34125" >1465</a>, <a
+href="glossaries-user.html#dx1-34126" >1466</a>, <a
+href="glossaries-user.html#dx1-47016" >1467</a>, <a
+href="glossaries-user.html#dx1-60009" >1468</a>, <a
+href="glossaries-user.html#dx1-60010" >1469</a>, <a
+href="glossaries-user.html#dx1-60012" >1470</a>, <a
+href="glossaries-user.html#dx1-60023" >1471</a>, <a
+href="glossaries-user.html#dx1-61001" >1472</a>, <a
+href="glossaries-user.html#dx1-4003" >1473</a>, <a
+href="glossaries-user.html#dx1-61007" >1474</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34130" >1475</a>, <a
+href="glossaries-user.html#dx1-34134" >1476</a>, <a
+href="glossaries-user.html#dx1-54033" >1477</a>, <a
+href="glossaries-user.html#dx1-55020" >1478</a>, <a
+href="glossaries-user.html#dx1-57043" >1479</a>, <a
+href="glossaries-user.html#dx1-57052" >1480</a>, <a
+href="glossaries-user.html#dx1-69013" >1481</a>, <a
+href="glossaries-user.html#dx1-69055" >1482</a>, <a
+href="glossaries-user.html#dx1-70006" >1483</a>, <a
+href="glossaries-user.html#dx1-91019" >1484</a>, <a
+href="glossaries-user.html#dx1-94025" >1485</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94024" >1486</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-15008" >1487</a>, <a
+href="glossaries-user.html#dx1-34131" >1488</a>, <a
+href="glossaries-user.html#dx1-40021" >1489</a>, <a
+href="glossaries-user.html#dx1-55054" >1490</a>, <a
+href="glossaries-user.html#dx1-57054" >1491</a>, <a
+href="glossaries-user.html#dx1-69014" >1492</a>, <a
+href="glossaries-user.html#dx1-69023" >1493</a>, <a
+href="glossaries-user.html#dx1-69026" >1494</a>, <a
+href="glossaries-user.html#dx1-69032" >1495</a>, <a
+href="glossaries-user.html#dx1-69034" >1496</a>, <a
+href="glossaries-user.html#dx1-69062" >1497</a>, <a
+href="glossaries-user.html#dx1-94031" >1498</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortpluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94030" >1499</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">sort</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3050" >1500</a>, <a
+href="glossaries-user.html#dx1-6007" >1501</a>, <a
+href="glossaries-user.html#dx1-8010" >1502</a>, <a
+href="glossaries-user.html#dx1-13048" >1503</a>, <a
+href="glossaries-user.html#dx1-16001" >1504</a>, <a
+href="glossaries-user.html#dx1-26007" >1505</a>, <a
+href="glossaries-user.html#dx1-26010" >1506</a>, <a
+href="glossaries-user.html#dx1-26012" >1507</a>, <a
+href="glossaries-user.html#dx1-26014" >1508</a>, <a
+href="glossaries-user.html#dx1-26027" >1509</a>, <a
+href="glossaries-user.html#dx1-34020" >1510</a>, <a
+href="glossaries-user.html#dx1-34072" >1511</a>, <a
+href="glossaries-user.html#dx1-34076" >1512</a>, <a
+href="glossaries-user.html#dx1-34078" >1513</a>, <a
+href="glossaries-user.html#dx1-34081" >1514</a>, <a
+href="glossaries-user.html#dx1-34085" >1515</a>, <a
+href="glossaries-user.html#dx1-34091" >1516</a>, <a
+href="glossaries-user.html#dx1-34093" >1517</a>, <a
+href="glossaries-user.html#dx1-34095" >1518</a>, <a
+href="glossaries-user.html#dx1-34144" >1519</a>, <a
+href="glossaries-user.html#dx1-40006" >1520</a>, <a
+href="glossaries-user.html#dx1-40010" >1521</a>, <a
+href="glossaries-user.html#dx1-43004" >1522</a>, <a
+href="glossaries-user.html#dx1-47010" >1523</a>, <a
+href="glossaries-user.html#dx1-55030" >1524</a>, <a
+href="glossaries-user.html#dx1-63054" >1525</a>, <a
+href="glossaries-user.html#dx1-70011" >1526</a>, <a
+href="glossaries-user.html#dx1-71058" >1527</a>, <a
+href="glossaries-user.html#dx1-71061" >1528</a>, <a
+href="glossaries-user.html#dx1-71069" >1529</a>, <a
+href="glossaries-user.html#dx1-71078" >1530</a>, <a
+href="glossaries-user.html#dx1-71085" >1531</a>, <a
+href="glossaries-user.html#dx1-88022" >1532</a>, <a
+href="glossaries-user.html#dx1-88024" >1533</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">subentrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63036" >1534</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbol</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-12004" >1535</a>, <a
+href="glossaries-user.html#dx1-12005" >1536</a>, <a
+href="glossaries-user.html#dx1-34064" >1537</a>, <a
+href="glossaries-user.html#dx1-34071" >1538</a>, <a
+href="glossaries-user.html#dx1-34136" >1539</a>, <a
+href="glossaries-user.html#dx1-40004" >1540</a>, <a
+href="glossaries-user.html#dx1-54035" >1541</a>, <a
+href="glossaries-user.html#dx1-56046" >1542</a>, <a
+href="glossaries-user.html#dx1-57077" >1543</a>, <a
+href="glossaries-user.html#dx1-57086" >1544</a>, <a
+href="glossaries-user.html#dx1-72064" >1545</a>, <a
+href="glossaries-user.html#dx1-91014" >1546</a>, <a
+href="glossaries-user.html#dx1-94014" >1547</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbolaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94013" >1548</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbolplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34065" >1549</a>, <a
+href="glossaries-user.html#dx1-40005" >1550</a>, <a
+href="glossaries-user.html#dx1-94016" >1551</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbolpluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94015" >1552</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">text</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34028" >1553</a>, <a
+href="glossaries-user.html#dx1-34033" >1554</a>, <a
+href="glossaries-user.html#dx1-34044" >1555</a>, <a
+href="glossaries-user.html#dx1-34132" >1556</a>, <a
+href="glossaries-user.html#dx1-54031" >1557</a>, <a
+href="glossaries-user.html#dx1-55013" >1558</a>, <a
+href="glossaries-user.html#dx1-55041" >1559</a>, <a
+href="glossaries-user.html#dx1-56008" >1560</a>, <a
+href="glossaries-user.html#dx1-56025" >1561</a>, <a
+href="glossaries-user.html#dx1-56041" >1562</a>, <a
+href="glossaries-user.html#dx1-57041" >1563</a>, <a
+href="glossaries-user.html#dx1-57046" >1564</a>, <a
+href="glossaries-user.html#dx1-57055" >1565</a>, <a
+href="glossaries-user.html#dx1-62010" >1566</a>, <a
+href="glossaries-user.html#dx1-62016" >1567</a>, <a
+href="glossaries-user.html#dx1-69043" >1568</a>, <a
+href="glossaries-user.html#dx1-70003" >1569</a>, <a
+href="glossaries-user.html#dx1-75002" >1570</a>, <a
+href="glossaries-user.html#dx1-92002" >1571</a>, <a
+href="glossaries-user.html#dx1-93004" >1572</a>, <a
+href="glossaries-user.html#dx1-94006" >1573</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">textaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-94005" >1574</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">type</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34097" >1575</a>, <a
+href="glossaries-user.html#dx1-44004" >1576</a>, <a
+href="glossaries-user.html#dx1-69010" >1577</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user1</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-12007" >1578</a>, <a
+href="glossaries-user.html#dx1-12010" >1579</a>, <a
+href="glossaries-user.html#dx1-12013" >1580</a>, <a
+href="glossaries-user.html#dx1-12014" >1581</a>, <a
+href="glossaries-user.html#dx1-34099" >1582</a>, <a
+href="glossaries-user.html#dx1-40014" >1583</a>, <a
+href="glossaries-user.html#dx1-56056" >1584</a>, <a
+href="glossaries-user.html#dx1-88098" >1585</a>, <a
+href="glossaries-user.html#dx1-88101" >1586</a>, <a
+href="glossaries-user.html#dx1-91028" >1587</a>, <a
+href="glossaries-user.html#dx1-91031" >1588</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user2</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34101" >1589</a>, <a
+href="glossaries-user.html#dx1-40015" >1590</a>, <a
+href="glossaries-user.html#dx1-56061" >1591</a>, <a
+href="glossaries-user.html#dx1-88102" >1592</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user3</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34102" >1593</a>, <a
+href="glossaries-user.html#dx1-40016" >1594</a>, <a
+href="glossaries-user.html#dx1-56066" >1595</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user4</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34103" >1596</a>, <a
+href="glossaries-user.html#dx1-40017" >1597</a>, <a
+href="glossaries-user.html#dx1-56071" >1598</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user5</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34104" >1599</a>, <a
+href="glossaries-user.html#dx1-40018" >1600</a>, <a
+href="glossaries-user.html#dx1-56076" >1601</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user6</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34100" >1602</a>, <a
+href="glossaries-user.html#dx1-40019" >1603</a>, <a
+href="glossaries-user.html#dx1-56081" >1604</a>, <a
+href="glossaries-user.html#dx1-88099" >1605</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newglossarystyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88001" ><span
+class="cmti-10">1606</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newignoredglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-68010" ><span
+class="cmti-10">1607</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newterm</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29014" ><span
+class="cmti-10">1608</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">ngerman </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13031" >1609</a>, <a
+href="glossaries-user.html#dx1-13041" >1610</a>, <a
+href="glossaries-user.html#dx1-13050" >1611</a>, <a
+href="glossaries-user.html#dx1-64013" >1612</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\noist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-33008" ><span
+class="cmti-10">1613</span></a> <br /></span>
+<span class="index-item">Non-Latin Alphabet&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3042" ><span
+class="cmbx-10">1614</span></a> <br /></span>
+<span class="index-item">non-Latin character&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3009" >1615</a>, <a
+href="glossaries-user.html#dx1-3043" >1616</a>, <a
+href="glossaries-user.html#dx1-3044" ><span
+class="cmbx-10">1617</span></a>, <a
+href="glossaries-user.html#dx1-11095" >1618</a>, <a
+href="glossaries-user.html#dx1-13013" >1619</a>, <a
+href="glossaries-user.html#dx1-13016" >1620</a>, <a
+href="glossaries-user.html#dx1-14053" >1621</a>, <a
+href="glossaries-user.html#dx1-15009" >1622</a>, <a
+href="glossaries-user.html#dx1-34009" >1623</a>, <a
+href="glossaries-user.html#dx1-34138" >1624</a>, <a
+href="glossaries-user.html#dx1-34146" >1625</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\nopostdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34022" ><span
+class="cmti-10">1626</span></a> <br /></span>
+<span class="index-item">number list&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3047" ><span
+class="cmbx-10">1627</span></a>, <a
+href="glossaries-user.html#dx1-6010" >1628</a>, <a
+href="glossaries-user.html#dx1-7007" >1629</a>, <a
+href="glossaries-user.html#dx1-9007" >1630</a>, <a
+href="glossaries-user.html#dx1-10002" >1631</a>, <a
+href="glossaries-user.html#dx1-11033" >1632</a>, <a
+href="glossaries-user.html#dx1-11047" >1633</a>, <a
+href="glossaries-user.html#dx1-11109" >1634</a>, <a
+href="glossaries-user.html#dx1-16006" >1635</a>, <a
+href="glossaries-user.html#dx1-16074" >1636</a>, <a
+href="glossaries-user.html#dx1-23043" >1637</a>, <a
+href="glossaries-user.html#dx1-23119" >1638</a>, <a
+href="glossaries-user.html#dx1-25069" >1639</a>, <a
+href="glossaries-user.html#dx1-25072" >1640</a>, <a
+href="glossaries-user.html#dx1-25075" >1641</a>, <a
+href="glossaries-user.html#dx1-25076" >1642</a>, <a
+href="glossaries-user.html#dx1-25078" >1643</a>, <a
+href="glossaries-user.html#dx1-25088" >1644</a>, <a
+href="glossaries-user.html#dx1-33016" >1645</a>, <a
+href="glossaries-user.html#dx1-33020" >1646</a>, <a
+href="glossaries-user.html#dx1-33021" >1647</a>, <a
+href="glossaries-user.html#dx1-34108" >1648</a>, <a
+href="glossaries-user.html#dx1-34110" >1649</a>, <a
+href="glossaries-user.html#dx1-34114" >1650</a>, <a
+href="glossaries-user.html#dx1-34115" >1651</a>, <a
+href="glossaries-user.html#dx1-41002" >1652</a>, <a
+href="glossaries-user.html#dx1-43003" >1653</a>, <a
+href="glossaries-user.html#dx1-49001" >1654</a>, <a
+href="glossaries-user.html#dx1-49005" >1655</a>, <a
+href="glossaries-user.html#dx1-49011" >1656</a>, <a
+href="glossaries-user.html#dx1-49012" >1657</a>, <a
+href="glossaries-user.html#dx1-49014" >1658</a>, <a
+href="glossaries-user.html#dx1-50001" >1659</a>, <a
+href="glossaries-user.html#dx1-50006" >1660</a>, <a
+href="glossaries-user.html#dx1-50007" >1661</a>, <a
+href="glossaries-user.html#dx1-50010" >1662</a>, <a
+href="glossaries-user.html#dx1-50015" >1663</a>, <a
+href="glossaries-user.html#dx1-51017" >1664</a>, <a
+href="glossaries-user.html#dx1-52018" >1665</a>, <a
+href="glossaries-user.html#dx1-52021" >1666</a>, <a
+href="glossaries-user.html#dx1-54004" >1667</a>, <a
+href="glossaries-user.html#dx1-54009" >1668</a>, <a
+href="glossaries-user.html#dx1-59006" >1669</a>, <a
+href="glossaries-user.html#dx1-60019" >1670</a>, <a
+href="glossaries-user.html#dx1-60020" >1671</a>, <a
+href="glossaries-user.html#dx1-60021" >1672</a>, <a
+href="glossaries-user.html#dx1-60025" >1673</a>, <a
+href="glossaries-user.html#dx1-62062" >1674</a>, <a
+href="glossaries-user.html#dx1-63011" >1675</a>, <a
+href="glossaries-user.html#dx1-66002" >1676</a>, <a
+href="glossaries-user.html#dx1-66051" >1677</a>, <a
+href="glossaries-user.html#dx1-66062" >1678</a>, <a
+href="glossaries-user.html#dx1-68002" >1679</a>, <a
+href="glossaries-user.html#dx1-79014" >1680</a>, <a
+href="glossaries-user.html#dx1-79038" >1681</a>, <a
+href="glossaries-user.html#dx1-79041" >1682</a>, <a
+href="glossaries-user.html#dx1-80011" >1683</a>, <a
+href="glossaries-user.html#dx1-80021" >1684</a>, <a
+href="glossaries-user.html#dx1-81011" >1685</a>, <a
+href="glossaries-user.html#dx1-81021" >1686</a>, <a
+href="glossaries-user.html#dx1-83016" >1687</a>, <a
+href="glossaries-user.html#dx1-83026" >1688</a>, <a
+href="glossaries-user.html#dx1-84013" >1689</a>, <a
+href="glossaries-user.html#dx1-84023" >1690</a>, <a
+href="glossaries-user.html#dx1-87003" >1691</a>, <a
+href="glossaries-user.html#dx1-88039" >1692</a>, <a
+href="glossaries-user.html#dx1-88080" >1693</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">O</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\oldacronym</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-74004" ><span
+class="cmti-10">1694</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">acronym</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-14026" >1695</a>, <a
+href="glossaries-user.html#dx1-19015" >1696</a>, <a
+href="glossaries-user.html#dx1-19019" >1697</a>, <a
+href="glossaries-user.html#dx1-20011" >1698</a>, <a
+href="glossaries-user.html#dx1-20016" >1699</a>, <a
+href="glossaries-user.html#dx1-22001" >1700</a>, <a
+href="glossaries-user.html#dx1-22003" >1701</a>, <a
+href="glossaries-user.html#dx1-23027" >1702</a>, <a
+href="glossaries-user.html#dx1-24043" >1703</a>, <a
+href="glossaries-user.html#dx1-24044" >1704</a>, <a
+href="glossaries-user.html#dx1-27001" >1705</a>, <a
+href="glossaries-user.html#dx1-27006" >1706</a>, <a
+href="glossaries-user.html#dx1-27021" >1707</a>, <a
+href="glossaries-user.html#dx1-30015" >1708</a>, <a
+href="glossaries-user.html#dx1-44019" >1709</a>, <a
+href="glossaries-user.html#dx1-44020" >1710</a>, <a
+href="glossaries-user.html#dx1-44025" >1711</a>, <a
+href="glossaries-user.html#dx1-59011" >1712</a>, <a
+href="glossaries-user.html#dx1-68014" >1713</a>, <a
+href="glossaries-user.html#dx1-68015" >1714</a>, <a
+href="glossaries-user.html#dx1-68017" >1715</a>, <a
+href="glossaries-user.html#dx1-73005" >1716</a>, <a
+href="glossaries-user.html#dx1-27011" >1717</a>, <a
+href="glossaries-user.html#dx1-44024" >1718</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-user.html#dx1-22002" >1719</a>, <a
+href="glossaries-user.html#dx1-27018" >1720</a> <br /></span>
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronymlists</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27019" >1721</a>, <a
+href="glossaries-user.html#dx1-27020" >1722</a>, <a
+href="glossaries-user.html#dx1-27023" >1723</a>, <a
+href="glossaries-user.html#dx1-57010" >1724</a>, <a
+href="glossaries-user.html#dx1-68018" >1725</a>, <a
+href="glossaries-user.html#dx1-69016" >1726</a>, <a
+href="glossaries-user.html#dx1-90004" >1727</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronyms</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23028" >1728</a>, <a
+href="glossaries-user.html#dx1-27017" >1729</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">automake</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-7006" >1730</a>, <a
+href="glossaries-user.html#dx1-16005" >1731</a>, <a
+href="glossaries-user.html#dx1-26077" >1732</a>, <a
+href="glossaries-user.html#dx1-26091" >1733</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-user.html#dx1-26098" >1734</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">immediate</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26082" >1735</a>, <a
+href="glossaries-user.html#dx1-26087" >1736</a>, <a
+href="glossaries-user.html#dx1-26088" >1737</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-user.html#dx1-26078" >1738</a>, <a
+href="glossaries-user.html#dx1-26086" >1739</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">compatible-2.07</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29032" >1740</a>, <a
+href="glossaries-user.html#dx1-30012" >1741</a>, <a
+href="glossaries-user.html#dx1-33010" >1742</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">compatible-3.07</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27004" >1743</a>, <a
+href="glossaries-user.html#dx1-29033" >1744</a>, <a
+href="glossaries-user.html#dx1-57005" >1745</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">counter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25086" >1746</a>, <a
+href="glossaries-user.html#dx1-33017" >1747</a>, <a
+href="glossaries-user.html#dx1-49003" >1748</a>, <a
+href="glossaries-user.html#dx1-66004" >1749</a>, <a
+href="glossaries-user.html#dx1-66038" >1750</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">page</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25087" >1751</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">counterwithin</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25010" >1752</a>, <a
+href="glossaries-user.html#dx1-25014" >1753</a>, <a
+href="glossaries-user.html#dx1-78002" >1754</a>, <a
+href="glossaries-user.html#dx1-88047" >1755</a>, <a
+href="glossaries-user.html#dx1-88084" >1756</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">debug</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23008" >1757</a>, <a
+href="glossaries-user.html#dx1-23019" >1758</a>, <a
+href="glossaries-user.html#dx1-23020" >1759</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-user.html#dx1-23009" >1760</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-user.html#dx1-23004" >1761</a>, <a
+href="glossaries-user.html#dx1-23012" >1762</a>, <a
+href="glossaries-user.html#dx1-23014" >1763</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-user.html#dx1-23003" >1764</a>, <a
+href="glossaries-user.html#dx1-23010" >1765</a>, <a
+href="glossaries-user.html#dx1-23011" >1766</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">description</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28002" >1767</a>, <a
+href="glossaries-user.html#dx1-28014" >1768</a>, <a
+href="glossaries-user.html#dx1-28015" >1769</a>, <a
+href="glossaries-user.html#dx1-28022" >1770</a>, <a
+href="glossaries-user.html#dx1-28023" >1771</a>, <a
+href="glossaries-user.html#dx1-28029" >1772</a>, <a
+href="glossaries-user.html#dx1-28031" >1773</a>, <a
+href="glossaries-user.html#dx1-28033" >1774</a>, <a
+href="glossaries-user.html#dx1-28036" >1775</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">dua</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28011" >1776</a>, <a
+href="glossaries-user.html#dx1-28034" >1777</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">entrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25001" >1778</a>, <a
+href="glossaries-user.html#dx1-25023" >1779</a>, <a
+href="glossaries-user.html#dx1-78001" >1780</a>, <a
+href="glossaries-user.html#dx1-88046" >1781</a>, <a
+href="glossaries-user.html#dx1-88083" >1782</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-user.html#dx1-25002" >1783</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-user.html#dx1-25011" >1784</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">esclocations</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25059" >1785</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-user.html#dx1-25062" >1786</a>, <a
+href="glossaries-user.html#dx1-25067" >1787</a>, <a
+href="glossaries-user.html#dx1-51001" >1788</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-user.html#dx1-25060" >1789</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28006" >1790</a>, <a
+href="glossaries-user.html#dx1-28007" >1791</a>, <a
+href="glossaries-user.html#dx1-28009" >1792</a>, <a
+href="glossaries-user.html#dx1-28016" >1793</a>, <a
+href="glossaries-user.html#dx1-28024" >1794</a>, <a
+href="glossaries-user.html#dx1-28025" >1795</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyperfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23088" >1796</a>, <a
+href="glossaries-user.html#dx1-23098" >1797</a>, <a
+href="glossaries-user.html#dx1-58015" >1798</a>, <a
+href="glossaries-user.html#dx1-58017" >1799</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-user.html#dx1-23102" >1800</a>, <a
+href="glossaries-user.html#dx1-54037" >1801</a>, <a
+href="glossaries-user.html#dx1-58010" >1802</a>, <a
+href="glossaries-user.html#dx1-58013" >1803</a>, <a
+href="glossaries-user.html#dx1-71072" >1804</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-user.html#dx1-23089" >1805</a>, <a
+href="glossaries-user.html#dx1-23093" >1806</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23031" >1807</a>, <a
+href="glossaries-user.html#dx1-29013" >1808</a>, <a
+href="glossaries-user.html#dx1-29025" >1809</a>, <a
+href="glossaries-user.html#dx1-29028" >1810</a>, <a
+href="glossaries-user.html#dx1-29030" >1811</a>, <a
+href="glossaries-user.html#dx1-29031" >1812</a>, <a
+href="glossaries-user.html#dx1-68021" >1813</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">indexonlyfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23112" >1814</a>, <a
+href="glossaries-user.html#dx1-23117" >1815</a>, <a
+href="glossaries-user.html#dx1-49009" >1816</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-user.html#dx1-23113" >1817</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">kernelglossredefs</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29034" >1818</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-user.html#dx1-29036" >1819</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">makeindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-22004" >1820</a>, <a
+href="glossaries-user.html#dx1-26054" >1821</a>, <a
+href="glossaries-user.html#dx1-30005" >1822</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">ngerman</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13034" >1823</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">noglossaryindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29029" >1824</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nogroupskip</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11018" >1825</a>, <a
+href="glossaries-user.html#dx1-25091" >1826</a>, <a
+href="glossaries-user.html#dx1-63044" >1827</a>, <a
+href="glossaries-user.html#dx1-78009" >1828</a>, <a
+href="glossaries-user.html#dx1-78037" >1829</a>, <a
+href="glossaries-user.html#dx1-82020" >1830</a>, <a
+href="glossaries-user.html#dx1-88037" >1831</a>, <a
+href="glossaries-user.html#dx1-88096" >1832</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-user.html#dx1-25092" >1833</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nohypertypes</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23084" >1834</a>, <a
+href="glossaries-user.html#dx1-23091" >1835</a>, <a
+href="glossaries-user.html#dx1-23092" >1836</a>, <a
+href="glossaries-user.html#dx1-23099" >1837</a>, <a
+href="glossaries-user.html#dx1-54022" >1838</a>, <a
+href="glossaries-user.html#dx1-54029" >1839</a>, <a
+href="glossaries-user.html#dx1-57026" >1840</a>, <a
+href="glossaries-user.html#dx1-58004" >1841</a>, <a
+href="glossaries-user.html#dx1-68011" >1842</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29026" >1843</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolangwarn</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-4" >1844</a>, <a
+href="glossaries-user.html#dx1-23005" >1845</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25041" >1846</a>, <a
+href="glossaries-user.html#dx1-30008" >1847</a>, <a
+href="glossaries-user.html#dx1-79004" >1848</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolong</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25033" >1849</a>, <a
+href="glossaries-user.html#dx1-30006" >1850</a>, <a
+href="glossaries-user.html#dx1-80004" >1851</a>, <a
+href="glossaries-user.html#dx1-78019" >1852</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nomain</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23026" >1853</a>, <a
+href="glossaries-user.html#dx1-27016" >1854</a>, <a
+href="glossaries-user.html#dx1-29005" >1855</a>, <a
+href="glossaries-user.html#dx1-29011" >1856</a>, <a
+href="glossaries-user.html#dx1-29020" >1857</a>, <a
+href="glossaries-user.html#dx1-29037" >1858</a>, <a
+href="glossaries-user.html#dx1-30011" >1859</a>, <a
+href="glossaries-user.html#dx1-68013" >1860</a>, <a
+href="glossaries-user.html#dx1-27013" >1861</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nonumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3048" >1862</a>, <a
+href="glossaries-user.html#dx1-25068" >1863</a>, <a
+href="glossaries-user.html#dx1-25079" >1864</a>, <a
+href="glossaries-user.html#dx1-34109" >1865</a>, <a
+href="glossaries-user.html#dx1-49002" >1866</a>, <a
+href="glossaries-user.html#dx1-49008" >1867</a>, <a
+href="glossaries-user.html#dx1-59007" >1868</a>, <a
+href="glossaries-user.html#dx1-79042" >1869</a>, <a
+href="glossaries-user.html#dx1-88059" >1870</a>, <a
+href="glossaries-user.html#dx1-88061" >1871</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nopostdot</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25089" >1872</a>, <a
+href="glossaries-user.html#dx1-78043" >1873</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-user.html#dx1-25090" >1874</a> <br /></span>
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">noredefwarn</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23006" >1875</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nostyles</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25053" >1876</a>, <a
+href="glossaries-user.html#dx1-30010" >1877</a>, <a
+href="glossaries-user.html#dx1-79005" >1878</a>, <a
+href="glossaries-user.html#dx1-80005" >1879</a>, <a
+href="glossaries-user.html#dx1-83005" >1880</a>, <a
+href="glossaries-user.html#dx1-85003" >1881</a>, <a
+href="glossaries-user.html#dx1-78021" >1882</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nosuper</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25037" >1883</a>, <a
+href="glossaries-user.html#dx1-30007" >1884</a>, <a
+href="glossaries-user.html#dx1-83004" >1885</a>, <a
+href="glossaries-user.html#dx1-78020" >1886</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">notranslate</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-14010" >1887</a>, <a
+href="glossaries-user.html#dx1-23082" >1888</a>, <a
+href="glossaries-user.html#dx1-30014" >1889</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">notree</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25047" >1890</a>, <a
+href="glossaries-user.html#dx1-30009" >1891</a>, <a
+href="glossaries-user.html#dx1-85002" >1892</a>, <a
+href="glossaries-user.html#dx1-86011" >1893</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nowarn</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23001" >1894</a>, <a
+href="glossaries-user.html#dx1-23007" >1895</a>, <a
+href="glossaries-user.html#dx1-23013" >1896</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">numberedsection</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24035" >1897</a>, <a
+href="glossaries-user.html#dx1-24036" >1898</a>, <a
+href="glossaries-user.html#dx1-63027" >1899</a>, <a
+href="glossaries-user.html#dx1-63028" >1900</a>, <a
+href="glossaries-user.html#dx1-63060" >1901</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">autolabel</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24039" >1902</a>, <a
+href="glossaries-user.html#dx1-24046" >1903</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-user.html#dx1-24037" >1904</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-user.html#dx1-24045" >1905</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolabel</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24038" >1906</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">numberline</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24004" >1907</a>, <a
+href="glossaries-user.html#dx1-24010" >1908</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">numbers</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23030" >1909</a>, <a
+href="glossaries-user.html#dx1-29007" >1910</a>, <a
+href="glossaries-user.html#dx1-68020" >1911</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">order</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26047" >1912</a>, <a
+href="glossaries-user.html#dx1-26050" >1913</a>, <a
+href="glossaries-user.html#dx1-63040" >1914</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">letter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-7034" >1915</a>, <a
+href="glossaries-user.html#dx1-8034" >1916</a>, <a
+href="glossaries-user.html#dx1-11061" >1917</a>, <a
+href="glossaries-user.html#dx1-16085" >1918</a>, <a
+href="glossaries-user.html#dx1-26049" >1919</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">word</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-11060" >1920</a>, <a
+href="glossaries-user.html#dx1-16088" >1921</a>, <a
+href="glossaries-user.html#dx1-26048" >1922</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">record</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-13010" >1923</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">sanitizesort</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-5006" >1924</a>, <a
+href="glossaries-user.html#dx1-23035" >1925</a>, <a
+href="glossaries-user.html#dx1-26033" >1926</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-user.html#dx1-6001" >1927</a>, <a
+href="glossaries-user.html#dx1-6002" >1928</a>, <a
+href="glossaries-user.html#dx1-23037" >1929</a>, <a
+href="glossaries-user.html#dx1-23039" >1930</a>, <a
+href="glossaries-user.html#dx1-26034" >1931</a>, <a
+href="glossaries-user.html#dx1-34089" >1932</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-user.html#dx1-6003" >1933</a>, <a
+href="glossaries-user.html#dx1-6004" >1934</a>, <a
+href="glossaries-user.html#dx1-23038" >1935</a>, <a
+href="glossaries-user.html#dx1-34082" >1936</a>, <a
+href="glossaries-user.html#dx1-34084" >1937</a>, <a
+href="glossaries-user.html#dx1-34087" >1938</a>, <a
+href="glossaries-user.html#dx1-34096" >1939</a>, <a
+href="glossaries-user.html#dx1-34148" >1940</a>, <a
+href="glossaries-user.html#dx1-63053" >1941</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">savenumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23118" >1942</a>, <a
+href="glossaries-user.html#dx1-62059" >1943</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-user.html#dx1-23120" >1944</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">savewrites</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23040" >1945</a>, <a
+href="glossaries-user.html#dx1-23042" >1946</a>, <a
+href="glossaries-user.html#dx1-23048" >1947</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-user.html#dx1-23041" >1948</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">section</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24011" >1949</a>, <a
+href="glossaries-user.html#dx1-63058" >1950</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">seeautonumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25077" >1951</a>, <a
+href="glossaries-user.html#dx1-25083" >1952</a>, <a
+href="glossaries-user.html#dx1-34117" >1953</a>, <a
+href="glossaries-user.html#dx1-60026" >1954</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">seenoindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23021" >1955</a>, <a
+href="glossaries-user.html#dx1-34123" >1956</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-user.html#dx1-23025" >1957</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-user.html#dx1-23024" >1958</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortcuts</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27026" >1959</a>, <a
+href="glossaries-user.html#dx1-69084" >1960</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">smallcaps</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28004" >1961</a>, <a
+href="glossaries-user.html#dx1-28008" >1962</a>, <a
+href="glossaries-user.html#dx1-28012" >1963</a>, <a
+href="glossaries-user.html#dx1-28027" >1964</a>, <a
+href="glossaries-user.html#dx1-28030" >1965</a>, <a
+href="glossaries-user.html#dx1-30018" >1966</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">smaller</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28005" >1967</a>, <a
+href="glossaries-user.html#dx1-28010" >1968</a>, <a
+href="glossaries-user.html#dx1-28017" >1969</a>, <a
+href="glossaries-user.html#dx1-28028" >1970</a>, <a
+href="glossaries-user.html#dx1-28032" >1971</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">sort</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26001" >1972</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">def</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-6006" >1973</a>, <a
+href="glossaries-user.html#dx1-6008" >1974</a>, <a
+href="glossaries-user.html#dx1-26004" >1975</a>, <a
+href="glossaries-user.html#dx1-26011" >1976</a>, <a
+href="glossaries-user.html#dx1-26015" >1977</a>, <a
+href="glossaries-user.html#dx1-26018" >1978</a>, <a
+href="glossaries-user.html#dx1-26024" >1979</a>, <a
+href="glossaries-user.html#dx1-26036" >1980</a>, <a
+href="glossaries-user.html#dx1-34074" >1981</a>, <a
+href="glossaries-user.html#dx1-43006" >1982</a>, <a
+href="glossaries-user.html#dx1-78007" >1983</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-user.html#dx1-5009" >1984</a>, <a
+href="glossaries-user.html#dx1-5011" >1985</a>, <a
+href="glossaries-user.html#dx1-10001" >1986</a>, <a
+href="glossaries-user.html#dx1-26020" >1987</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">standard</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26006" >1988</a>, <a
+href="glossaries-user.html#dx1-26025" >1989</a>, <a
+href="glossaries-user.html#dx1-26042" >1990</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">use</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-6005" >1991</a>, <a
+href="glossaries-user.html#dx1-6009" >1992</a>, <a
+href="glossaries-user.html#dx1-26005" >1993</a>, <a
+href="glossaries-user.html#dx1-26013" >1994</a>, <a
+href="glossaries-user.html#dx1-26016" >1995</a>, <a
+href="glossaries-user.html#dx1-26019" >1996</a>, <a
+href="glossaries-user.html#dx1-26023" >1997</a>, <a
+href="glossaries-user.html#dx1-26037" >1998</a>, <a
+href="glossaries-user.html#dx1-34075" >1999</a>, <a
+href="glossaries-user.html#dx1-43005" >2000</a>, <a
+href="glossaries-user.html#dx1-78008" >2001</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">style</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25025" >2002</a>, <a
+href="glossaries-user.html#dx1-25046" >2003</a>, <a
+href="glossaries-user.html#dx1-25055" >2004</a>, <a
+href="glossaries-user.html#dx1-63024" >2005</a>, <a
+href="glossaries-user.html#dx1-77005" >2006</a>, <a
+href="glossaries-user.html#dx1-81008" >2007</a>, <a
+href="glossaries-user.html#dx1-82008" >2008</a>, <a
+href="glossaries-user.html#dx1-84008" >2009</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25028" >2010</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">list</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25026" >2011</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">subentrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25019" >2012</a>, <a
+href="glossaries-user.html#dx1-41001" >2013</a>, <a
+href="glossaries-user.html#dx1-43007" >2014</a>, <a
+href="glossaries-user.html#dx1-78003" >2015</a>, <a
+href="glossaries-user.html#dx1-88065" >2016</a>, <a
+href="glossaries-user.html#dx1-88085" >2017</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-user.html#dx1-25020" >2018</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbols</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23029" >2019</a>, <a
+href="glossaries-user.html#dx1-29001" >2020</a>, <a
+href="glossaries-user.html#dx1-68019" >2021</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">toc</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-7038" >2022</a>, <a
+href="glossaries-user.html#dx1-24001" >2023</a>, <a
+href="glossaries-user.html#dx1-24005" >2024</a>, <a
+href="glossaries-user.html#dx1-24008" >2025</a>, <a
+href="glossaries-user.html#dx1-24009" >2026</a>, <a
+href="glossaries-user.html#dx1-63021" >2027</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">translate</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23051" >2028</a>, <a
+href="glossaries-user.html#dx1-23074" >2029</a>, <a
+href="glossaries-user.html#dx1-23076" >2030</a>, <a
+href="glossaries-user.html#dx1-30013" >2031</a> <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-user.html#dx1-14012" >2032</a>, <a
+href="glossaries-user.html#dx1-14017" >2033</a>, <a
+href="glossaries-user.html#dx1-14041" >2034</a>, <a
+href="glossaries-user.html#dx1-14049" >2035</a>, <a
+href="glossaries-user.html#dx1-23068" >2036</a>, <a
+href="glossaries-user.html#dx1-23071" >2037</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-user.html#dx1-14011" >2038</a>, <a
+href="glossaries-user.html#dx1-23062" >2039</a>, <a
+href="glossaries-user.html#dx1-23081" >2040</a>, <a
+href="glossaries-user.html#dx1-23083" >2041</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-user.html#dx1-23052" >2042</a>, <a
+href="glossaries-user.html#dx1-23073" >2043</a>, <a
+href="glossaries-user.html#dx1-23075" >2044</a>, <a
+href="glossaries-user.html#dx1-23077" >2045</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">ucfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24032" >2046</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">ucmark</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24017" >2047</a>, <a
+href="glossaries-user.html#dx1-24019" >2048</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-user.html#dx1-24020" >2049</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-user.html#dx1-24022" >2050</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">xindy</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-8015" >2051</a>, <a
+href="glossaries-user.html#dx1-11097" >2052</a>, <a
+href="glossaries-user.html#dx1-13008" >2053</a>, <a
+href="glossaries-user.html#dx1-16089" >2054</a>, <a
+href="glossaries-user.html#dx1-19003" >2055</a>, <a
+href="glossaries-user.html#dx1-20002" >2056</a>, <a
+href="glossaries-user.html#dx1-26062" >2057</a>, <a
+href="glossaries-user.html#dx1-26063" >2058</a>, <a
+href="glossaries-user.html#dx1-26073" >2059</a>, <a
+href="glossaries-user.html#dx1-30002" >2060</a>, <a
+href="glossaries-user.html#dx1-30016" >2061</a>, <a
+href="glossaries-user.html#dx1-64002" >2062</a>, <a
+href="glossaries-user.html#dx1-66001" >2063</a>, <a
+href="glossaries-user.html#dx1-67001" >2064</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">xindygloss</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26072" >2065</a>, <a
+href="glossaries-user.html#dx1-30003" >2066</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">xindynoglsnumbers</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-26076" >2067</a>, <a
+href="glossaries-user.html#dx1-30004" >2068</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">page </span>(counter)&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66036" >2069</a>, <a
+href="glossaries-user.html#dx1-66042" >2070</a> <br /></span>
+<span class="index-item">page type precedence&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-53005" >2071</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">pdflatex</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28" >2072</a>, <a
+href="glossaries-user.html#dx1-54019" >2073</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\PGLS</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93027" ><span
+class="cmti-10">2074</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Pgls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93023" ><span
+class="cmti-10">2075</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\pgls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93020" ><span
+class="cmti-10">2076</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\PGLSpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93036" ><span
+class="cmti-10">2077</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Pglspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93032" ><span
+class="cmti-10">2078</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\pglspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-93029" ><span
+class="cmti-10">2079</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">pod2man</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-17036" >2080</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">polyglossia </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-14002" >2081</a>, <a
+href="glossaries-user.html#dx1-14004" >2082</a>, <a
+href="glossaries-user.html#dx1-14006" >2083</a>, <a
+href="glossaries-user.html#dx1-14039" >2084</a>, <a
+href="glossaries-user.html#dx1-23060" >2085</a>, <a
+href="glossaries-user.html#dx1-23064" >2086</a>, <a
+href="glossaries-user.html#dx1-23079" >2087</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printacronyms</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27002" ><span
+class="cmti-10">2088</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63003" ><span
+class="cmti-10">2089</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63014" ><span
+class="cmti-10">2090</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">entrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63032" >2091</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nogroupskip</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63030" >2092</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nonumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63029" >2093</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nopostdot</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63031" >2094</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">numberedsection</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63026" >2095</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">style</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25057" >2096</a>, <a
+href="glossaries-user.html#dx1-63023" >2097</a>, <a
+href="glossaries-user.html#dx1-77001" >2098</a>, <a
+href="glossaries-user.html#dx1-78029" >2099</a>, <a
+href="glossaries-user.html#dx1-82019" >2100</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">subentrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63034" >2101</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">title</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-5" >2102</a>, <a
+href="glossaries-user.html#dx1-14043" >2103</a>, <a
+href="glossaries-user.html#dx1-63019" >2104</a>, <a
+href="glossaries-user.html#dx1-63022" >2105</a>, <a
+href="glossaries-user.html#dx1-69003" >2106</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">toctitle</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63020" >2107</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">type</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63016" >2108</a>, <a
+href="glossaries-user.html#dx1-63017" >2109</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printindex</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29017" ><span
+class="cmti-10">2110</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printnoidxglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63001" ><span
+class="cmti-10">2111</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printnoidxglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63012" ><span
+class="cmti-10">2112</span></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-user.html#dx1-26002" >2113</a>, <a
+href="glossaries-user.html#dx1-26040" >2114</a>, <a
+href="glossaries-user.html#dx1-26052" >2115</a>, <a
+href="glossaries-user.html#dx1-63039" >2116</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printnumbers</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29008" ><span
+class="cmti-10">2117</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printsymbols</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-29002" ><span
+class="cmti-10">2118</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\provideglossaryentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-34006" ><span
+class="cmti-10">2119</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">R</span>
+<span class="index-item"><span
+class="cmss-10">relsize </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-28019" >2120</a>, <a
+href="glossaries-user.html#dx1-71015" >2121</a> <br /></span>
+
+
+</p><p class="theindex"> <span
+class="cmbx-10">S</span>
+<span class="index-item">sanitize&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3049" ><span
+class="cmbx-10">2122</span></a>, <a
+href="glossaries-user.html#dx1-23036" >2123</a>, <a
+href="glossaries-user.html#dx1-26032" >2124</a>, <a
+href="glossaries-user.html#dx1-61015" >2125</a>, <a
+href="glossaries-user.html#dx1-62056" >2126</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">scrwfile </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-23044" >2127</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\SetAcronymLists</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-27024" ><span
+class="cmti-10">2128</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setacronymstyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-70001" ><span
+class="cmti-10">2129</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setglossarypreamble</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-63065" ><span
+class="cmti-10">2130</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setglossarysection</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-24012" ><span
+class="cmti-10">2131</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setglossarystyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-77004" ><span
+class="cmti-10">2132</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setStyleFile</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-33015" ><span
+class="cmti-10">2133</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setupglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-30001" ><span
+class="cmti-10">2134</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">stix </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-66035" >2135</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\subglossentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88062" ><span
+class="cmti-10">2136</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">supertabular </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-25039" >2137</a>, <a
+href="glossaries-user.html#dx1-83015" >2138</a>, <a
+href="glossaries-user.html#dx1-84012" >2139</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">T</span>
+<span class="index-item"><span
+class="cmss-10">tabularx </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-55005" >2140</a>, <a
+href="glossaries-user.html#dx1-55007" >2141</a>, <a
+href="glossaries-user.html#dx1-55009" >2142</a>, <a
+href="glossaries-user.html#dx1-75024" >2143</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">textcase </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-10" >2144</a>, <a
+href="glossaries-user.html#dx1-24027" >2145</a>, <a
+href="glossaries-user.html#dx1-24029" >2146</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">theglossary </span>(environment)&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-88002" ><span
+class="cmti-10">2147</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">tracklang </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-6" >2148</a>, <a
+href="glossaries-user.html#dx1-15001" >2149</a>, <a
+href="glossaries-user.html#dx1-15002" >2150</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">translator </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-14009" >2151</a>, <a
+href="glossaries-user.html#dx1-14013" >2152</a>, <a
+href="glossaries-user.html#dx1-14014" >2153</a>, <a
+href="glossaries-user.html#dx1-14015" >2154</a>, <a
+href="glossaries-user.html#dx1-14020" >2155</a>, <a
+href="glossaries-user.html#dx1-14021" >2156</a>, <a
+href="glossaries-user.html#dx1-14033" >2157</a>, <a
+href="glossaries-user.html#dx1-14035" >2158</a>, <a
+href="glossaries-user.html#dx1-14036" >2159</a>, <a
+href="glossaries-user.html#dx1-14038" >2160</a>, <a
+href="glossaries-user.html#dx1-14042" >2161</a>, <a
+href="glossaries-user.html#dx1-14044" >2162</a>, <a
+href="glossaries-user.html#dx1-14045" >2163</a>, <a
+href="glossaries-user.html#dx1-14048" >2164</a>, <a
+href="glossaries-user.html#dx1-15003" >2165</a>, <a
+href="glossaries-user.html#dx1-15004" >2166</a>, <a
+href="glossaries-user.html#dx1-15005" >2167</a>, <a
+href="glossaries-user.html#dx1-15010" >2168</a>, <a
+href="glossaries-user.html#dx1-23054" >2169</a>, <a
+href="glossaries-user.html#dx1-23055" >2170</a>, <a
+href="glossaries-user.html#dx1-23056" >2171</a>, <a
+href="glossaries-user.html#dx1-23057" >2172</a>, <a
+href="glossaries-user.html#dx1-23069" >2173</a>, <a
+href="glossaries-user.html#dx1-23080" >2174</a>, <a
+href="glossaries-user.html#dx1-68024" >2175</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-user.html#dx1-11" >2176</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">xindy</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-3026" >2177</a>, <a
+href="glossaries-user.html#dx1-3034" >2178</a>, <a
+href="glossaries-user.html#dx1-3039" >2179</a>, <a
+href="glossaries-user.html#dx1-3053" ><span
+class="cmbx-10">2180</span></a>, <a
+href="glossaries-user.html#dx1-4006" >2181</a>, <a
+href="glossaries-user.html#dx1-4007" >2182</a>, <a
+href="glossaries-user.html#dx1-8001" >2183</a>, <a
+href="glossaries-user.html#dx1-8002" >2184</a>, <a
+href="glossaries-user.html#dx1-8003" >2185</a>, <a
+href="glossaries-user.html#dx1-8004" >2186</a>, <a
+href="glossaries-user.html#dx1-8005" >2187</a>, <a
+href="glossaries-user.html#dx1-8006" >2188</a>, <a
+href="glossaries-user.html#dx1-8007" >2189</a>, <a
+href="glossaries-user.html#dx1-8008" >2190</a>, <a
+href="glossaries-user.html#dx1-8009" >2191</a>, <a
+href="glossaries-user.html#dx1-8023" >2192</a>, <a
+href="glossaries-user.html#dx1-8027" >2193</a>, <a
+href="glossaries-user.html#dx1-8028" >2194</a>, <a
+href="glossaries-user.html#dx1-8031" >2195</a>, <a
+href="glossaries-user.html#dx1-8032" >2196</a>, <a
+href="glossaries-user.html#dx1-8036" >2197</a>, <a
+href="glossaries-user.html#dx1-8037" >2198</a>, <a
+href="glossaries-user.html#dx1-8038" >2199</a>, <a
+href="glossaries-user.html#dx1-9004" >2200</a>, <a
+href="glossaries-user.html#dx1-11072" >2201</a>, <a
+href="glossaries-user.html#dx1-11076" >2202</a>, <a
+href="glossaries-user.html#dx1-11082" >2203</a>, <a
+href="glossaries-user.html#dx1-11083" >2204</a>, <a
+href="glossaries-user.html#dx1-11087" >2205</a>, <a
+href="glossaries-user.html#dx1-11088" >2206</a>, <a
+href="glossaries-user.html#dx1-11092" >2207</a>, <a
+href="glossaries-user.html#dx1-11094" >2208</a>, <a
+href="glossaries-user.html#dx1-11096" >2209</a>, <a
+href="glossaries-user.html#dx1-13001" >2210</a>, <a
+href="glossaries-user.html#dx1-13003" >2211</a>, <a
+href="glossaries-user.html#dx1-13007" >2212</a>, <a
+href="glossaries-user.html#dx1-13021" >2213</a>, <a
+href="glossaries-user.html#dx1-13027" >2214</a>, <a
+href="glossaries-user.html#dx1-13030" >2215</a>, <a
+href="glossaries-user.html#dx1-13047" >2216</a>, <a
+href="glossaries-user.html#dx1-14050" >2217</a>, <a
+href="glossaries-user.html#dx1-14054" >2218</a>, <a
+href="glossaries-user.html#dx1-16008" >2219</a>, <a
+href="glossaries-user.html#dx1-16014" >2220</a>, <a
+href="glossaries-user.html#dx1-16017" >2221</a>, <a
+href="glossaries-user.html#dx1-16019" >2222</a>, <a
+href="glossaries-user.html#dx1-16026" >2223</a>, <a
+href="glossaries-user.html#dx1-16028" >2224</a>, <a
+href="glossaries-user.html#dx1-16031" >2225</a>, <a
+href="glossaries-user.html#dx1-16034" >2226</a>, <a
+href="glossaries-user.html#dx1-16037" >2227</a>, <a
+href="glossaries-user.html#dx1-16040" >2228</a>, <a
+href="glossaries-user.html#dx1-16042" >2229</a>, <a
+href="glossaries-user.html#dx1-16049" >2230</a>, <a
+href="glossaries-user.html#dx1-16061" >2231</a>, <a
+href="glossaries-user.html#dx1-16064" >2232</a>, <a
+href="glossaries-user.html#dx1-16067" >2233</a>, <a
+href="glossaries-user.html#dx1-16072" >2234</a>, <a
+href="glossaries-user.html#dx1-16076" >2235</a>, <a
+href="glossaries-user.html#dx1-16081" >2236</a>, <a
+href="glossaries-user.html#dx1-16084" >2237</a>, <a
+href="glossaries-user.html#dx1-17003" >2238</a>, <a
+href="glossaries-user.html#dx1-17011" >2239</a>, <a
+href="glossaries-user.html#dx1-17022" >2240</a>, <a
+href="glossaries-user.html#dx1-17026" >2241</a>, <a
+href="glossaries-user.html#dx1-17032" >2242</a>, <a
+href="glossaries-user.html#dx1-17033" >2243</a>, <a
+href="glossaries-user.html#x1-190001.5.3" >2244</a>, <a
+href="glossaries-user.html#dx1-19001" >2245</a>, <a
+href="glossaries-user.html#dx1-19002" >2246</a>, <a
+href="glossaries-user.html#dx1-19004" >2247</a>, <a
+href="glossaries-user.html#dx1-19006" >2248</a>, <a
+href="glossaries-user.html#dx1-19009" >2249</a>, <a
+href="glossaries-user.html#dx1-19011" >2250</a>, <a
+href="glossaries-user.html#dx1-19022" >2251</a>, <a
+href="glossaries-user.html#dx1-19024" >2252</a>, <a
+href="glossaries-user.html#dx1-21001" >2253</a>, <a
+href="glossaries-user.html#dx1-21007" >2254</a>, <a
+href="glossaries-user.html#dx1-21010" >2255</a>, <a
+href="glossaries-user.html#dx1-23047" >2256</a>, <a
+href="glossaries-user.html#dx1-23050" >2257</a>, <a
+href="glossaries-user.html#dx1-25009" >2258</a>, <a
+href="glossaries-user.html#dx1-25064" >2259</a>, <a
+href="glossaries-user.html#dx1-25066" >2260</a>, <a
+href="glossaries-user.html#dx1-25071" >2261</a>, <a
+href="glossaries-user.html#dx1-25074" >2262</a>, <a
+href="glossaries-user.html#dx1-26030" >2263</a>, <a
+href="glossaries-user.html#dx1-26060" >2264</a>, <a
+href="glossaries-user.html#dx1-26064" >2265</a>, <a
+href="glossaries-user.html#dx1-26066" >2266</a>, <a
+href="glossaries-user.html#dx1-26068" >2267</a>, <a
+href="glossaries-user.html#dx1-26071" >2268</a>, <a
+href="glossaries-user.html#dx1-26080" >2269</a>, <a
+href="glossaries-user.html#dx1-26084" >2270</a>, <a
+href="glossaries-user.html#dx1-26090" >2271</a>, <a
+href="glossaries-user.html#dx1-26093" >2272</a>, <a
+href="glossaries-user.html#dx1-26094" >2273</a>, <a
+href="glossaries-user.html#dx1-26095" >2274</a>, <a
+href="glossaries-user.html#dx1-33004" >2275</a>, <a
+href="glossaries-user.html#dx1-33006" >2276</a>, <a
+href="glossaries-user.html#dx1-34090" >2277</a>, <a
+href="glossaries-user.html#dx1-34092" >2278</a>, <a
+href="glossaries-user.html#dx1-34145" >2279</a>, <a
+href="glossaries-user.html#dx1-49007" >2280</a>, <a
+href="glossaries-user.html#dx1-50012" >2281</a>, <a
+href="glossaries-user.html#dx1-50013" >2282</a>, <a
+href="glossaries-user.html#dx1-51003" >2283</a>, <a
+href="glossaries-user.html#dx1-51006" >2284</a>, <a
+href="glossaries-user.html#dx1-51012" >2285</a>, <a
+href="glossaries-user.html#dx1-51013" >2286</a>, <a
+href="glossaries-user.html#dx1-51019" >2287</a>, <a
+href="glossaries-user.html#dx1-51020" >2288</a>, <a
+href="glossaries-user.html#dx1-51022" >2289</a>, <a
+href="glossaries-user.html#dx1-52002" >2290</a>, <a
+href="glossaries-user.html#dx1-52003" >2291</a>, <a
+href="glossaries-user.html#dx1-52008" >2292</a>, <a
+href="glossaries-user.html#dx1-52011" >2293</a>, <a
+href="glossaries-user.html#dx1-53007" >2294</a>, <a
+href="glossaries-user.html#dx1-54006" >2295</a>, <a
+href="glossaries-user.html#dx1-54048" >2296</a>, <a
+href="glossaries-user.html#dx1-54052" >2297</a>, <a
+href="glossaries-user.html#dx1-54070" >2298</a>, <a
+href="glossaries-user.html#dx1-62065" >2299</a>, <a
+href="glossaries-user.html#dx1-63008" >2300</a>, <a
+href="glossaries-user.html#dx1-63010" >2301</a>, <a
+href="glossaries-user.html#dx1-63041" >2302</a>, <a
+href="glossaries-user.html#dx1-64001" >2303</a>, <a
+href="glossaries-user.html#dx1-64003" >2304</a>, <a
+href="glossaries-user.html#dx1-64004" >2305</a>, <a
+href="glossaries-user.html#dx1-64006" >2306</a>, <a
+href="glossaries-user.html#dx1-64011" >2307</a>, <a
+href="glossaries-user.html#dx1-64015" >2308</a>, <a
+href="glossaries-user.html#dx1-64016" >2309</a>, <a
+href="glossaries-user.html#dx1-64018" >2310</a>, <a
+href="glossaries-user.html#dx1-64019" >2311</a>, <a
+href="glossaries-user.html#dx1-64020" >2312</a>, <a
+href="glossaries-user.html#dx1-64021" >2313</a>, <a
+href="glossaries-user.html#dx1-65001" >2314</a>, <a
+href="glossaries-user.html#dx1-65002" >2315</a>, <a
+href="glossaries-user.html#dx1-65006" >2316</a>, <a
+href="glossaries-user.html#dx1-65011" >2317</a>, <a
+href="glossaries-user.html#dx1-65014" >2318</a>, <a
+href="glossaries-user.html#dx1-66003" >2319</a>, <a
+href="glossaries-user.html#dx1-66013" >2320</a>, <a
+href="glossaries-user.html#dx1-66019" >2321</a>, <a
+href="glossaries-user.html#dx1-66025" >2322</a>, <a
+href="glossaries-user.html#dx1-66037" >2323</a>, <a
+href="glossaries-user.html#dx1-66044" >2324</a>, <a
+href="glossaries-user.html#dx1-66064" >2325</a>, <a
+href="glossaries-user.html#dx1-67002" >2326</a>, <a
+href="glossaries-user.html#dx1-67003" >2327</a>, <a
+href="glossaries-user.html#dx1-68004" >2328</a>, <a
+href="glossaries-user.html#dx1-85032" >2329</a>, <a
+href="glossaries-user.html#dx1-88025" >2330</a>, <a
+href="glossaries-user.html#dx1-88029" >2331</a>, <a
+href="glossaries-user.html#dx1-9006" >2332</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-C</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-8025" >2333</a>, <a
+href="glossaries-user.html#dx1-13029" >2334</a>, <a
+href="glossaries-user.html#dx1-16091" >2335</a>, <a
+href="glossaries-user.html#dx1-16095" >2336</a>, <a
+href="glossaries-user.html#dx1-65017" >2337</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-I</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-19007" >2338</a>, <a
+href="glossaries-user.html#dx1-19008" >2339</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-L</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-8024" >2340</a>, <a
+href="glossaries-user.html#dx1-16090" >2341</a>, <a
+href="glossaries-user.html#dx1-16093" >2342</a>, <a
+href="glossaries-user.html#dx1-65016" >2343</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">-M</span>&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-16087" >2344</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">xkeyval </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-9" >2345</a>, <a
+href="glossaries-user.html#dx1-11005" >2346</a>, <a
+href="glossaries-user.html#dx1-58030" >2347</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">xspace </span>package&#x00A0;&#x00A0;<a
+href="glossaries-user.html#dx1-74014" >2348</a>, <a
+href="glossaries-user.html#dx1-74015" >2349</a>, <a
+href="glossaries-user.html#dx1-74017" >2350</a>, <a
+href="glossaries-user.html#dx1-74019" >2351</a>, <a
+href="glossaries-user.html#dx1-74021" >2352</a>, <a
+href="glossaries-user.html#dx1-74023" >2353</a>, <a
+href="glossaries-user.html#dx1-74024" >2354</a> <br /></span>
+</p></div>
+
+
+ <div class="footnotes"><!--l. 641--><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">That is, if the term has been referenced using any of the commands described in </span><a
+href="#sec:glslink"><span
+class="tcrm-0800">&sect;</span><span
+class="cmr-8">6 </span></a><a
+href="#sec:glslink"><span
+class="cmr-8">Links to Glossary</span>
+<span
+class="cmr-8">Entries</span><!--tex4ht:ref: sec:glslink --></a> <span
+class="cmr-8">and </span><a
+href="#sec:glsadd"><span
+class="tcrm-0800">&sect;</span><span
+class="cmr-8">7 </span></a><a
+href="#sec:glsadd"><span
+class="cmr-8">Adding an Entry to the Glossary Without Generating Text</span><!--tex4ht:ref: sec:glsadd --></a> <span
+class="cmr-8">or via </span><span
+class="cmtt-8">\glssee</span><a
+ id="dx1-4002"></a> <span
+class="cmr-8">(or the </span><span
+class="cmss-8">see</span><a
+ id="dx1-4003"></a> <span
+class="cmr-8">key) or</span>
+<span
+class="cmr-8">commands such as </span><span
+class="cmtt-8">\acrshort</span><a
+ id="dx1-4004"></a><span
+class="cmr-8">.</span></p>
+<!--l. 1253--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x1-bk" id="fn2x1"><sup class="textsuperscript">1.2</sup></a></span><span
+class="cmr-8">Except for Klingon, which is supported by </span><a
+href="#glo:xindy"><span
+class="cmtt-8">xindy</span><a
+ id="dx1-9006"></a></a><span
+class="cmr-8">, but not by the CLDR.</span></p>
+<!--l. 1362--><p class="indent" > <span class="footnote-mark"><a
+href="#fn3x1-bk" id="fn3x1"><sup class="textsuperscript">1.3</sup></a></span><span
+class="cmr-8">Note that although I&#8217;ve written </span><span
+class="cmtt-8">latex </span><span
+class="cmr-8">in this section, it&#8217;s better to use </span><span
+class="cmtt-8">pdflatex</span><span
+class="cmr-8">, where possible, for</span>
+<span
+class="cmr-8">the reasons given </span><a
+href="#pdflatexnote"><span
+class="cmr-8">earlier</span></a><span
+class="cmr-8">.</span></p>
+<!--l. 2076--><p class="indent" > <span class="footnote-mark"><a
+href="#fn4x1-bk" id="fn4x1"><sup class="textsuperscript">1.4</sup></a></span><span
+class="cmr-8">deprecated, use </span><span
+class="cmss-8">babel </span><span
+class="cmr-8">instead</span></p>
+<!--l. 2639--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn5x1-bk" id="fn5x1"><sup class="textsuperscript">1.5</sup></a></span><span
+class="cmr-8">Added to version </span><a
+href="#glo:makeglossaries"><span
+class="cmtt-8">makeglossaries</span><a
+ id="dx1-16046"></a></a> <span
+class="cmr-8">2.18.</span></p>
+<!--l. 2683--><p class="indent" > <span class="footnote-mark"><a
+href="#fn6x1-bk" id="fn6x1"><sup class="textsuperscript">1.6</sup></a></span><span
+class="cmr-8">As from v3.01 </span><span
+class="cmtt-8">\gls</span><a
+ id="dx1-16069"></a> <span
+class="cmr-8">is no longer fragile and doesn&#8217;t need protecting.</span></p>
+<!--l. 2785--><p class="indent" > <span class="footnote-mark"><a
+href="#fn7x1-bk" id="fn7x1"><sup class="textsuperscript">1.7</sup></a></span><span
+class="cmr-8">The batch file </span><span
+class="cmtt-8">makeglossaries.bat </span><span
+class="cmr-8">has been removed since the </span><span class="TEX"><span
+class="cmr-8">T</span><span
+class="E"><span
+class="cmr-8">E</span></span><span
+class="cmr-8">X</span></span><span
+class="cmr-8">&#x00A0;distributions for Windows</span>
+<span
+class="cmr-8">provide </span><span
+class="cmtt-8">makeglossaries.exe</span><span
+class="cmr-8">.</span></p>
+<!--l. 3427--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn1x2-bk" id="fn1x2"><sup class="textsuperscript">2.1</sup></a></span><span
+class="cmr-8">bug fix in v4.16 has corrected the code to ensure this.</span></p>
+<!--l. 3523--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn2x2-bk" id="fn2x2"><sup class="textsuperscript">2.2</sup></a></span><span
+class="cmr-8">unless </span><span
+class="cmss-8">memoir</span><a
+ id="dx1-24015"></a> <span
+class="cmr-8">is loaded, which case it uses </span><span
+class="cmtt-8">\markboth</span><a
+ id="dx1-24016"></a></p>
+<!--l. 3553--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn3x2-bk" id="fn3x2"><sup class="textsuperscript">2.3</sup></a></span><span
+class="cmr-8">Actually it uses </span><span
+class="cmtt-8">\mfirstucMakeUppercase</span><a
+ id="dx1-24026"></a> <span
+class="cmr-8">which is set to </span><span
+class="cmss-8">textcase</span><a
+ id="dx1-24027"></a><span
+class="cmr-8">&#8217;s </span><span
+class="cmtt-8">\MakeTextUppercase </span><span
+class="cmr-8">by the </span><span
+class="cmss-8">glossaries</span>
+<span
+class="cmr-8">package. This makes it consistent with </span><span
+class="cmtt-8">\makefirstuc</span><a
+ id="dx1-24028"></a><span
+class="cmr-8">. (The </span><span
+class="cmss-8">textcase</span><a
+ id="dx1-24029"></a> <span
+class="cmr-8">package is automatically loaded by</span>
+<span
+class="cmss-8">glossaries</span><span
+class="cmr-8">.)</span></p>
+<!--l. 4175--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn4x2-bk" id="fn4x2"><sup class="textsuperscript">2.4</sup></a></span><span
+class="cmr-8">Actually it sets </span><span
+class="cmtt-8">\acronymtype</span><a
+ id="dx1-27009"></a> <span
+class="cmr-8">to </span><span
+class="cmtt-8">\glsdefaulttype</span><a
+ id="dx1-27010"></a> <span
+class="cmr-8">if the </span><span
+class="cmss-8">acronym</span><a
+ id="dx1-27011"></a> <span
+class="cmr-8">package option is not used, but</span>
+<span
+class="cmtt-8">\glsdefaulttype</span><a
+ id="dx1-27012"></a> <span
+class="cmr-8">usually has the value </span><span
+class="cmtt-8">main </span><span
+class="cmr-8">unless the </span><span
+class="cmss-8">nomain</span><a
+ id="dx1-27013"></a> <span
+class="cmr-8">option has been used.</span></p>
+<!--l. 5751--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x4-bk" id="fn1x4"><sup class="textsuperscript">4.1</sup></a></span><span
+class="cmr-8">This is because </span><span
+class="cmtt-8">\acronymtype</span><a
+ id="dx1-44022"></a> <span
+class="cmr-8">is set to </span><span
+class="cmtt-8">\glsdefaulttype</span><a
+ id="dx1-44023"></a> <span
+class="cmr-8">if the </span><span
+class="cmss-8">acronym</span><a
+ id="dx1-44024"></a> <span
+class="cmr-8">package option is not</span>
+<span
+class="cmr-8">used.</span></p>
+<!--l. 6626--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn1x6-bk" id="fn1x6"><sup class="textsuperscript">6.1</sup></a></span><span
+class="cmr-8">See also &#8220;Displaying the glossary&#8221; in the documented code, </span><span
+class="cmtt-8">glossaries-code.pdf</span><span
+class="cmr-8">.</span></p>
+<!--l. 6738--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn2x6-bk" id="fn2x6"><sup class="textsuperscript">6.2</sup></a></span><span
+class="cmr-8">I&#8217;ve used </span><span
+class="cmtt-8">\MakeUppercase </span><span
+class="cmr-8">in all the examples for clarity, but it will actually use </span><span
+class="cmtt-8">\mfirstucMakeUppercase</span><span
+class="cmr-8">.</span></p>
+<!--l. 7181--><p class="indent" > <span class="footnote-mark"><a
+href="#fn3x6-bk" id="fn3x6"><sup class="textsuperscript">6.3</sup></a></span><span
+class="cmtt-8">\glsdisplayfirst</span><a
+ id="dx1-57003"></a> <span
+class="cmr-8">and </span><span
+class="cmtt-8">\glsdisplay</span><a
+ id="dx1-57004"></a> <span
+class="cmr-8">are now deprecated. Backwards compatibility should be preserved</span>
+<span
+class="cmr-8">but you may need to use the </span><span
+class="cmss-8">compatible-3.07</span><a
+ id="dx1-57005"></a> <span
+class="cmr-8">option</span></p>
+<!--l. 7816--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x8-bk" id="fn1x8"><sup class="textsuperscript">8.1</sup></a></span><a
+href="#glo:makeindex"><span
+class="cmtt-8">makeindex</span><a
+ id="dx1-61004"></a></a> <span
+class="cmr-8">will always assign a location number, even if it&#8217;s not needed, so it needs to be</span>
+<span
+class="cmr-8">discarded.</span></p><!--l. 7821--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x8-bk" id="fn2x8"><sup class="textsuperscript">8.2</sup></a></span><span
+class="cmr-8">If you redefine </span><span
+class="cmtt-8">\glsseeformat</span><span
+class="cmr-8">, keep the default value of the optional argument as </span><span
+class="cmtt-8">\seename</span><a
+ id="dx1-61006"></a> <span
+class="cmr-8">as</span>
+<span
+class="cmr-8">both </span><span
+class="cmss-8">see</span><a
+ id="dx1-61007"></a> <span
+class="cmr-8">and </span><span
+class="cmtt-8">\glssee </span><span
+class="cmr-8">explicitly write </span><span
+class="cmtt-8">[\seename] </span><span
+class="cmr-8">in the output file if no optional argument is</span>
+<span
+class="cmr-8">given.</span></p>
+<!--l. 7846--><p class="indent" > <span class="footnote-mark"><a
+href="#fn3x8-bk" id="fn3x8"><sup class="textsuperscript">8.3</sup></a></span><span
+class="cmr-8">In versions before 3.0, </span><span
+class="cmtt-8">\glsentryname </span><span
+class="cmr-8">was used, but this could cause problems when the </span><span
+class="cmss-8">name</span><a
+ id="dx1-61014"></a> <span
+class="cmr-8">key was</span>
+<a
+href="#glo:sanitize"><span
+class="cmr-8">sanitized</span><a
+ id="dx1-61015"></a></a><span
+class="cmr-8">.</span></p><!--l. 8138--><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">versions before 3.0 used </span><span
+class="cmtt-8">\glsentryname</span><a
+ id="dx1-62054"></a> <span
+class="cmr-8">as the default, but this could cause problems when </span><span
+class="cmss-8">name</span><a
+ id="dx1-62055"></a> <span
+class="cmr-8">had</span>
+<span
+class="cmr-8">been </span><a
+href="#glo:sanitize"><span
+class="cmr-8">sanitized</span><a
+ id="dx1-62056"></a></a><span
+class="cmr-8">.</span></p><!--l. 8392--><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">you can&#8217;t use the </span><span
+class="cmss-8">longheaderborder</span><a
+ id="dx1-63071"></a> <span
+class="cmr-8">style for this example as you can&#8217;t use the </span><span
+class="cmss-8">longtable</span><a
+ id="dx1-63072"></a><a
+ id="dx1-63073"></a> <span
+class="cmr-8">environment in</span>
+<span
+class="cmr-8">two column mode.</span></p><!--l. 8874--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x11-bk" id="fn1x11"><sup class="textsuperscript">11.1</sup></a></span><span
+class="cmr-8">see </span><span
+class="cmtt-8">\glsSetCompositor</span><a
+ id="dx1-66053"></a> <span
+class="cmr-8">described in </span><a
+href="#sec:setup"><span
+class="tcrm-0800">&sect;</span><span
+class="cmr-8">3 </span></a><a
+href="#sec:setup"><span
+class="cmr-8">Setting Up</span><!--tex4ht:ref: sec:setup --></a></p>
+<!--l. 8879--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x11-bk" id="fn2x11"><sup class="textsuperscript">11.2</sup></a></span><span
+class="cmr-8">see </span><span
+class="cmtt-8">\glsSetAlphaCompositor</span><a
+ id="dx1-66055"></a> <span
+class="cmr-8">described in </span><a
+href="#sec:setup"><span
+class="tcrm-0800">&sect;</span><span
+class="cmr-8">3 </span></a><a
+href="#sec:setup"><span
+class="cmr-8">Setting Up</span><!--tex4ht:ref: sec:setup --></a></p>
+<!--l. 8883--><p class="indent" > <span class="footnote-mark"><a
+href="#fn3x11-bk" id="fn3x11"><sup class="textsuperscript">11.3</sup></a></span><span
+class="cmr-8">With </span><a
+href="#glo:glossaries-extra"><span
+class="cmss-8">glossaries-extra</span></a> <span
+class="cmtt-8">seealso </span><span
+class="cmr-8">is appended to the end of the list.</span></p>
+<!--l. 10432--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x13-bk" id="fn1x13"><sup class="textsuperscript">13.1</sup></a></span><span
+class="cmr-8">as from version 1.18</span></p><!--l. 10461--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x13-bk" id="fn2x13"><sup class="textsuperscript">13.2</sup></a></span><span
+class="cmr-8">See David Carlisle&#8217;sexplanation in </span><a
+href="http://tex.stackexchange.com/questions/86565/drawbacks-of-xspace" class="url" ><span
+class="cmtt-8">http://tex.stackexchange.com/questions/86565/drawbacks-of-xspace</span></a></p>
+<!--l. 10976--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x15-bk" id="fn1x15"><sup class="textsuperscript">15.1</sup></a></span><span
+class="cmr-8">These lengths will not be available if you use both the </span><span
+class="cmss-8">nolong</span><a
+ id="dx1-78019"></a> <span
+class="cmr-8">and </span><span
+class="cmss-8">nosuper</span><a
+ id="dx1-78020"></a> <span
+class="cmr-8">package options or if you</span>
+<span
+class="cmr-8">use the </span><span
+class="cmss-8">nostyles</span><a
+ id="dx1-78021"></a> <span
+class="cmr-8">package option unless you explicitly load the relevant package.</span></p>
+<!--l. 11135--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn2x15-bk" id="fn2x15"><sup class="textsuperscript">15.2</sup></a></span><span
+class="cmr-8">This style was supplied by Axel</span><span
+class="cmr-8">&#x00A0;Menzel.</span></p>
+<!--l. 11432--><p class="indent" > <span class="footnote-mark"><a
+href="#fn3x15-bk" id="fn3x15"><sup class="textsuperscript">15.3</sup></a></span><span
+class="cmr-8">e.g.</span><span
+class="cmr-8">&#x00A0;with the </span><span
+class="cmss-8">flowfram</span><a
+ id="dx1-83011"></a> <span
+class="cmr-8">package.</span></p>
+<!--l. 12770--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x17-bk" id="fn1x17"><sup class="textsuperscript">17.1</sup></a></span><span
+class="cmr-8">Single letter words, such as &#8220;a&#8221; and &#8220;I&#8221; should typically not appear at the end of a line, hence the</span>
+<span
+class="cmr-8">non-breakable space after &#8220;a&#8221; in the </span><span
+class="cmss-8">prefix</span><a
+ id="dx1-93016"></a> <span
+class="cmr-8">field.</span></p>
+<!--l. 12928--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x17-bk" id="fn2x17"><sup class="textsuperscript">17.2</sup></a></span><span
+class="cmr-8">The earlier caveats about initial non-Latin characters apply.</span></p> </div>
+
+</body></html>
+
+
+
+
diff --git a/macros/latex/contrib/glossaries/glossaries-user.pdf b/macros/latex/contrib/glossaries/glossaries-user.pdf
new file mode 100644
index 0000000000..7f160c9fb7
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossaries-user.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/glossaries-user.tex b/macros/latex/contrib/glossaries/glossaries-user.tex
new file mode 100644
index 0000000000..698933ac27
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossaries-user.tex
@@ -0,0 +1,13059 @@
+\documentclass[report,inlinetitle,widecs]{nlctdoc}
+
+\usepackage[inner=0.5in,includemp]{geometry}
+
+\usepackage{array}
+\usepackage{alltt}
+\usepackage{pifont}
+\usepackage{textcomp}
+\usepackage{amssymb}
+\ifpdf
+ \usepackage{lmodern}
+ \usepackage{mathpazo}
+ \usepackage[scaled=.88]{helvet}
+ \usepackage{courier}
+ \usepackage{metalogo}
+\else
+ \newcommand{\grimace}{{\fontencoding {U}\fontfamily{futs}\selectfont \char77}}
+ \providecommand{\XeLaTeX}{XeLaTeX}
+ \providecommand{\XeTeX}{XeTeX}
+\fi
+\usepackage[colorlinks,
+ bookmarks,
+ linkcolor=blue,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={User Manual for glossaries.sty},
+ pdfkeywords={LaTeX,package,glossary,acronyms}]{hyperref}
+\usepackage{xr-hyper}
+\usepackage[
+ xindy,
+ nonumberlist,
+ toc,
+ nopostdot,
+ nogroupskip,
+ style=altlist
+]{glossaries}
+\usepackage{glossary-inline}
+
+\pagestyle{headings}
+
+\glsnoexpandfields
+
+\renewcommand*{\glsseeformat}[3][\seename]{%
+ (\xmakefirstuc{#1} \glsseelist{#2}.)%
+}
+
+\renewcommand*{\glossarypreamble}{%
+\emph{This glossary style was setup using:}
+\begin{ttfamily}
+\begin{tabbing}
+\cs{usepackage}[\=xindy,\\
+\+\>nonumberlist,\\
+ toc,\\
+ nopostdot,\\
+ style=altlist,\\
+ nogroupskip]\{glossaries\}
+\end{tabbing}
+\end{ttfamily}
+}
+
+\ifpdf
+\else
+ % Need an extra line break in the html version
+ % (Don't have time to fiddle with cfg files!)
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}]\mbox{}\newline
+ \glossentrydesc{#1}\glspostdescription\space #2\newline}%
+\fi
+
+\makeglossaries
+
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}}
+\newcommand*{\itermdef}[1]{\index{#1|htextbf}}
+
+\newcommand{\itempar}[1]{\item[{#1}]\mbox{}\par}
+
+\newcommand{\pkgoptdef}[1]{\hypertarget{pkgopt:#1}{\pkgopt{#1}}}
+
+\newcommand{\glslike}{\hyperref[sec:gls-like]{\cs{gls}-like}}
+\newcommand{\glstextlike}{\hyperref[sec:glstext-like]{\cs{glstext}-like}}
+
+\IndexPrologue{\chapter*{\indexname}
+ \addcontentsline{toc}{chapter}{\indexname}%
+ \markboth{\indexname}{\indexname}}
+
+\longnewglossaryentry{indexingapp}%
+{
+ name={Indexing application},
+ text={indexing application}
+}%
+{%
+ An application (piece of software) separate from
+ \TeX/\LaTeX\ that collates and sorts information that has an
+ associated page reference. Generally the information is an index
+ entry but in this case the information is a glossary entry.
+ There are two main indexing applications that are used with \TeX:
+ \gls{makeindex} and \gls{xindy}. These are both
+ \gls{cli} applications.
+}
+
+\longnewglossaryentry{cli}
+{
+ name={Command Line Interface (CLI)},
+ first={command line interface (CLI)},
+ text={CLI}
+}
+{%
+ An application that doesn't have a graphical user
+ interface. That is, an application that doesn't have any windows,
+ buttons or menus and can be run in
+ \href{http://www.dickimaw-books.com/latex/novices/html/terminal.html}{a command
+ prompt or terminal}.
+}
+
+\longnewglossaryentry{xindy}{%
+ name={\appfmt{xindy}\index{xindy=\appfmt{xindy}|htextbf}},
+ sort={xindy},
+ text={\appfmt{xindy}\iapp{xindy}}
+}%
+{%
+ A flexible \gls{indexingapp} with multilingual
+ support written in Perl.
+}
+
+\newglossaryentry{makeindex}{%
+name={\appfmt{makeindex}\index{makeindex=\appfmt{makeindex}|htextbf}},%
+sort={makeindex},%
+text={\appfmt{makeindex}\iapp{makeindex}},%
+description={An \gls{indexingapp}.}
+}
+
+\newglossaryentry{bib2gls}{%
+name={\appfmt{bib2gls}\index{bib2gls=\appfmt{bib2gls}|htextbf}},%
+sort={bib2gls},%
+text={\appfmt{bib2gls}\iapp{bib2gls}},%
+description={An \gls{indexingapp} that combines two functions in
+one: (1) fetches entry definition from a \texttt{.bib} file
+based on information provided in the \texttt{.aux} file (similar
+to \appfmt{bibtex}); (2) hierarchically sorts and collates location
+lists (similar to \appfmt{makeindex} and \appfmt{xindy}).
+This application is designed for use with \styfmt{glossaries-extra}
+and can't be used with just the base \styfmt{glossaries} package.}
+}
+
+\newglossaryentry{makeglossaries}{%
+name={\appfmt{makeglossaries}\index{makeglossaries=\appfmt{makeglossaries}|htextbf}},%
+sort={makeglossaries},%
+text={\appfmt{makeglossaries}\iapp{makeglossaries}},%
+description={A custom designed Perl script interface
+to \gls{xindy} and \gls{makeindex} provided with the \styfmt{glossaries}
+package. \TeX\ distributions on Windows convert the original
+\texttt{makeglossaries} script into an executable
+\texttt{makeglossaries.exe} for convenience (but Perl is still
+required).}
+}
+
+\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 actually distributed 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.}
+}
+
+\longnewglossaryentry{makeglossariesgui}{%
+name={\appfmt{makeglossariesgui}\index{makeglossariesgui=\appfmt{makeglossariesgui}|htextbf}},%
+sort={makeglossariesgui},%
+text={\appfmt{makeglossariesgui}\iapp{makeglossariesgui}}%
+}%
+{%
+ A Java GUI alternative to \gls{makeglossaries} that
+ also provides diagnostic tools. Available separately on
+ \href{http://ctan.org/pkg/makeglossariesgui}{CTAN}.
+}
+
+\newglossaryentry{numberlist}{%
+name={Number list\itermdef{number list}},%
+sort={number list},%
+text={number list\iterm{number list}},%
+description={A list of \glslink{entrylocation}{entry locations} (also
+called a location list). The number list can be suppressed using the
+\pkgopt{nonumberlist} package option.}
+}
+
+\newglossaryentry{entrylocation}{%
+name={Entry location\itermdef{entry location}},%
+sort={entry location},%
+text={entry location\iterm{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},%
+text={location list},
+sort={location list},%
+description={A list of \glslink{entrylocation}{entry locations}.
+See \gls{numberlist}.}%
+}
+
+\newglossaryentry{linktext}{%
+name={Link text\itermdef{link text}},
+sort={link text},%
+text={link text\iterm{link text}},
+description={The text produced by commands such as \ics{gls}. It may
+or may not be a hyperlink to the glossary.}
+}
+
+\let\glsd\glsuseri
+\let\glsation\glsuserii
+
+\longnewglossaryentry{firstuse}{%
+name={First use\ifirstuse},
+sort={first use},%
+text={first use},%
+user1={first used}}
+{%
+ 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}.
+ \glsseeformat{firstuseflag,firstusetext}{}
+}
+
+\longnewglossaryentry{firstuseflag}{%
+name={First use flag\ifirstuseflag},
+sort={first use flag},%
+text={first use flag}%
+}
+{%
+ A conditional that determines whether or not the entry
+ has been used according to the rules of \gls{firstuse}. Commands
+ to unset or reset this conditional are described in
+ \sectionref{sec:glsunset}.
+}
+
+\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} or by \ics{defglsentry}.)}%
+}
+
+\longnewglossaryentry{sanitize}{%
+name={Sanitize\itermdef{sanitize}},%
+sort={sanitize},
+text={sanitize\iterm{sanitize}},%
+user1={sanitized\protect\iterm{sanitize}},%
+user2={sanitization\protect\iterm{sanitize}}%
+}%
+{%
+ Converts command names into character sequences. That is, a command called,
+ say, \cs{foo}, is converted into the sequence of characters:
+ \cs{}, \texttt{f}, \texttt{o}, \texttt{o}. Depending on the font,
+ the backslash character may appear as a dash when used in the
+ main document text, so \cs{foo} will appear as: ---foo.
+
+ Earlier versions of \styfmt{glossaries} used this technique to write
+ information to the files used by the indexing applications to
+ prevent problems caused by fragile commands. Now, this is only used
+ for the \gloskey{sort} key.
+}
+
+\newglossaryentry{latinchar}{%
+ name={Latin Character\itermdef{Latin character}},
+ text={Latin character\iterm{Latin character}},
+ sort={Latin character},
+ description={One of the letters \texttt{a}, \ldots, \texttt{z},
+ \texttt{A}, \ldots, \texttt{Z}\@.
+ See also \gls{exlatinchar}.}
+}
+
+\newglossaryentry{exlatinchar}{%
+ name={Extended Latin Character\itermdef{extended Latin character}},
+ text={extended Latin character\iterm{extended Latin character}},
+ sort={extended Latin character},
+ description={A character that's created by combining \glspl{latinchar}
+ to form ligatures (e.g.\ \ae) or by applying diacritical marks
+ to a~\gls*{latinchar} or characters (e.g.\ \'a or \o).
+ See also \gls{nonlatinchar}.}
+}
+
+\newglossaryentry{latexexlatinchar}{%
+ name={Standard \LaTeX\ Extended Latin Character\itermdef{standard
+\LaTeX\ extended Latin character}},
+ text={standard \LaTeX\ extended Latin character\iterm{standard
+\LaTeX\ extended Latin character}},
+ sort={standard LaTeX extended Latin character},
+ description={An \gls{exlatinchar} that can be created by a~core
+\LaTeX\ command, such as \cs{o} (\o) or \cs{'}\texttt{e} (\'e).
+ That is, the character can be produced without the need to load
+ a~particular package.}
+}
+
+\newglossaryentry{nonlatinchar}{%
+ name={Non-Latin Character\itermdef{non-Latin character}},
+ text={non-Latin character\iterm{non-Latin character}},
+ sort={non-Latin character},
+ description={An \gls{exlatinchar} or a~character that isn't
+ a~\gls{latinchar}.}
+}
+
+\newglossaryentry{latinalph}{%
+ name={Latin Alphabet\itermdef{Latin alphabet}},
+ text={Latin alphabet\iterm{Latin alphabet}},
+ sort={Latin alphabet},
+ description={The alphabet consisting of \glspl{latinchar}.
+ See also \gls{exlatinalph}.}
+}
+
+\newglossaryentry{exlatinalph}{%
+ name={Extended Latin Alphabet\itermdef{Extended Latin Alphabet}},
+ text={extended Latin alphabet},
+ sort={extended Latin alphabet},
+ description={An alphabet consisting of \glspl{latinchar}
+ and \glspl{exlatinchar}.}
+}
+
+\newglossaryentry{nonlatinalph}{%
+ name={Non-Latin Alphabet\itermdef{Non-Latin Alphabet}},
+ text={non-Latin alphabet},
+ sort={non-Latin alphabet},
+ description={An alphabet consisting of \glspl{nonlatinchar}.}
+}
+
+\newglossaryentry{glossaries-extra}{%
+ name={\styfmt{glossaries-extra}},
+ sort={glossaries-extra},
+ description={A separate package that extends the
+ \styfmt{glossaries} package, providing new features or improving
+ existing features. If you want to use \styfmt{glossaries-extra},
+ you must have both the \styfmt{glossaries} package and the
+ \styfmt{glossaries-extra} package installed.}
+}
+
+\ifpdf
+\externaldocument{glossaries-code}
+\fi
+
+\doxitem{Option}{option}{package options}
+\doxitem{GlsKey}{key}{glossary keys}
+\doxitem{Style}{style}{glossary styles}
+\doxitem{Counter}{counter}{glossary counters}
+
+\setcounter{IndexColumns}{2}
+
+\newcommand*{\tick}{\ding{51}}
+
+\newcommand*{\yes}{\ding{52}}
+\newcommand*{\no}{\ding{56}}
+
+\newcommand*{\proyes}{\textcolor{green}{\yes}}
+\newcommand*{\prono}{\textcolor{red}{\no}}
+
+\newcommand*{\conyes}{\textcolor{red}{\yes}}
+\newcommand*{\conno}{\textcolor{green}{\no}}
+
+\makeatletter
+\newcommand{\fnsymmark}[1]{#1}
+\newcommand*{\fnsym}[1]{\textsuperscript{\fnsymmark{%
+ \ifcase#1\or \textasteriskcentered \or \textdagger
+ \or \textdaggerdbl \or \textsection
+ \or $\lozenge$ \or \textparagraph
+ \or \#\or {\fontfamily{cmr}\selectfont\textreferencemark}%
+ \or \@nlctdoc@if@usingtexht{\HCode{&\#x2051;}}{\shortstack{*\\[-1.5ex]*}}%
+ \or $\star$
+ \or \ding{94}%
+ \else
+ \number#1
+ \fi
+}}}%
+\newcommand*{\optionlabel}[1]{%
+ \@glstarget{option#1}{Option~#1}}
+\makeatother
+
+\newcounter{option}
+\newcommand{\optionsec}[2][\opttitle]{%
+ \def\opttitle{\appfmt{#2}}%
+ \refstepcounter{option}%
+ \pdfbookmark[2]{Option~\theoption\space (#2)}{option\theoption}%
+ \subsection*{\protect\optionlabel{\theoption} (#1)}%
+}
+
+\newcommand*{\opt}[1]{\hyperlink{option#1}{Option~#1}}
+\newcommand*{\optsor}[2]{Options~\hyperlink{option#1}{#1}
+or~\hyperlink{option#2}{#2}}
+\newcommand*{\optsand}[2]{Options~\hyperlink{option#1}{#1}
+and~\hyperlink{option#2}{#2}}
+
+
+\newcommand*{\ifirstuse}{\iterm{first use}}
+\newcommand*{\ifirstuseflag}{\iterm{first use>flag}}
+\newcommand*{\ifirstusetext}{\iterm{first use>text}}
+
+\newcommand*{\firstuse}{\gls{firstuse}}
+\newcommand*{\firstuseflag}{\gls{firstuseflag}}
+\newcommand*{\firstusetext}{\gls{firstusetext}}
+
+
+\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*{\mkidxopt}[1]{\texttt{-#1}\index{makeindex=\appfmt{makeindex}>#1=\texttt{-#1}|hyperpage}}
+
+\newcommand*{\xdyopt}[1]{\texttt{-#1}\index{xindy=\appfmt{xindy}>#1=\texttt{-#1}|hyperpage}}
+
+\newcommand*{\mkglsopt}[1]{\texttt{-#1}\index{makeglossaries=\appfmt{makeglossaries}>#1=\texttt{-#1}|hyperpage}}
+
+\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}}
+\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}}
+\newcommand*{\optfmt}[1]{\textsf{#1}}
+\newcommand*{\field}[1]{\optfmt{#1}\index{internal fields:>#1=\protect\optfmt{#1}|main}}
+
+\newcommand*{\glostyle}[1]{\textsf{#1}\index{glossary styles:>#1={\protect\ttfamily#1}|main}}
+
+\newcommand*{\acrstyle}[1]{\textsf{#1}\index{acronym styles:>#1={\protect\ttfamily#1}|main}}
+
+\newcounter{sample}
+\newcommand{\exitem}[2][sample]{%
+ \item[\texttt{#1#2.tex}]%
+ \refstepcounter{sample}\label{ex:#1#2}}
+
+\newenvironment{samplelist}%
+{\begin{description}}%
+{\end{description}}
+
+\newcommand*{\samplefile}[2][sample]{%
+ \hyperref[ex:#1#2]{\texttt{#1#2.tex}}}
+
+\ifpdf
+ \newcommand*{\htmldoc}[2]{\qt{#1}}
+\else
+ \newcommand*{\htmldoc}[2]{\href{#2.html}{\qt{#1}}}
+\fi
+
+\begin{document}
+\MakeShortVerb{"}
+\DeleteShortVerb{\|}
+
+ \title{User Manual for glossaries.sty v4.42}
+ \author{Nicola L.C. Talbot\\%
+ \url{http://www.dickimaw-books.com/}}
+
+ \date{2019-01-06}
+ \maketitle
+
+\begin{abstract}
+The \styfmt{glossaries} package provides a means to define terms or
+abbreviations or symbols that can be referenced within your document.
+Sorted lists with collated \glslink{entrylocation}{locations} can be
+generated either using \TeX\ or using a supplementary \gls{indexingapp}.
+
+Additional features not provided here may be available through
+the extension package \gls{glossaries-extra} which, if required,
+needs to be installed separately. New features will be added to
+\gls*{glossaries-extra}. Versions of the \styfmt{glossaries}
+package after v4.21 will mostly be just bug fixes. Note that
+\gls{glossaries-extra} provides an extra indexing option
+(\gls{bib2gls}) which isn't available with just the base
+\sty{glossaries} package.
+\end{abstract}
+
+If you require multilingual support you must also separately install
+the relevant language module. Each language module is distributed
+under the name \texttt{glossaries-}\meta{language}, where \meta{language} is the
+root language name. For example, \texttt{glossaries-french}
+or \texttt{glossaries-german}. If a language module is required,
+the \styfmt{glossaries} package will automatically try to load it and
+will give a warning if the module isn't found. See
+\sectionref{sec:languages} for further details.
+If there isn't any support available for your language, use
+the \pkgopt{nolangwarn} package option to suppress the warning
+and provide your own translations. (For example, use
+the \gloskey[printglossary]{title} key in \cs{printglossary}.)
+
+The \styfmt{glossaries} package requires a number of other packages
+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} (part of the \sty{datatool} bundle) and \sty{amsgen}. These
+packages are all available in the latest \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 (for Linux users)
+\href{http://tex.stackexchange.com/questions/14925/updating-tex-on-linux}{Updating
+\TeX\ on Linux}.
+
+Note that occasionally you may find that certain packages need to be
+loaded \emph{after} packages that are required by \styfmt{glossaries}. For
+example, a package \meta{X} might need to be loaded after \sty{amsgen}. In
+which case, load the required package first (for example,
+\sty{amsgen}), then \meta{X}, and finally load \styfmt{glossaries}.
+
+\begin{important}
+Documents have wide-ranging styles when it comes to presenting glossaries
+or lists of terms or notation. People have their own preferences and
+to a large extent this is determined by the kind of information that
+needs to go in the glossary. They may just have symbols with
+terse descriptions or they may have long technical words with
+complicated descriptions. The \styfmt{glossaries} package is
+flexible enough to accommodate such varied requirements, but this
+flexibility comes at a price: a~big manual.
+
+\aargh\ If you're freaking out at the size of this manual, start with
+\texttt{glossariesbegin.pdf} (\qt{The glossaries package: a guide
+for beginnners}). You should find it in the same directory as this
+document or try \texttt{texdoc glossariesbegin.pdf}. Once you've got
+to grips with the basics, then come back to this manual to find out
+how to adjust the settings.
+\end{important}
+
+\noindent
+The \styfmt{glossaries} bundle comes with the following documentation:
+\begin{description}
+\item[\url{glossariesbegin.pdf}]
+If you are a complete beginner, start with
+\htmldoc{The glossaries package: a guide for
+beginners}{glossariesbegin}.
+
+\item[\url{glossary2glossaries.pdf}]
+If you are moving over from the obsolete \sty{glossary} package,
+read \htmldoc{Upgrading from the glossary package to the
+glossaries package}{glossary2glossaries}.
+
+\item[glossaries-user.pdf]
+This document is the main user guide for the \styfmt{glossaries}
+package.
+
+\item[\url{glossaries-code.pdf}]
+Advanced users wishing to know more about the inner workings of all the
+packages provided in the \styfmt{glossaries} bundle should read
+\qt{Documented Code for glossaries v4.42}.
+
+\item[INSTALL] Installation instructions.
+
+\item[CHANGES] Change log.
+
+\item[README] Package summary.
+
+\end{description}
+Related resources:
+\begin{itemize}
+\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{http://www.dickimaw-books.com/faqs/glossariesfaq.html}{\styfmt{glossaries}
+FAQ}
+
+\item \href{http://www.dickimaw-books.com/gallery/#glossaries}{\styfmt{glossaries}
+gallery}
+
+\item
+\href{http://www.dickimaw-books.com/gallery/glossaries-styles/}{a
+summary of all glossary styles provided by \styfmt{glossaries}}
+
+\item
+\href{http://www.dickimaw-books.com/gallery/glossaries-performance.shtml}{\styfmt{glossaries}
+performance} (comparing document build times for the different
+options provided by \styfmt{glossaries} and \styfmt{glossaries-extra}).
+
+\item \href{http://www.dickimaw-books.com/latex/thesis/}{Using LaTeX to Write a PhD Thesis}
+(chapter 6).
+
+\item
+\href{https://www.dickimaw-books.com/latex/buildglossaries/}{Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build}
+
+\item The
+\href{http://ctan.org/pkg/glossaries-extra}{\styfmt{glossaries-extra} package}
+
+\item \href{http://ctan.org/pkg/bib2gls}{\appfmt{bib2gls}}
+\end{itemize}
+
+\begin{important}
+If you use \sty{hyperref} and \styfmt{glossaries}, you must load
+\sty{hyperref} \emph{first}. Similarly the \sty{doc} package must
+also be loaded before \styfmt{glossaries}. (If \sty{doc} is loaded,
+the file extensions for the default main glossary are changed to
+\filetype{gls2}, \filetype{glo2} and \filetype{.glg2} to avoid
+conflict with \sty{doc}'s changes
+glossary.)\hypertarget{pdflatexnote}{}%
+
+If you are using \sty{hyperref}, it's best to use \app{pdflatex}
+rather than \app{latex} (DVI format) as \appfmt{pdflatex} deals with
+hyperlinks much better. If you use the DVI format, you will
+encounter problems where you have long hyperlinks or hyperlinks in
+subscripts or superscripts. This is an issue with the DVI format not
+with \styfmt{glossaries}. If you really need to use the DVI format
+and have a problem with hyperlinks in maths mode, I recommend you use
+\gls{glossaries-extra} with the \texttt{hyperoutside} and
+\texttt{textformat} attributes set to appropriate values
+for problematic entries.
+\end{important}
+
+\clearpage
+\pdfbookmark[0]{Contents}{contents}
+\tableofcontents
+\clearpage
+\pdfbookmark[0]{List of Examples}{examples}
+\listofexamples
+\clearpage
+\pdfbookmark[0]{List of Tables}{tables}
+\listoftables
+
+\clearpage
+\printglossaries
+
+\glsresetall
+
+ \chapter{Introduction}
+\label{sec:intro}
+
+The \styfmt{glossaries} package is provided to assist generating
+lists of terms, symbols or abbreviations. (For convenience, these
+lists are all referred to as glossaries in this manual.)
+The package has a certain amount of flexibility, allowing the
+user to customize the format of the glossary and define multiple
+glossaries. It also supports glossary styles that
+include symbols (in addition to a name and description) for glossary
+entries. There is provision for loading a database of glossary
+terms. Only those terms indexed\footnote{That is, if the term has been
+referenced using any of the commands described in
+\sectionref{sec:glslink} and \sectionref{sec:glsadd} or via
+\ics{glssee} (or the \gloskey{see} key) or commands such as
+\ics{acrshort}.}\ in the document will be added to the glossary.
+
+The \styfmt{glossaries-extra} package, which is distributed as a
+separated bundle, extends the capabilities of
+the \styfmt{glossaries} package. The simplest document can be
+created with \styfmt{glossaries-extra} (which internally loads the
+\styfmt{glossaries} package):
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[
+ sort=none,% no sorting or indexing required
+ abbreviations,% create list of abbreviations
+ symbols,% create list of symbols
+ postdot % append a full stop after the descriptions
+]{glossaries-extra}
+
+\newglossaryentry % provided by glossaries.sty
+ {cafe}% label
+ {% definition:
+ name={caf\'e},
+ description={small restaurant selling refreshments}
+ }
+
+\newabbreviation % provided by glossaries-extra.sty
+ {html}% label
+ {HTML}% short form
+ {hypertext markup language}% long form
+
+\glsxtrnewsymbol % provided by glossaries-extra.sty 'symbols' option
+ [description={Archimedes' constant}]% options
+ {pi}% label
+ {\ensuremath{\pi}}% symbol
+
+\begin{document}
+First use: \gls{cafe}, \gls{html}, \gls{pi}.
+Next use: \gls{cafe}, \gls{html}, \gls{pi}.
+
+\printunsrtglossaries % list all defined entries
+\end{document}
+\end{verbatim}
+
+\textbf{The \styfmt{glossaries} package replaces the \sty{glossary}
+package which is now obsolete.} Please see the document
+\qtdocref{Upgrading from the glossary package to the glossaries
+package}{glossary2glossaries} for assistance in upgrading.
+
+One of the strengths of this package is its flexibility, however
+the drawback of this is the necessity of having a large manual
+that covers all the various settings. If you are daunted by the
+size of the manual, try starting off with the much shorter
+\docref{guide for beginners}{glossariesbegin}.
+
+\begin{important}
+There's a~common misconception that you have to have Perl installed
+in order to use the \styfmt{glossaries} package. Perl is \emph{not}
+a~requirement but it does increase the available options,
+particularly if you use an \gls{exlatinalph} or a~\gls{nonlatinalph}.
+\end{important}
+
+This document uses the \styfmt{glossaries} package. For example,
+when viewing the PDF version of this document in a
+hyperlinked-enabled PDF viewer (such as Adobe Reader or Okular) if
+you click on the word \qt{\gls{xindy}} you'll be taken to the entry
+in the glossary where there's a brief description of
+the term \qt{\gls*{xindy}}. This is the way the \styfmt{glossaries}
+mechanism works. An \gls{indexingapp} is used to generated the
+sorted list of terms. The \glspl{indexingapp} are \gls{cli} tools,
+which means they can be run directly from a command prompt or terminal, or can
+be integrated into some text editors, or you can use a build tool
+such as \app{arara} to run them.
+
+The remainder of this introductory section covers the following:
+\begin{itemize}
+\item \sectionref{sec:indexingoptions} lists the available indexing
+options.
+
+\item \sectionref{sec:samples} lists the sample documents provided
+with this package.
+
+\item \sectionref{sec:lipsum} lists the dummy glossary files that
+may be used for testing.
+
+\item \sectionref{sec:languages} provides information for users who
+wish to write in a language other than English.
+
+\item \sectionref{sec:makeglossaries} describes how to use an
+\gls{indexingapp} to create the sorted glossaries for your document
+(\optsor23).
+
+\end{itemize}
+
+\section{Indexing Options}
+\label{sec:indexingoptions}
+
+The basic idea behind the \styfmt{glossaries} package is that you
+first define your entries (terms, symbols or abbreviations). Then
+you can reference these within your document (like \cs{cite} or
+\cs{ref}). You can also, optionally, display a~list of the entries
+you have referenced in your document (the glossary). This last part,
+displaying the glossary, is the part that most new users find
+difficult. There are three options available with the base
+\styfmt{glossaries} package and two further options with the
+extension package \gls{glossaries-extra}.
+An overview of these options is given in
+\tableref{tab:options}.
+
+If you are developing a class or package that loads
+\styfmt{glossaries}, I recommend that you don't force the user into
+a particular indexing method by adding an unconditional \cs{makeglossaries}
+into your class or package code. Aside from forcing the user into a
+particular indexing method, it means that they're unable to use any
+commands that must come before \cs{makeglossaries} (such as
+\cs{newglossary}) and they can't switch off the indexing whilst
+working on a draft document.
+
+For a comparison of the various methods when used with large entry
+sets or when used with symbols such as \cs{alpha}, see the
+\href{http://www.dickimaw-books.com/gallery/glossaries-performance.shtml}{\styfmt{glossaries} performance page}.
+
+\begin{table}[htbp]
+ \caption{Glossary Options: Pros and Cons}
+ \label{tab:options}
+ {%
+ \renewcommand{\fnsymmark}[1]{\rlap{#1}}%
+ \setlength{\tabcolsep}{3pt}%
+ \centering
+ \begin{tabular}{@{}>{\raggedright\small}p{0.35\textwidth}ccccc@{}}
+ & \bfseries \opt1 & \bfseries \opt2 & \bfseries \opt3
+ & \bfseries \opt4 & \bfseries \opt5\\
+ Requires \gls{glossaries-extra}? &
+ \conno & \conno & \conno & \conyes & \conyes\\
+ Requires an external application? &
+ \conno & \conyes & \conyes & \conyes & \conno\\
+ Requires Perl? &
+ \conno & \conno & \conyes & \conno & \conno\\
+ Requires Java? &
+ \conno & \conno & \conno & \conyes & \conno\\
+ Can sort \glspl{exlatinalph}
+ or \glspl{nonlatinalph}? &
+ \prono\fnsym{1} & \prono & \proyes & \proyes & N/A\\
+ Efficient sort algorithm? &
+ \prono & \proyes & \proyes & \proyes & N/A\\
+ Can use a different sort method for each glossary? &
+ \proyes
+ & \prono\fnsym{2}
+ & \prono\fnsym{2} & \proyes & N/A\\
+ Any problematic sort values? &
+ \conyes & \conyes & \conyes & \conno & \conno\fnsym{3}\\
+ Are entries with identical sort values treated as separate unique
+ entries? &
+ \proyes & \proyes & \prono\fnsym{4} & \proyes & \proyes\\
+ Can automatically form ranges in the location lists? &
+ \prono & \proyes & \proyes & \proyes & \prono\\
+ Can have non-standard locations in the location lists? &
+ \proyes & \prono
+ & \proyes\fnsym{5}
+ & \proyes
+ & \proyes\fnsym{6}\\
+ Maximum hierarchical depth (style-dependent) &
+ $\infty$\fnsym{7} & 3 & $\infty$ & $\infty$ & $\infty$\\
+ \ics{glsdisplaynumberlist} reliable? &
+ \proyes & \prono & \prono & \proyes & \prono\\
+ \ics{newglossaryentry} allowed in \env{document} environment?
+ (Not recommended.) &
+ \no & \yes & \yes & \no\fnsym{8} & \yes\fnsym{9}\\
+ Requires additional write registers? &
+ \conno & \conyes & \conyes & \conno & \conno\fnsym{10}\\
+ Default value of \pkgopt{sanitizesort} package option &
+ \texttt{false} & \texttt{true} & \texttt{true}
+ & \texttt{true}\fnsym{11}
+ & \texttt{true}\fnsym{11}
+ \end{tabular}
+ \par
+ }\par
+ \smallskip
+ \hrulefill\par
+ \smallskip\footnotesize
+ \fnsym{1} Strips standard \LaTeX\ accents
+(that is, accents generated by core \LaTeX\ commands) so,
+for example, \ics{AA} is treated the same as A.\par
+ \fnsym{2} Only with the hybrid method provided with \sty{glossaries-extra}.\par
+ \fnsym{3} Provided \pkgopt[none]{sort} is used.\par
+ \fnsym{4} Entries with the same sort value are merged.\par
+ \fnsym{5} Requires some setting up.\par
+ \fnsym{6} The locations must be set explicitly
+through the custom \field{location} field provided by
+\styfmt{glossaries-extra}.\par
+ \fnsym{7} Unlimited but unreliable.\par
+ \fnsym{8} Entries are defined in \texttt{.bib}
+format. \cs{newglossaryentry} should not be used explicitly.\par
+ \fnsym{9} Provided \pkgoptfmt{docdefs=true} or
+\pkgoptfmt{docdefs=restricted} but not recommended.\par
+ \fnsym{10} Provided \pkgoptfmt{docdefs=false} or
+\pkgoptfmt{docdefs=restricted}.\par
+ \fnsym{11} Irrelevant with \pkgopt[none]{sort}. (The \optfmt{record=only}
+ option automatically switches this on.)
+\par
+\end{table}
+
+\optionsec[\TeX]{TeX}
+
+This option doesn't require an external \gls{indexingapp} but, with
+the default alphabetic sorting, it's very slow with severe limitations.
+If you want a sorted list, it doesn't work well for
+\glspl{exlatinalph} or \glspl{nonlatinalph}. However, if you use
+the \pkgopt[false]{sanitizesort} package option (the default for
+Option~1) then the \glslink{latexexlatinchar}{standard \LaTeX\
+accent commands} will be ignored, so if an entry's name is set to
+\verb|{\'e}lite| then the sort value will default to \texttt{elite} if
+\pkgopt[false]{sanitizesort} is used and will default to
+\verb|\'elite| if \pkgopt[true]{sanitizesort} is used. If you have
+any other kinds of commands that don't expand to ASCII characters,
+such as \cs{alpha} or \cs{si}, then you must use
+\pkgopt[true]{sanitizesort} or change the sort method
+(\pkgopt[use]{sort} or \pkgopt[def]{sort}) in the package options
+or explicitly set the \gloskey{sort} key when you define the
+relevant entries. For example:
+\begin{verbatim}
+\newglossaryentry{alpha}{name={\ensuremath{\alpha}},
+ sort={alpha},description={...}}
+\end{verbatim}
+
+This option works best with the \pkgopt[def]{sort} or
+\pkgopt[use]{sort} setting. For any
+other setting, be prepared for a long document build time,
+especially if you have a lot of entries defined. \textbf{This
+option is intended as a last resort for alphabetical sorting.}
+This option allows a mixture of sort methods. (For example,
+sorting by word order for one glossary and order of use for another.)
+This option is not suitable for hierarchical glossaries and does
+not form ranges in the \glspl{numberlist}. If you really can't use an
+\gls{indexingapp} consider using \opt{5} instead.
+
+ \begin{enumerate}
+ \item Add
+\begin{verbatim}
+\makenoidxglossaries
+\end{verbatim}
+ to your preamble (before you start defining your entries, as described in
+ \sectionref{sec:newglosentry}).
+
+ \item Put
+\begin{verbatim}
+\printnoidxglossary
+\end{verbatim}
+ where you want your list of entries to appear (described in
+ \sectionref{sec:printglossary}). Alternatively, to display all
+ glossaries use the iterative command:
+\begin{verbatim}
+\printnoidxglossaries
+\end{verbatim}
+
+ \item Run \LaTeX\ twice on your document. (As you would do to
+ make a~table of contents appear.) For example, click twice on
+ the \qt{typeset} or \qt{build} or \qt{PDF\LaTeX} button in your editor.
+ \end{enumerate}
+
+Complete example:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{glossaries}
+\makenoidxglossaries % use TeX to sort
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+\begin{document}
+\gls{sample}.
+\printnoidxglossary
+\end{document}
+\end{verbatim}
+
+\optionsec{makeindex}
+
+This option uses a~\gls{cli} application called \gls{makeindex} to sort
+the entries. This application comes with all modern \TeX\ distributions,
+but it's hard-coded for the non-extended \gls{latinalph}. It can't
+correctly sort accent commands (such as \cs{'} or \cs{c}) and fails
+with UTF-8 characters, especially for any sort values that start
+with a UTF-8 character (as it separates the octets resulting in an
+invalid file encoding). This process involves making \LaTeX\ write
+the glossary information to a temporary file which \gls{makeindex}
+reads. Then \gls{makeindex} writes a~new file containing the code
+to typeset the glossary. Then \cs{printglossary} reads this file in
+on the next run.
+
+This option works best if you want to sort entries according to the
+English alphabet and you don't want to install Perl (or Java or
+you don't want to use \gls{glossaries-extra}). This method can
+also work with the restricted shell escape since \gls{makeindex}
+is considered a trusted application. (So you should be able to
+use the \pkgopt{automake} package option provided the shell
+escape hasn't been completely disabled.)
+
+This method can form ranges in the \gls{numberlist} but only
+accepts limited number formats: \cs{arabic}, \cs{roman},
+\cs{Roman}, \cs{alph} and \cs{Alph}.
+
+This option does not allow a mixture of sort methods.
+All glossaries must be sorted according to the same method:
+word\slash letter ordering or order of use or order of definition.
+If you need word ordering for one glossary and letter ordering
+for another you'll have to explicitly call \gls{makeindex} for
+each glossary type.
+(The \sty{glossaries-extra} package allows a hybrid mix of
+\optsand12 to provide word\slash letter ordering with \opt2 and order
+of use\slash definition with \opt1. See the \sty{glossaries-extra}
+documentation for further details.)
+
+ \begin{enumerate}
+ \item If you want to use \gls{makeindex}['s] \mkidxopt{g} option
+ you must change the quote character using \ics{GlsSetQuote}. For example:
+\begin{verbatim}
+\GlsSetQuote{+}
+\end{verbatim}
+ This must be used before \cs{makeglossaries}.
+ Note that if you are using \sty{babel}, the shorthands aren't
+ enabled until the start of the document, so you won't be able to use
+ the shorthands in definitions made in the preamble.
+
+ \item Add
+\begin{verbatim}
+\makeglossaries
+\end{verbatim}
+to your preamble (before you start
+ defining your entries, as described in
+ \sectionref{sec:newglosentry}).
+
+ \item Put
+\begin{verbatim}
+\printglossary
+\end{verbatim}
+ where you want your list of entries to appear (described in
+ \sectionref{sec:printglossary}). Alternatively, to display all
+ glossaries use the iterative command:
+\begin{verbatim}
+\printglossaries
+\end{verbatim}
+
+ \item Run \LaTeX\ on your document. This creates files with the
+ extensions \texttt{.glo} and \texttt{.ist} (for example, if your
+ \LaTeX\ document is called \texttt{myDoc.tex}, then you'll have
+ two extra files called \texttt{myDoc.glo} and \texttt{myDoc.ist}).
+ If you look at your document at this point, you won't see the
+ glossary as it hasn't been created yet. (If you use
+ \sty{glossaries-extra} you'll see the section heading and some
+ boilerplate text.)
+
+ \item Run \gls{makeindex} with the \texttt{.glo} file as the
+ input file and the \texttt{.ist} file as the style so that
+ it creates an output file with the extension \texttt{.gls}. If
+ you have access to a terminal or a command prompt (for example, the
+ MSDOS command prompt for Windows users or the bash console for
+ Unix-like users) then you need to run the command:
+\begin{verbatim}
+makeindex -s myDoc.ist -o myDoc.gls myDoc.glo
+\end{verbatim}
+ (Replace \texttt{myDoc} with the base name of your \LaTeX\
+ document file. Avoid spaces in the file name if possible.) If you don't know
+ how to use the command prompt, then you can probably access
+ \gls{makeindex} via your text editor, but each editor has a
+ different method of doing this, so I~can't give a~general
+ description. You will have to check your editor's manual. The
+ simplest approach is to use \app{arara} and add the following
+ comment lines to the start of your document:
+\begin{alltt}
+\% arara:\ pdflatex
+\% arara:\ makeglossaries
+\% arara:\ pdflatex
+\end{alltt}
+ (Replace \texttt{makeglossaries} with
+ \texttt{makeglossaries-lite} if you don't have Perl installed.)
+
+ The default sort is word order (\qt{sea lion} comes before \qt{seal}).
+ If you want letter ordering you need to add the \mkidxopt{l}
+ switch:
+\begin{verbatim}
+makeindex -l -s myDoc.ist -o myDoc.gls myDoc.glo
+\end{verbatim}
+ (See \sectionref{sec:makeindexapp} for further details on using
+ \gls*{makeindex} explicitly.) If you use \gls{makeglossaries}
+ or \gls{makeglossaries-lite.lua} then use the \pkgopt[letter]{order}
+ package option and the \mkidxopt{l} option will be added
+ automatically.
+
+ \item Once you have successfully completed the previous step,
+ you can now run \LaTeX\ on your document again. You'll need to
+ repeat the process if you have used the \pkgopt{toc} option
+ (unless you're using \sty{glossaries-extra}) to ensure the
+ section heading is added to the table of contents. You'll also
+ need to repeat the process if you have any cross-references
+ which can't be indexed until the glossary file has been created.
+ \end{enumerate}
+
+Complete example:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{glossaries}
+\makeglossaries % open glossary files
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+\begin{document}
+\gls{sample}.
+\printglossary
+\end{document}
+\end{verbatim}
+
+\optionsec{xindy}
+
+This option uses a~\gls{cli} application called
+\gls{xindy} to sort the entries. This application is more flexible than
+\texttt{makeindex} and is able to sort \glspl{exlatinalph} or
+\glspl{nonlatinalph}, however it does still have some limitations.
+
+The \gls{xindy} application comes with both \TeX~Live and
+MiK\TeX, but since \gls{xindy} is a Perl script, you will also need
+to install Perl, if you don't already have it. In a~similar way to
+\opt2, this option involves making \LaTeX\ write the glossary
+information to a~temporary file which \gls{xindy} reads. Then
+\gls{xindy} writes a~new file containing the code to typeset the
+glossary. Then \cs{printglossary} reads this file in on the next run.
+
+This is the best option with just the base \styfmt{glossaries}
+package if you want to sort according to a~language other than
+English or if you want non-standard location lists, but it can
+require some setting up (see \sectionref{sec:xindy}). There are
+some problems with certain sort values:
+\begin{itemize}
+ \item entries with the same sort value are merged by \gls*{xindy}
+ into a single glossary line so you must make sure that each entry
+ has a unique sort value;
+ \item \gls*{xindy} forbids empty sort values;
+ \item \gls*{xindy} automatically strips control sequences, the math-shift
+ character \verb|$| and braces \verb|{}| from the sort value,
+ which is usually desired but this can cause the sort value to
+ collapse to an empty string which \gls*{xindy} forbids.
+\end{itemize}
+In these problematic cases, you must set the \gloskey{sort} field
+explicitly. For example:
+\begin{verbatim}
+\newglossaryentry{alpha}{name={\ensuremath{\alpha}},
+ sort={alpha},description={...}}
+\end{verbatim}
+
+All glossaries must be sorted according to the same method
+(word/letter ordering, order of use, or order of definition).
+(The \sty{glossaries-extra} package allows a hybrid mix of
+\optsand13 to provide word\slash letter ordering with \opt3 and order
+of use\slash definition with \opt1. See the \sty{glossaries-extra}
+documentation for further details.)
+
+\begin{enumerate}
+ \item Add the \pkgopt{xindy} option to the \styfmt{glossaries}
+package option list:
+\begin{verbatim}
+\usepackage[xindy]{glossaries}
+\end{verbatim}
+ If you are using a non-Latin script you'll also need to either
+ switch off the creation of the number group:
+\begin{verbatim}
+\usepackage[xindy={glsnumbers=false}]{glossaries}
+\end{verbatim}
+ or use either \cs{GlsSetXdyFirstLetterAfterDigits}\marg{letter} or
+ \cs{GlsSetXdyNumberGroupOrder}\marg{spec} to indicate where the number
+ group should be placed (see \sectionref{sec:xindy}).
+
+ \item Add \cs{makeglossaries} to your preamble (before you start
+ defining your entries, as described in \sectionref{sec:newglosentry}).
+
+ \item Run \LaTeX\ on your document. This creates files with the
+ extensions \texttt{.glo} and \texttt{.xdy} (for example, if your
+ \LaTeX\ document is called \texttt{myDoc.tex}, then you'll have
+ two extra files called \texttt{myDoc.glo} and \texttt{myDoc.xdy}).
+ If you look at your document at this point, you won't see the
+ glossary as it hasn't been created yet. (If you're using the
+ extension package \sty{glossaries-extra}, you'll see the section
+ header and some boilerplate text.)
+
+ \item Run \gls{xindy} with the \texttt{.glo} file as the
+ input file and the \texttt{.xdy} file as a~module so that
+ it creates an output file with the extension \texttt{.gls}. You
+ also need to set the language name and input encoding. If
+ you have access to a terminal or a command prompt (for example, the
+ MSDOS command prompt for Windows users or the bash console for
+ Unix-like users) then you need to run the command (all on one
+ line):
+\begin{verbatim}
+xindy -L english -C utf8 -I xindy -M myDoc
+-t myDoc.glg -o myDoc.gls myDoc.glo
+\end{verbatim}
+ (Replace \texttt{myDoc} with the base name of your \LaTeX\
+ document file. Avoid spaces in the file name. If necessary, also replace
+ \texttt{english} with the name of your language and \texttt{utf8}
+ with your input encoding, for example,
+ \xdyopt{L}\texttt{ german }\xdyopt{C}\texttt{ din5007-utf8}.)
+ Note that it's much simpler to use \gls{makeglossaries} instead:
+\begin{verbatim}
+makeglossaries myDoc
+\end{verbatim}
+ (Remember that \gls{xindy} is a Perl script so if you can use
+ \gls{xindy} then you can also use \gls{makeglossaries}, and if
+ you don't want to use \gls{makeglossaries} because you don't
+ want to install Perl, then you can't use \gls{xindy} either.)
+
+ If you don't know how to use the command prompt, then you can
+ probably access \gls{xindy} or \gls{makeglossaries} via your text editor,
+ but each editor has a different method of doing this, so I~can't give
+ a~general description. You will have to check your editor's manual. Again,
+ a convenient method is to use \appfmt{arara} and add the follow comment
+ lines to the start of your document:
+\begin{alltt}
+\% arara:\ pdflatex
+\% arara:\ makeglossaries
+\% arara:\ pdflatex
+\end{alltt}
+
+ The default sort is word order (\qt{sea lion} comes before \qt{seal}).
+ If you want letter ordering you need to add the
+ \pkgopt[letter]{order} package option:
+\begin{verbatim}
+\usepackage[xindy,order=letter]{glossaries}
+\end{verbatim}
+ (and return to the previous step). This option is picked up
+ by \gls{makeglossaries}. If you are explicitly using \gls{xindy}
+ then you'll need to add \texttt{-M ord/letorder} to the options list.
+ See \sectionref{sec:xindyapp} for further details on using
+ \gls*{xindy} explicitly.
+
+ \item Once you have successfully completed the previous step,
+ you can now run \LaTeX\ on your document again. As with the
+ previous option, you may need to repeat the process to ensure
+ the table of contents and cross-references are resolved.
+
+\end{enumerate}
+
+Complete example:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[xindy]{glossaries}
+\makeglossaries % open glossary files
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+\begin{document}
+\gls{sample}.
+\printglossary
+\end{document}
+\end{verbatim}
+
+\optionsec{bib2gls}
+
+This option is only available with the extension package
+\gls{glossaries-extra}. This method uses \gls{bib2gls} to both
+fetch entry definitions from \texttt{.bib} files and to
+hierarchically sort and collate.
+
+All entries must be provided in one or more \texttt{.bib} files.
+(See the \gls{bib2gls} user manual for the required format.) The
+\sty{glossaries-extra} package needs to be loaded with the
+\pkgoptfmt{record} package option
+\begin{verbatim}
+\usepackage[record]{glossaries-extra}
+\end{verbatim}
+or (equivalently)
+\begin{verbatim}
+\usepackage[record=only]{glossaries-extra}
+\end{verbatim}
+(It's possible to use a hybrid of this method and \optsor23 with
+\pkgoptfmt{record=alsoindex} but in general there is little need
+for this and it complicates the build process.)
+
+Each resource set is loaded with \cs{GlsXtrLoadResources}\oarg{options}.
+For example:
+\begin{verbatim}
+\GlsXtrLoadResources
+[% definitions in entries1.bib and entries2.bib:
+ src={entries1,entries2},
+ sort={de-CH-1996}% sort according to this locale
+]
+\end{verbatim}
+You can have multiple resource commands.
+
+The glossary is displayed using
+\begin{verbatim}
+\printunsrtglossary
+\end{verbatim}
+Alternatively all glossaries can be displayed using the iterative
+command:
+\begin{verbatim}
+\printunsrtglossaries
+\end{verbatim}
+The document is build using:
+\begin{verbatim}
+pdflatex myDoc
+bib2gls myDoc
+pdflatex myDoc
+\end{verbatim}
+If letter groups are required, you need the \verb|--group| switch:
+\begin{verbatim}
+bib2gls --group myDoc
+\end{verbatim}
+Unlike \optsand23, this method doesn't create a file containing
+the typeset glossary but simply determines which entries are
+needed for the document, their associated locations and (if
+required) their associated letter group. This option allows
+a mixture of sort methods. (For example, sorting by word order
+for one glossary and order of use for another or even sorting
+one block of the glossary differently to another block in the
+same glossary.)
+
+This method supports Unicode and (with at least Java~8) uses
+the Common Locale Data Repository, which provides more extensive
+language support than \gls{xindy}.\footnote{Except for Klingon,
+which is supported by \gls{xindy}, but not by the
+CLDR.}\ The locations in the
+\gls{numberlist} may be in any format. If \gls{bib2gls} can
+deduce a numerical value it will attempt to form ranges otherwise
+it will simply list the locations.
+
+Complete example:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[record]{glossaries-extra}
+\GlsXtrLoadResources[src={entries}]
+\begin{document}
+\gls{sample}.
+\printunsrtglossary
+\end{document}
+\end{verbatim}
+where \texttt{entries.bib} contains
+\begin{verbatim}
+@entry{sample,
+ name={sample},
+ description={an example}
+}
+\end{verbatim}
+See the \gls{bib2gls} user manual for further details.
+
+\optionsec[no sorting]{no sorting}
+
+This option is only available with the extension package
+\gls{glossaries-extra}. No \gls{indexingapp} is required. This
+method is best used with the package option \pkgopt[none]{sort}.
+\begin{verbatim}
+\usepackage[sort=none]{glossaries-extra}
+\end{verbatim}
+There's no \qt{activation} command (such as \cs{makeglossaries}
+for \optsand23).
+
+All entries must be defined before the glossary is displayed
+(preferably in the preamble) in the required order, and child
+entries must be defined immediately after their parent entry
+if they must be kept together in the glossary
+
+The glossary is displayed using
+\begin{verbatim}
+\printunsrtglossary
+\end{verbatim}
+Alternatively all glossaries can be displayed using the iterative
+command:
+\begin{verbatim}
+\printunsrtglossaries
+\end{verbatim}
+This will display \emph{all} defined entries, regardless of
+whether or not they have been used in the document. The
+\glspl{numberlist} have to be set explicitly otherwise they won't
+appear. Note that this uses the same command for displaying the
+glossary as \opt4. This is because \gls{bib2gls} takes advantage
+of this method by defining the wanted entries in the required order and
+setting the locations (and letter group information, if required).
+
+This just requires a single \LaTeX\ call
+\begin{verbatim}
+pdflatex myDoc
+\end{verbatim}
+unless the glossary needs to appear in the table of contents, in which case
+a second run is required.
+\begin{verbatim}
+pdflatex myDoc
+pdflatex myDoc
+\end{verbatim}
+(Naturally if the document also contains citations, and so on,
+then additional steps are required. Similarly for all the other
+options above.)
+
+Complete example:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[sort=none]{glossaries-extra}
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+\begin{document}
+\gls{sample}.
+\printunsrtglossary
+\end{document}
+\end{verbatim}
+See the \sty{glossaries-extra} documentation for
+further details.
+
+\section{Sample Documents}
+\label{sec:samples}
+
+The \styfmt{glossaries} package is provided with some sample
+documents that illustrate the various functions. These should
+be located in the \texttt{samples} subdirectory (folder) of the
+\styfmt{glossaries} documentation directory. This location varies
+according to your operating system and \TeX\ distribution. You
+can use \texttt{texdoc} to locate the main glossaries documentation.
+For example, in a
+\href{http://www.dickimaw-books.com/latex/novices/html/terminal.html}{terminal or command prompt}, type:
+\begin{prompt}
+texdoc -l glossaries
+\end{prompt}
+This should display a list of all the files in the glossaries
+documentation directory with their full pathnames. (The GUI version
+of \texttt{texdoc} may also provide you with the information.)
+
+If you can't find the sample files on your computer, they are also available
+from your nearest CTAN mirror at
+\url{http://mirror.ctan.org/macros/latex/contrib/glossaries/samples/}.
+
+The sample documents are listed below\footnote{Note that although I've written
+\texttt{latex} in this section, it's better to use \texttt{pdflatex}, where
+possible, for the reasons given \hyperlink{pdflatexnote}{earlier}.}
+If you prefer to use UTF-8 aware engines (\texttt{xelatex} or
+\texttt{lualatex}) remember that you'll need to switch from
+\styfmt{fontenc} \& \styfmt{inputenc} to \styfmt{fontspec} where
+appropriate. The \gls{glossaries-extra} package provides some
+additional sample files.
+
+\begin{samplelist}
+\exitem[minimal]{gls} This document is a
+minimal working example. You can test your installation using this
+file. To create the complete document you will need to do the
+following steps:
+ \begin{enumerate}
+ \item Run \texttt{minimalgls.tex} through \LaTeX\ either by
+ typing
+\begin{prompt}
+latex minimalgls
+\end{prompt}
+ in a terminal or by using the relevant button or menu item in
+ your text editor or front-end. This will create the required
+ associated files but you will not see the glossary. If you use
+ PDF\LaTeX\ you will also get warnings about non-existent
+ references that look something like:
+\begin{verbatim}
+pdfTeX warning (dest): name{glo:aca} has been
+referenced but does not exist,
+replaced by a fixed one
+\end{verbatim}
+ These warnings may be ignored on the first run.
+
+ If you get a \verb"Missing \begin{document}" error, then
+ it's most likely that your version of \sty{xkeyval} is
+ out of date. Check the log file for a warning of that nature.
+ If this is the case, you will need to update the \styfmt{xkeyval}
+ package.
+
+ \item If you have Perl installed, run \gls{makeglossaries} on the document (\sectionref{sec:makeglossaries}). This can
+ be done on a terminal by typing
+\begin{prompt}
+makeglossaries minimalgls
+\end{prompt}
+ otherwise do
+\begin{prompt}
+makeglossaries-lite minimalgls
+\end{prompt}
+ If for some reason you want to call \gls{makeindex} explicitly, you can do this
+ in a terminal by typing (all on one line):
+\begin{prompt}
+makeindex -s minimalgls.ist -t minimalgls.glg -o minimalgls.gls minimalgls.glo
+\end{prompt}
+ (See \sectionref{sec:makeindexapp} for further details on using
+ \gls*{makeindex} explicitly.)
+
+ Note that if the file name contains spaces, you will need to use
+ the double-quote character to delimit the name.
+
+ \item Run \texttt{minimalgls.tex} through \LaTeX\ again (as step~1)
+ \end{enumerate}
+You should now have a complete document. The number following
+each entry in the glossary is the location number. By default, this
+is the page number where the entry was referenced.
+
+There are three other files that can be used as a
+\href{http://www.dickimaw-books.com/latex/minexample/}{minimal working
+example}: \texttt{mwe-gls.tex}, \texttt{mwe-acr.tex} and
+\texttt{mwe-acr-desc.tex}.
+
+\exitem{-noidxapp} This document illustrates how to use the
+\styfmt{glossaries} package without an external \gls{indexingapp} (\opt1).
+To create the complete document, you need to do:
+\begin{prompt}
+latex sample-noidxapp
+latex sample-noidxapp
+\end{prompt}
+
+\exitem{-noidxapp-utf8} As the previous example, except that it uses
+the \sty{inputenc} package.
+To create the complete document, you need to do:
+\begin{prompt}
+latex sample-noidxapp-utf8
+latex sample-noidxapp-utf8
+\end{prompt}
+
+\exitem{4col} This document illustrates
+a four column glossary where the entries have a symbol in addition
+to the name and description. To create the complete document, you
+need to do:
+\begin{prompt}
+latex sample4col
+makeglossaries sample4col
+latex sample4col
+\end{prompt}
+or
+\begin{prompt}
+latex sample4col
+makeglossaries-lite sample4col
+latex sample4col
+\end{prompt}
+The vertical gap between entries is the
+gap created at the start of each group. This can be suppressed
+using the \pkgopt{nogroupskip} package option.
+
+\exitem{Acr} This document has some
+sample abbreviations. It also adds the glossary to the table of contents,
+so an extra run through \LaTeX\ is required to ensure the document
+is up to date:
+\begin{prompt}
+latex sampleAcr
+makeglossaries sampleAcr
+latex sampleAcr
+latex sampleAcr
+\end{prompt}
+(or use \gls{makeglossaries-lite.lua}).
+
+\exitem{AcrDesc} This is similar to
+the previous example, except that the abbreviations have an associated
+description. As with the previous example, the glossary is added to
+the table of contents, so an extra run through \LaTeX\ is required:
+\begin{prompt}
+latex sampleAcrDesc
+makeglossaries sampleAcrDesc
+latex sampleAcrDesc
+latex sampleAcrDesc
+\end{prompt}
+
+\exitem{Desc} This is similar to the
+previous example, except that it defines the abbreviations using
+\ics{newglossaryentry} instead of \ics{newacronym}. As with the
+previous example, the glossary is added to the table of contents, so
+an extra run through \LaTeX\ is required:
+\begin{prompt}
+latex sampleDesc
+makeglossaries sampleDesc
+latex sampleDesc
+latex sampleDesc
+\end{prompt}
+
+\exitem{CustomAcr} This document has some sample abbreviations with a
+custom acronym style. It also adds the glossary to the table of
+contents, so an extra run through \LaTeX\ is required:
+\begin{prompt}
+latex sampleCustomAcr
+makeglossaries sampleCustomAcr
+latex sampleCustomAcr
+latex sampleCustomAcr
+\end{prompt}
+
+\exitem{FnAcrDesc} This is similar to \samplefile{AcrDesc}, except that it
+uses the \acrstyle{footnote-sc-desc} style. As with the previous example,
+the glossary is added to the table of contents, so an extra run through
+\LaTeX\ is required:
+\begin{prompt}
+latex sampleFnAcrDesc
+makeglossaries sampleFnAcrDesc
+latex sampleFnAcrDesc
+latex sampleFnAcrDesc
+\end{prompt}
+
+\exitem{-FnDesc} This example
+defines a custom display format that puts the description in a
+footnote on first use.
+\begin{prompt}
+latex sample-FnDesc
+makeglossaries sample-FnDesc
+latex sample-FnDesc
+\end{prompt}
+
+\exitem{-custom-acronym}
+This document illustrates how to define your own acronym style if
+the predefined styles don't suit your requirements.
+\begin{prompt}
+latex sample-custom-acronym
+makeglossaries sample-custom-acronym
+latex sample-custom-acronym
+\end{prompt}
+
+\exitem{-crossref}
+This document illustrates how to cross-reference entries in the
+glossary.
+\begin{prompt}
+latex sample-crossref
+makeglossaries sample-crossref
+latex sample-crossref
+\end{prompt}
+
+\exitem{-dot-abbr} This document illustrates how to use the
+post link hook to adjust the space factor after abbreviations.
+\begin{prompt}
+latex sample-dot-abbr
+makeglossaries sampledot-abbrf
+latex sample-dot-abbr
+\end{prompt}
+
+\exitem{DB} This document illustrates how
+to load external files containing the glossary definitions. It also
+illustrates how to define a new glossary type. This document has the
+\gls{numberlist} suppressed and uses \ics{glsaddall} to add all
+the entries to the glossaries without referencing each one
+explicitly. To create the document do:
+\begin{prompt}
+latex sampleDB
+makeglossaries sampleDB
+latex sampleDB
+\end{prompt}
+or
+\begin{prompt}
+latex sampleDB
+makeglossaries-lite sampleDB
+latex sampleDB
+\end{prompt}
+The glossary definitions are stored in the accompanying files
+\texttt{database1.tex} and \texttt{database2.tex}. If for some
+reason you want to call \gls{makeindex} explicitly you must
+have a separate call for each glossary:
+\begin{enumerate}
+\item Create the main glossary (all on one line):
+\begin{prompt}\raggedright
+makeindex -s sampleDB.ist -t sampleDB.glg -o sampleDB.gls sampleDB.glo
+\end{prompt}
+\item Create the secondary glossary (all on one line):
+\begin{prompt}\raggedright
+makeindex -s sampleDB.ist -t sampleDB.nlg -o sampleDB.not sampleDB.ntn
+\end{prompt}
+Note that both \gls{makeglossaries} and \gls{makeglossaries-lite.lua} do
+this all in one call, so they not only make it easier because you
+don't need to supply all the switches and remember all the
+extensions but they also call \gls{makeindex} the appropriate number of times.
+\end{enumerate}
+
+\exitem{Eq} This document illustrates how
+to change the location to something other than the page number. In
+this case, the \texttt{equation} counter is used since all glossary
+entries appear inside an \env{equation} environment. To create
+the document do:
+\begin{prompt}
+latex sampleEq
+makeglossaries sampleEq
+latex sampleEq
+\end{prompt}
+
+\exitem{EqPg} This is similar to the
+previous example, but the \glspl{numberlist} are a
+mixture of page numbers and equation numbers. This example adds the
+glossary to the table of contents, so an extra \LaTeX\ run is
+required:
+\begin{prompt}
+latex sampleEqPg
+makeglossaries sampleEqPg
+latex sampleEqPg
+latex sampleEqPg
+\end{prompt}
+
+\exitem{Sec} This document also
+illustrates how to change the location to something other than the
+page number. In this case, the \texttt{section} counter is used.
+This example adds the glossary to the table of contents, so an extra
+\LaTeX\ run is required:
+\begin{prompt}
+latex sampleSec
+makeglossaries sampleSec
+latex sampleSec
+latex sampleSec
+\end{prompt}
+
+\exitem{Ntn} This document illustrates
+how to create an additional glossary type. This example adds the
+glossary to the table of contents, so an extra \LaTeX\ run is
+required:
+\begin{prompt}
+latex sampleNtn
+makeglossaries sampleNtn
+latex sampleNtn
+latex sampleNtn
+\end{prompt}
+Note that if you want to call \gls{makeindex} explicitly instead of
+using \gls{makeglossaries} or \gls{makeglossaries-lite.lua} then you
+need to call \gls{makeindex} twice:
+\begin{enumerate}
+\item Create the main glossary (all on one line):
+\begin{prompt}\raggedright
+makeindex -s sampleNtn.ist -t sampleNtn.glg -o sampleNtn.gls sampleNtn.glo
+\end{prompt}
+\item Create the secondary glossary (all on one line):
+\begin{prompt}\raggedright
+makeindex -s sampleNtn.ist -t sampleNtn.nlg -o sampleNtn.not sampleNtn.ntn
+\end{prompt}
+\end{enumerate}
+
+\exitem{} This document illustrates some of
+the basics, including how to create child entries that use the same
+name as the parent entry. This example adds the glossary to the
+table of contents and it also uses \ics{glsrefentry}, so an extra \LaTeX\
+run is required:
+\begin{prompt}
+latex sample
+makeglossaries sample
+latex sample
+latex sample
+\end{prompt}
+You can see the difference between word and letter ordering if you
+substitute \pkgopt[word]{order} with \pkgopt[letter]{order}. (Note
+that this will only have an effect if you use
+\gls{makeglossaries} or \gls{makeglossaries-lite.lua}.
+If you use \gls{makeindex} explicitly, you will need to use the
+\mkidxopt{l} switch to indicate letter ordering.)
+
+\exitem{-inline} This document is
+like \texttt{sample.tex}, above, but uses the \glostyle{inline}
+glossary style to put the glossary in a footnote.
+
+\exitem{tree} This document illustrates
+a hierarchical glossary structure where child entries have different
+names to their corresponding parent entry. To create the document
+do:
+\begin{prompt}
+latex sampletree
+makeglossaries sampletree
+latex sampletree
+\end{prompt}
+
+\exitem{-dual} This document
+illustrates how to define an entry that both appears in the list of
+acronyms and in the main glossary. To create the document do:
+\begin{prompt}
+latex sample-dual
+makeglossaries sample-dual
+latex sample-dual
+\end{prompt}
+
+\exitem{-langdict} This document
+illustrates how to use the glossaries package to create English
+to French and French to English dictionaries. To create the document
+do:
+\begin{prompt}
+latex sample-langdict
+makeglossaries sample-langdict
+latex sample-langdict
+\end{prompt}
+
+\exitem{xdy} This document illustrates
+how to use the \styfmt{glossaries} package with \gls{xindy} instead
+of \gls{makeindex}. The document uses UTF8 encoding (with the
+\sty{inputenc} package). The encoding is picked up by
+\gls{makeglossaries}. By default, this document will create a
+\gls{xindy} style file called \texttt{samplexdy.xdy}, but if you
+uncomment the lines
+\begin{verbatim}
+\setStyleFile{samplexdy-mc}
+\noist
+\GlsSetXdyLanguage{}
+\end{verbatim}
+it will set the style file to \texttt{samplexdy-mc.xdy} instead.
+This provides an additional letter group for entries starting with
+\qt{Mc} or \qt{Mac}. If you use \gls{makeglossaries} or
+\gls{makeglossaries-lite.lua}, you don't
+need to supply any additional information. If you don't use
+\gls*{makeglossaries}, you will need to specify the required
+information. Note that if you set the style file to
+\texttt{samplexdy-mc.xdy} you must also specify \ics{noist},
+otherwise the \styfmt{glossaries} package will overwrite
+\texttt{samplexdy-mc.xdy} and you will lose the \qt{Mc} letter
+group.
+
+To create the document do:
+\begin{prompt}
+latex samplexdy
+makeglossaries samplexdy
+latex samplexdy
+\end{prompt}
+If you don't have Perl installed then you can't use
+\gls{makeglossaries}, but you also can't use \gls{xindy}!
+However, if for some reason you want to call
+\gls{xindy} explicitly instead of using \gls{makeglossaries} (or
+\gls{makeglossaries-lite.lua}):
+\begin{itemize}
+\item if you are using the default style file \texttt{samplexdy.xdy}, then
+do (no line breaks):
+\begin{prompt}\raggedright
+xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+\end{prompt}
+\item if you are using \texttt{samplexdy-mc.xdy}, then do
+(no line breaks):
+\begin{prompt}\raggedright
+xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+\end{prompt}
+\end{itemize}
+
+\exitem{xdy2} This document illustrates
+how to use the \styfmt{glossaries} package where the location
+numbers don't follow a standard format. This example will only work
+with \gls{xindy}. To create the document do:
+\begin{prompt}
+pdflatex samplexdy2
+makeglossaries samplexdy2
+pdflatex samplexdy2
+\end{prompt}
+The explicit \gls{xindy} call is:
+\begin{prompt}\raggedright
+xindy -L english -C utf8 -I xindy -M samplexdy2 -t samplexdy2.glg -o samplexdy2.gls samplexdy2.glo
+\end{prompt}
+See \sectionref{sec:xindyloc} for further details.
+
+\exitem{xdy3} This document is like \samplefile{xdy} but uses the
+command \cs{Numberstring} from the \sty{fmtcount} package to
+format the page numbers.
+
+\exitem{utf8} This is another example
+that uses \gls{xindy}. Unlike \gls{makeindex},
+\gls{xindy} can cope with \glspl{nonlatinchar}. This
+document uses UTF8 encoding. To create the document do:
+\begin{prompt}
+latex sampleutf8
+makeglossaries sampleutf8
+latex sampleutf8
+\end{prompt}
+The explicit \gls{xindy} call is
+(no line breaks):
+\begin{prompt}\raggedright
+xindy -L english -C utf8 -I xindy -M sampleutf8 -t sampleutf8.glg -o sampleutf8.gls sampleutf8.glo
+\end{prompt}
+
+If you remove the \pkgopt{xindy} option from \texttt{sampleutf8.tex}
+and do:
+\begin{prompt}
+latex sampleutf8
+makeglossaries sampleutf8
+latex sampleutf8
+\end{prompt}
+or
+\begin{prompt}
+latex sampleutf8
+makeglossaries-lite sampleutf8
+latex sampleutf8
+\end{prompt}
+you will see that the entries that start with an \gls{exlatinchar}
+now appear in the symbols group, and the word \qt{man\oe uvre} is now
+after \qt{manor} instead of before it. If you want to explicitly
+call \gls{makeindex} (no line breaks):
+\begin{prompt}\raggedright
+makeindex -s sampleutf8.ist -t sampleutf8.glg -o sampleutf8.gls sampleutf8.glo
+\end{prompt}
+
+\exitem{-index} This document uses
+the \styfmt{glossaries} package to create both a glossary and an
+index. This requires two \gls{makeglossaries} (or
+\gls{makeglossaries-lite.lua}) calls to ensure the
+document is up to date:
+\begin{prompt}
+latex sample-index
+makeglossaries sample-index
+latex sample-index
+makeglossaries sample-index
+latex sample-index
+\end{prompt}
+
+\exitem{-newkeys} This document illustrates how add custom keys
+(using \cs{glsaddkey}).
+
+\exitem{-storage-abbr} This document illustrates how add custom
+storage keys (using \cs{glsaddstoragekey}).
+
+\exitem{-storage-abbr-desc} An extension of the previous example
+where the user needs to provide a~description.
+
+\exitem{-chap-hyperfirst} This document illustrates how to add
+a~custom key using \cs{glsaddstoragekey} and hook into the \glslike\
+and \glstextlike\ mechanism used to determine whether or not to
+hyperlink an entry.
+
+\exitem{-font-abbr} This document illustrates how to different fonts
+for abbreviations within the style.
+
+\exitem{-numberlist} This document illustrates how to reference the
+\gls{numberlist} in the document text. This requires an additional
+\LaTeX\ run:
+\begin{prompt}
+latex sample-numberlist
+makeglossaries sample-numberlist
+latex sample-numberlist
+latex sample-numberlist
+\end{prompt}
+
+\exitem{People} This document illustrates how you can hook into the
+standard sort mechanism to adjust the way the sort key is set. This
+requires an additional run to ensure the table of contents is
+up-to-date:
+\begin{prompt}
+latex samplePeople
+makeglossaries samplePeople
+latex samplePeople
+latex samplePeople
+\end{prompt}
+
+\exitem{Sort} This is another document that illustrates how to hook
+into the standard sort mechanism. An additional run is required to
+ensure the table of contents is up-to-date:
+\begin{prompt}
+latex sampleSort
+makeglossaries sampleSort
+latex sampleSort
+latex sampleSort
+\end{prompt}
+
+\exitem{-nomathhyper} This document illustrates how to selectively
+enable and disable entry hyperlinks in \ics{glsentryfmt}.
+
+\exitem{-entryfmt} This document illustrates how to change the
+way an entry is displayed in the text.
+
+\exitem{-prefix} This document illustrates the use of the
+\sty{glossaries-prefix} package. An additional run is required to
+ensure the table of contents is up-to-date:
+\begin{prompt}
+latex sample-prefix
+makeglossaries sample-prefix
+latex sample-prefix
+latex sample-prefix
+\end{prompt}
+
+\exitem{accsupp} This document
+uses the experimental \sty{glossaries-accsupp} package. The
+symbol is set to the replacement text. Note that some PDF
+viewers don't use the accessibility support. Information
+about the \styfmt{glossaries-accsupp} package can be found in
+\sectionref{sec:accsupp}.
+
+\exitem{-ignored} This document defines an ignored glossary for
+common terms that don't need a definition.
+
+\exitem{-entrycount} This document uses \ics{glsenableentrycount}
+and \ics{cgls} (described in \sectionref{sec:enableentrycount})
+so that acronyms only used once don't appear in the list of
+acronyms.
+\end{samplelist}
+
+\section{Dummy Entries for Testing}
+\label{sec:lipsum}
+
+In addition to the sample files described above, \sty{glossaries} also provides
+some files containing lorum ipsum dummy entries. These are provided
+for testing purposes and are on \TeX's path (in
+\texttt{tex\slash latex\slash glossaries\slash test-entries}) so they can be included
+via \ics{input} or \ics{loadglsentries}. The files are as follows:
+\begin{description}
+\item[example-glossaries-brief.tex] These entries all have brief
+descriptions. For example:
+\begin{verbatim}
+\newglossaryentry{lorem}{name={lorem},description={ipsum}}
+\end{verbatim}
+
+\item[example-glossaries-long.tex] These entries all have long
+descriptions. For example:
+\begin{verbatim}
+\newglossaryentry{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.}}
+\end{verbatim}
+
+\item[example-glossaries-multipar.tex] These entries all have
+multi-paragraph descriptions.
+
+\item[example-glossaries-symbols.tex] These entries all use the
+\gloskey{symbol} key. For example:
+\begin{verbatim}
+\newglossaryentry{alpha}{name={alpha},
+symbol={\ensuremath{\alpha}},
+description={Quisque ullamcorper placerat ipsum.}}
+\end{verbatim}
+
+\item[example-glossaries-symbolnames.tex] Similar to the previous
+file but the \gloskey{symbol} key isn't used. Instead the symbol
+is stored in the \gloskey{name} key. For example:
+\begin{verbatim}
+\newglossaryentry{sym.alpha}{sort={alpha},
+name={\ensuremath{\alpha}},
+description={Quisque ullamcorper placerat ipsum.}}
+\end{verbatim}
+
+\item[example-glossaries-images.tex] These entries use the
+\gloskey{user1} key to store the name of an image file. (The images
+are provided by the \sty{mwe} package and should be on \TeX's path.)
+One entry doesn't have an associated image to help test for a~missing key.
+
+\item[example-glossaries-acronym.tex] These entries are all
+abbreviations. For example:
+\begin{verbatim}
+\newacronym[type=\glsdefaulttype]{lid}{LID}{lorem ipsum
+dolor}
+\end{verbatim}
+
+\item[example-glossaries-acronym-desc.tex] These entries are all
+abbreviations that use the \gloskey{description} key.
+For example:
+\begin{verbatim}
+\newacronym[type=\glsdefaulttype,
+ description={fringilla a, euismod sodales,
+ sollicitudin vel, wisi}]{ndl}{NDL}{nam dui ligula}
+\end{verbatim}
+
+\item[example-glossaries-acronyms-lang.tex] These entries are all
+abbreviations, where some of them have a~translation supplied in the
+\gloskey{user1} key.
+For example:
+\begin{verbatim}
+\newacronym[type=\glsdefaulttype,user1={love itself}]
+ {li}{LI}{lorem ipsum}
+\end{verbatim}
+
+\item[example-glossaries-parent.tex] These are hierarchical entries
+where the child entries use the \gloskey{name} key.
+For example:
+\begin{verbatim}
+\newglossaryentry{sedmattis}{name={sed mattis},
+description={erat sit amet}
+
+\newglossaryentry{gravida}{parent={sedmattis},
+ name={gravida},description={malesuada}}
+\end{verbatim}
+
+\item[example-glossaries-childnoname.tex] These are hierarchical entries
+where the child entries don't use the \gloskey{name} key.
+For example:
+\begin{verbatim}
+\newglossaryentry{scelerisque}{name={scelerisque},
+ description={at}}
+\end{verbatim}
+
+\item[example-glossaries-cite.tex] These entries use the
+\gloskey{user1} key to store a citation key (or comma-separated list
+of citation keys). The citations are defined in \texttt{xampl.bib},
+which should be available on all modern \TeX\ distributions.
+One entry doesn't have an associated citation to help test for a~missing
+key.
+For example:
+\begin{verbatim}
+\newglossaryentry{fusce}{name={fusce},
+description={suscipit cursus sem},user1={article-minimal}}
+\end{verbatim}
+
+\item[example-glossaries-url.tex] These entries use the
+\gloskey{user1} key to store an URL associated with the entry.
+For example:
+\begin{verbatim}
+\newglossaryentry{aenean-url}{name={aenean},
+ description={adipiscing auctor est},
+ user1={http://uk.tug.org/}}
+\end{verbatim}
+\end{description}
+
+The sample file \texttt{glossary-lipsum-examples.tex} in the
+\texttt{doc\slash latex\slash glossaries\slash samples} directory
+uses all these files. See also
+\url{http://www.dickimaw-books.com/gallery/#glossaries}.
+The \sty{glossaries-extra} package provides additional test files.
+
+\section{Multi-Lingual Support}
+\label{sec:languages}
+
+As from version 1.17, the \styfmt{glossaries} package can be
+used with \gls{xindy} as well as \gls{makeindex}. If you
+are writing in a language that uses an \gls{exlatinalph} or
+\gls{nonlatinalph} it's best to use \opt3 (\gls*{xindy})
+or \opt4 (\gls{bib2gls})
+as \gls*{makeindex} (\opt2) is hard-coded for the non-extended
+\gls{latinalph} and \opt1 can performed limited ASCII comparisons.
+
+This means that with \optsor34 you are not restricted to the A,
+\ldots, Z letter groups. If you want to use \gls*{xindy}, remember
+to use the \pkgopt{xindy} package option. For example:
+\begin{verbatim}
+\documentclass[frenchb]{article}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+\usepackage[xindy]{glossaries}
+\end{verbatim}
+If you want to use \gls*{bib2gls}, you need to use the
+\pkgopt{record} option with \sty{glossaries-extra} and supply the
+definitions in \texttt{.bib} files. (See the \gls{bib2gls} user
+manual for further details.)
+
+\begin{important}
+Note that although a~\gls{nonlatinchar}, such as \'e, looks like a plain
+character in your \filetype{.tex} file, with standard \LaTeX\ it's actually a~macro and can therefore
+cause expansion problems. You may need to switch off the field
+expansions with \cs{glsnoexpandfields}. This issue doesn't occur
+with \XeLaTeX\ or Lua\LaTeX.
+\end{important}
+
+With \sty{inputenc}, if you use a~\gls{nonlatinchar} (or other expandable)
+character at the start of an entry name, you must place it in a group,
+or it will cause a problem for commands that convert the first letter
+to upper case (e.g.\ \ics{Gls}). For example:
+\begin{alltt}
+\verb|\newglossaryentry}{elite}{name={{|\'e\verb|}lite},|
+description=\verb|{select group or class}}|
+\end{alltt}
+(With newer versions of \sty{mfirstuc} and \sty{datatool-base} you
+may be able to omit this grouping.)
+For further details, see the \qt{UTF-8} section in the
+\sty{mfirstuc} user manual.
+
+If you are using \gls{xindy} or \gls{bib2gls}, the application needs
+to know the encoding of the \filetype{.tex} file. This information
+is added to the \filetype{.aux} file and can be picked up by
+\gls{makeglossaries} and \gls{bib2gls}. If you use
+\gls{xindy} explicitly instead of via \gls*{makeglossaries},
+you may need to specify the encoding using the \xdyopt{C}
+option. Read the \gls*{xindy} manual for further details of this
+option.
+
+As from v4.24, if you are writing in German (for example, using the \sty{ngerman}
+package\footnote{deprecated, use \styfmt{babel} instead} or \sty{babel} with the \pkgopt{ngerman} package option),
+and you want to use \gls{makeindex}['s] \mkidxopt{g} option, you'll
+need to change \gls{makeindex}['s] quote character using:
+\begin{definition}[\DescribeMacro\GlsSetQuote]
+\cs{GlsSetQuote}\marg{character}
+\end{definition}
+Note that \meta{character} may not be one of \verb"?" (question
+mark), \verb"|" (pipe) or \verb"!" (exclamation mark).
+For example:
+\begin{verbatim}
+\GlsSetQuote{+}
+\end{verbatim}
+This must be done before \ics{makeglossaries} and any entry
+definitions. It's only applicable for \app{makeindex}. This option
+in conjunction with \sty{ngerman} will also cause
+\app{makeglossaries} to use the \mkidxopt{g} switch when invoking
+\app{makeindex}.
+
+\begin{important}
+Be careful of \sty{babel}'s shorthands. These aren't switched
+on until the start of the document, so any entries defined
+in the preamble won't be able to use those shorthands.
+However, if you define the entries in the document and any
+of those shorthands happen to be special characters for
+\gls{makeindex} or \gls{xindy} (such as the double-quote)
+then this will interfere with code that tries to escape
+any of those characters that occur in the \gloskey{sort} key.
+\end{important}
+
+In general, it's best not to use \sty{babel}'s shorthands
+in entry definitions. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[ngerman]{babel}
+\usepackage{glossaries}
+
+\GlsSetQuote{+}
+
+\makeglossaries
+
+\newglossaryentry{rna}{name={ribonukleins\"aure},
+ sort={ribonukleins"aure},
+ description={eine Nukleins\"aure}}
+
+\begin{document}
+\gls{rna}
+
+\printglossaries
+\end{document}
+\end{verbatim}
+
+The \sty{ngerman} package has the shorthands on in the preamble, so
+they can be used if \cs{GlsSetQuote} has changed the \gls{makeindex}
+quote character. Example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[ngerman]{babel}
+\usepackage{glossaries}
+
+\GlsSetQuote{+}
+
+\makeglossaries
+
+\newglossaryentry{rna}{name={ribonukleins"aure},
+ description={eine Nukleins"aure}}
+
+\begin{document}
+\gls{rna}
+
+\printglossaries
+\end{document}
+\end{verbatim}
+
+\subsection{Changing the Fixed Names}
+\label{sec:fixednames}
+
+The fixed names are produced using the commands listed in
+\tableref{tab:predefinednames}. If you aren't using a language
+package such as \sty{babel} or \sty{polyglossia} that uses caption
+hooks, you can just redefine these commands as appropriate. If you
+are using \sty{babel} or \sty{polyglossia}, you need to use their
+caption hooks to change the defaults. See \urlref{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords}{changing
+the words babel uses} or read the \sty{babel} or \sty{polyglossia}
+documentation. If you have loaded \sty{babel}, then \sty{glossaries}
+will attempt to load \sty{translator}, unless you have used the
+\pkgopt{notranslate}, \pkgopt[false]{translate} or \pkgopt[babel]{translate}
+package options. If the \sty{translator} package is loaded, the
+translations are provided by dictionary files (for example,
+\texttt{glossaries-dictionary-English.dict}). See the
+\sty{translator} package for advice on changing translations provided by
+\sty{translator} dictionaries. If you can't work out how to modify
+these dictionary definitions, try switching to \sty{babel}'s
+interface using \pkgopt[babel]{translate}:
+\begin{verbatim}
+\documentclass[english,french]{article}
+\usepackage{babel}
+\usepackage[translate=babel]{glossaries}
+\end{verbatim}
+and then use \sty{babel}'s caption hook mechanism. Note that if you
+pass the language options directly to \sty{babel} rather that using
+the document class options or otherwise passing the same options to
+\sty{translator}, then \sty{translator} won't pick up the
+language and no dictionaries will be loaded and \sty{babel}'s
+caption hooks will be used instead.
+
+\begin{table}[htbp]
+\caption{Customised Text}
+\label{tab:predefinednames}
+\centering
+\setlength{\tabcolsep}{3pt}
+\begin{tabular}{@{}l>{\raggedright}p{0.3\linewidth}>{\raggedright}p{0.4\linewidth}@{}}
+\bfseries Command Name & \bfseries Translator Key Word &
+\bfseries Purpose\cr
+\ics{glossaryname} & \texttt{Glossary} & Title of the main glossary.\cr
+\ics{acronymname} & \texttt{Acronyms} & Title of the list of acronyms
+(when used with package option \pkgopt{acronym}).\cr
+\ics{entryname} & \texttt{Notation (glossaries)} &
+Header for first column in the glossary (for 2, 3 or 4 column glossaries
+that support headers).\cr
+\ics{descriptionname} & \texttt{Description (glossaries)} &
+Header for second column in the glossary (for 2, 3 or 4 column glossaries
+that support headers).\cr
+\ics{symbolname} & \texttt{Symbol (glossaries)} & Header for symbol
+column in the glossary for glossary styles that support this option.\cr
+\ics{pagelistname} & \texttt{Page List (glossaries)} &
+Header for page list column in the glossary for glossaries that support
+this option.\cr
+\ics{glssymbolsgroupname} & \texttt{Symbols (glossaries)} &
+Header for symbols section of the glossary for glossary styles that
+support this option.\cr
+\ics{glsnumbersgroupname} & \texttt{Numbers (glossaries)} & Header for
+numbers section of the glossary for glossary styles that support
+this option.
+\end{tabular}
+\end{table}
+
+As from version 4.12, multilingual support is provided by separate
+language modules that need to be installed in addition to installing
+the \styfmt{glossaries} package. You only need to install the
+modules for the languages that you require. If the language module
+has an unmaintained status, you can volunteer to take over the
+maintenance by contacting me at
+\url{http://www.dickimaw-books.com/contact.html}. The
+\sty{translator} dictionary files for \styfmt{glossaries} are now
+provided by the appropriate language module. For further details
+about information specific to a given language, please see the
+documentation for that language module.
+
+Examples of use:
+\begin{itemize}
+\item Using \sty{babel} and \sty{translator}:
+\begin{verbatim}
+\documentclass[english,french]{article}
+\usepackage{babel}
+\usepackage{glossaries}
+\end{verbatim}
+(\sty{translator} is automatically loaded).
+
+\item Using \sty{babel}:
+\begin{verbatim}
+\documentclass[english,french]{article}
+\usepackage{babel}
+\usepackage[translate=babel]{glossaries}
+\end{verbatim}
+(\sty{translator} isn't loaded).
+
+\item Using \sty{polyglossia}:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{polyglossia}
+\setmainlanguage{english}
+\usepackage{glossaries}
+\end{verbatim}
+
+\end{itemize}
+
+Due to the varied nature of glossaries, it's likely that the
+predefined translations may not be appropriate. If you are using the
+\sty{babel} package and the \styfmt{glossaries} package option \pkgopt[babel]{translate}, you need to be familiar with the advice given in
+\urlref{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=latexwords}{changing
+the words babel uses}. If you are using the \sty{translator}
+package, then you can provide your own dictionary with the necessary
+modifications (using \cs{deftranslation}) and load it using
+\cs{usedictionary}. If you simply want to change the title of a
+glossary, you can use the \gloskey[printglossary]{title} key in
+commands like \cs{printglossary} (but not the iterative commands
+like \cs{printglossaries}).
+
+\begin{important}
+Note that the \sty{translator} dictionaries are loaded at the beginning of the
+document, so it won't have any effect if you put \cs{deftranslation}
+in the preamble. It should be put in your personal dictionary
+instead (as in the example below). See the \sty{translator}
+documentation for further details. (Now with \sty{beamer}
+documentation.)
+\end{important}
+
+Your custom dictionary doesn't have to be just a translation from
+English to another language. You may prefer to have a dictionary for
+a particular type of document. For example, suppose your
+institution's in-house reports have to have the glossary labelled as
+\qt{Nomenclature} and the page list should be labelled
+\qt{Location}, then you can create a file called, say,
+\begin{verbatim}
+myinstitute-glossaries-dictionary-English.dict
+\end{verbatim}
+that contains the following:
+\begin{verbatim}
+\ProvidesDictionary{myinstitute-glossaries-dictionary}{English}
+\deftranslation{Glossary}{Nomenclature}
+\deftranslation{Page List (glossaries)}{Location}
+\end{verbatim}
+You can now load it using:
+\begin{verbatim}
+\usedictionary{myinstitute-glossaries-dictionary}
+\end{verbatim}
+(Make sure that \texttt{myinstitute-glossaries-dictionary-English.dict}
+can be found by \TeX.) If you want to share your custom dictionary,
+you can upload it to \href{http://www.ctan.org/}{CTAN}.
+
+If you are using \sty{babel} and don't want to use the
+\sty{translator} interface, you can use the package
+option \pkgopt[babel]{translate}. For example:
+\begin{verbatim}
+\documentclass[british]{article}
+
+\usepackage{babel}
+\usepackage[translate=babel]{glossaries}
+
+\addto\captionsbritish{%
+ \renewcommand*{\glossaryname}{List of Terms}%
+ \renewcommand*{\acronymname}{List of Acronyms}%
+}
+\end{verbatim}
+
+Note that \gls{xindy} and \gls{bib2gls} provide much better multi-lingual support
+than \gls{makeindex}, so I~recommend that you use \optsor34
+if you have glossary entries that contain
+\glspl{nonlatinchar}. See \sectionref{sec:xindy} for further
+details on \gls{xindy}, and see the \gls{bib2gls} user manual for
+further details of that application.
+
+\subsubsection{Creating a New Language Module}
+\label{sec:newlang}
+
+The \styfmt{glossaries} package now uses the \sty{tracklang} package
+to determine which language modules need to be loaded. If you want
+to create a new language module, you should first read the
+\sty{tracklang} documentation.
+
+To create a new language module, you need to at least create two
+files: \texttt{glossaries-}\meta{lang}\texttt{.ldf} and
+\texttt{glossaries-dictionary-}\meta{Lang}\texttt{.dict} where
+\meta{lang} is the root language name (for example,
+\texttt{english}) and \meta{Lang} is the language name used by
+\sty{translator} (for example, \texttt{English}).
+
+Here's an example of \texttt{glossaries-dictionary-English.dict}:
+\begin{verbatim}
+\ProvidesDictionary{glossaries-dictionary}{English}
+
+\providetranslation{Glossary}{Glossary}
+\providetranslation{Acronyms}{Acronyms}
+\providetranslation{Notation (glossaries)}{Notation}
+\providetranslation{Description (glossaries)}{Description}
+\providetranslation{Symbol (glossaries)}{Symbol}
+\providetranslation{Page List (glossaries)}{Page List}
+\providetranslation{Symbols (glossaries)}{Symbols}
+\providetranslation{Numbers (glossaries)}{Numbers}
+\end{verbatim}
+You can use this as a template for your dictionary file. Change
+\texttt{English} to the \sty{translator} name for your language
+(so that it matches the file name
+\texttt{glossaries-dictionary-}\meta{Lang}\texttt{.dict})
+and, for each \cs{providetranslation}, change the second argument to
+the appropriate translation.
+
+Here's an example of \texttt{glossaries-english.ldf}:
+\begin{verbatim}
+\ProvidesGlossariesLang{english}
+
+\glsifusedtranslatordict{English}
+{%
+ \addglossarytocaptions{\CurrentTrackedLanguage}%
+ \addglossarytocaptions{\CurrentTrackedDialect}%
+}
+{%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \newcommand*{\glossariescaptionsenglish}{%
+ \renewcommand*{\glossaryname}{\textenglish{Glossary}}%
+ \renewcommand*{\acronymname}{\textenglish{Acronyms}}%
+ \renewcommand*{\entryname}{\textenglish{Notation}}%
+ \renewcommand*{\descriptionname}{\textenglish{Description}}%
+ \renewcommand*{\symbolname}{\textenglish{Symbol}}%
+ \renewcommand*{\pagelistname}{\textenglish{Page List}}%
+ \renewcommand*{\glssymbolsgroupname}{\textenglish{Symbols}}%
+ \renewcommand*{\glsnumbersgroupname}{\textenglish{Numbers}}%
+ }%
+ }%
+ {%
+ \newcommand*{\glossariescaptionsenglish}{%
+ \renewcommand*{\glossaryname}{Glossary}%
+ \renewcommand*{\acronymname}{Acronyms}%
+ \renewcommand*{\entryname}{Notation}%
+ \renewcommand*{\descriptionname}{Description}%
+ \renewcommand*{\symbolname}{Symbol}%
+ \renewcommand*{\pagelistname}{Page List}%
+ \renewcommand*{\glssymbolsgroupname}{Symbols}%
+ \renewcommand*{\glsnumbersgroupname}{Numbers}%
+ }%
+ }%
+ \ifcsdef{captions\CurrentTrackedDialect}
+ {%
+ \csappto{captions\CurrentTrackedDialect}%
+ {%
+ \glossariescaptionsenglish
+ }%
+ }%
+ {%
+ \ifcsdef{captions\CurrentTrackedLanguage}
+ {
+ \csappto{captions\CurrentTrackedLanguage}%
+ {%
+ \glossariescaptionsenglish
+ }%
+ }%
+ {%
+ }%
+ }%
+ \glossariescaptionsenglish
+}
+\renewcommand*{\glspluralsuffix}{s}
+\renewcommand*{\glsacrpluralsuffix}{\glspluralsuffix}
+\renewcommand*{\glsupacrpluralsuffix}{\glstextup{\glspluralsuffix}}
+\end{verbatim}
+This is a somewhat longer file, but again you can use it as a
+template. Replace \texttt{English} with the \sty{translator}
+language label \meta{Lang} used for the dictionary file and
+replace \texttt{english} with the root language name \meta{lang}. Within the
+definition of \cs{glossariescaptions}\meta{lang}, replace the
+English text (such as \qt{Glossaries}) with the appropriate
+translation.
+
+\label{pluralsuffix}%
+\textbf{Note:} the suffixes used to generate the plural forms when
+the plural hasn't been specified are given by
+\cs{glspluralsuffix} (for general entries) and
+\cs{glsupacrpluralsuffix} for acronyms where the suffix needs to be
+set using \cs{glstextup} to counteract the effects of \cs{textsc}
+and \cs{glsacrpluralsuffix} for other acronym styles. There's no
+guarantee when these commands will be expanded. They may be expanded
+on definition or they may be expanded on use, depending on the
+\styfmt{glossaries} configuration.
+
+\begin{important}
+Therefore these plural suffix command definitions
+aren't included in the caption mechanism as that's typically not switched on
+until the start of the document. \textbf{This means that the suffix in
+effect will be for the last loaded language that redefined these
+commands.} It's best to initialise these commands to the most common
+suffix required in your document and use the \gloskey{plural},
+\gloskey{longplural}, \gloskey{shortplural} etc keys to override
+exceptions.
+\end{important}
+
+If you want to add a regional variation, create a file called
+\texttt{glossaries-}\meta{iso lang}\texttt{-}\meta{iso
+country}\texttt{.ldf}, where \meta{iso lang} is the ISO language
+code and \meta{iso country} is the ISO country code. For example,
+\texttt{glossaries-en-GB.ldf}. This file can load the root
+language file and make the appropriate changes, for example:
+\begin{verbatim}
+ \ProvidesGlossariesLang{en-GB}
+ \RequireGlossariesLang{english}
+ \glsifusedtranslatordict{British}
+ {%
+ \addglossarytocaptions{\CurrentTrackedLanguage}%
+ \addglossarytocaptions{\CurrentTrackedDialect}%
+ }
+ {%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ % Modify \glossariescaptionsenglish as appropriate for
+ % polyglossia
+ }%
+ {%
+ % Modify \glossariescaptionsenglish as appropriate for
+ % non-polyglossia
+ }%
+ }
+\end{verbatim}
+
+If the translations includes \glspl{nonlatinchar}, it's necessary to
+provide code that's independent of the input encoding. Remember that
+while some users may use UTF-8, others may use Latin-1 or any other
+supported encoding, but while users won't appreciate you enforcing
+your preference on them, it's useful to provide a UTF-8 version for
+\XeLaTeX\ users.
+
+The \texttt{glossaries-irish.ldf} file provides this as follows:
+\begin{verbatim}
+\ProvidesGlossariesLang{irish}
+
+\glsifusedtranslatordict{Irish}
+{%
+ \addglossarytocaptions{\CurrentTrackedLanguage}%
+ \addglossarytocaptions{\CurrentTrackedDialect}%
+}
+{%
+ \ifdefstring{\inputencodingname}{utf8}
+ {\input{glossaries-irish-utf8.ldf}}%
+ {%
+ \ifdef{\XeTeXinputencoding}% XeTeX defaults to UTF-8
+ {\input{glossaries-irish-utf8.ldf}}%
+ {\input{glossaries-irish-noenc.ldf}}
+ }
+ \ifcsdef{captions\CurrentTrackedDialect}
+ {%
+ \csappto{captions\CurrentTrackedDialect}%
+ {%
+ \glossariescaptionsirish
+ }%
+ }%
+ {%
+ \ifcsdef{captions\CurrentTrackedLanguage}
+ {
+ \csappto{captions\CurrentTrackedLanguage}%
+ {%
+ \glossariescaptionsirish
+ }%
+ }%
+ {%
+ }%
+ }%
+ \glossariescaptionsirish
+}
+\end{verbatim}
+(Again you can use this as a template. Replace \texttt{irish} with
+your root language label and \texttt{Irish} with the
+\sty{translator} dictionary label.)
+
+There are now two extra files: \texttt{glossaries-irish-noenc.ldf}
+and \texttt{glossaries-irish-utf8.ldf}.
+
+These both define \cs{glossariescaptionsirish} but the \texttt{*-noenc.ldf} uses
+\LaTeX\ accent commands:
+\begin{verbatim}
+\@ifpackageloaded{polyglossia}%
+{%
+ \newcommand*{\glossariescaptionsirish}{%
+ \renewcommand*{\glossaryname}{\textirish{Gluais}}%
+ \renewcommand*{\acronymname}{\textirish{Acrainmneacha}}%
+ \renewcommand*{\entryname}{\textirish{Ciall}}%
+ \renewcommand*{\descriptionname}{\textirish{Tuairisc}}%
+ \renewcommand*{\symbolname}{\textirish{Comhartha}}%
+ \renewcommand*{\glssymbolsgroupname}{\textirish{Comhartha\'{\i}}}%
+ \renewcommand*{\pagelistname}{\textirish{Leathanaigh}}%
+ \renewcommand*{\glsnumbersgroupname}{\textirish{Uimhreacha}}%
+ }%
+}%
+{%
+ \newcommand*{\glossariescaptionsirish}{%
+ \renewcommand*{\glossaryname}{Gluais}%
+ \renewcommand*{\acronymname}{Acrainmneacha}%
+ \renewcommand*{\entryname}{Ciall}%
+ \renewcommand*{\descriptionname}{Tuairisc}%
+ \renewcommand*{\symbolname}{Comhartha}%
+ \renewcommand*{\glssymbolsgroupname}{Comhartha\'{\i}}%
+ \renewcommand*{\pagelistname}{Leathanaigh}%
+ \renewcommand*{\glsnumbersgroupname}{Uimhreacha}%
+ }%
+}
+\end{verbatim}
+whereas the \texttt{*-utf8.ldf} replaces the accent commands with
+the appropriate UTF-8 characters.
+
+
+\section{Generating the Associated Glossary Files}
+\label{sec:makeglossaries}
+
+\begin{important}
+This section is only applicable if you have chosen \optsor23. You can
+ignore this section if you have chosen any of the other options. If you want to
+alphabetically sort your entries always remember to use the
+\gloskey{sort} key if the \gloskey{name} contains any \LaTeX\ commands.
+\end{important}
+
+If this section seriously confuses you, and you can't work out how
+to run external tools like \gls{makeglossaries} or \gls{makeindex}, you can try using
+the \pkgopt{automake} package option, described in
+\sectionref{sec:pkgopts-sort}, but you will need \TeX's shell escape
+enabled.
+
+In order to generate a sorted glossary with compact
+\glspl{numberlist}, it is necessary to use an external
+\gls{indexingapp} as an intermediate step (unless you have chosen
+\opt1, which uses \TeX\ to do the sorting or \opt5, which doesn't
+perform any sorting). It is this application
+that creates the file containing the code required to typeset the
+glossary. \textbf{If this step is omitted, the glossaries will not
+appear in your document.} The two \glspl*{indexingapp} that are most
+commonly used with \LaTeX\ are \gls{makeindex} and \gls{xindy}. As
+from version 1.17, the \styfmt{glossaries} package can be used with
+either of these applications. Previous versions were designed to be
+used with \gls*{makeindex} only. With the \sty{glossaries-extra} package, you
+can also use \gls{bib2gls} as the indexing application. (See
+the \sty{glossaries-extra} and \gls{bib2gls} user manuals for
+further details.) Note that \gls*{xindy} and \gls*{bib2gls} have much
+better multi-lingual support than \gls*{makeindex}, so \gls*{xindy}
+or \gls*{bib2gls} are recommended if you're not writing in English.
+Commands that only have an effect when \gls*{xindy} is used are
+described in \sectionref{sec:xindy}.
+
+\begin{important}
+This is a multi-stage process, but there are methods of automating
+document compilation using applications such as \app{latexmk} and
+\app{arara}. With \app{arara} you can just add special comments to
+your document source:
+\begin{alltt}
+\% arara: pdflatex
+\% arara: makeglossaries
+\% arara: pdflatex
+\end{alltt}
+With \app{latexmk} you need to set up the required dependencies.
+\end{important}
+
+The \styfmt{glossaries} package comes with the Perl script
+\gls{makeglossaries} which will run \gls{makeindex} or \gls{xindy}
+on all the glossary files using a customized style file (which is
+created by \ics{makeglossaries}). See
+\sectionref{sec:makeglossariesapp} for further
+details. Perl is stable, cross-platform, open source software that
+is used by a number of \TeX-related applications (including
+\gls*{xindy} and \app{latexmk}). Most Unix-like
+operating systems come with a~Perl interpreter. \TeX~Live also comes
+with a~Perl interpreter. MiK\TeX\ doesn't come with a~Perl
+interpreter so if you are a~Windows MiK\TeX\ user you will need to
+install Perl if you want to use \gls{makeglossaries} or \gls{xindy}.
+Further information is available at \url{http://www.perl.org/about.html}
+and
+\href{http://tex.stackexchange.com/questions/158796/miktex-and-perl-scripts-and-one-python-script}{MiKTeX and Perl scripts (and one Python script)}.
+
+The advantages of using \gls*{makeglossaries}:
+\begin{itemize}
+\item It automatically detects whether to use \gls*{makeindex} or
+\gls*{xindy} and sets the relevant application switches.
+
+\item One call of \gls*{makeglossaries} will run
+\gls*{makeindex}\slash\gls*{xindy} for each glossary type.
+
+\item If things go wrong, \gls{makeglossaries} will scan the
+messages from \gls{makeindex} or \gls{xindy} and attempt to diagnose
+the problem in relation to the \styfmt{glossaries} package. This
+will hopefully provide more helpful messages in some cases. If it
+can't diagnose the problem, you will have to read the relevant transcript
+file and see if you can work it out from the \gls*{makeindex} or
+\gls*{xindy} messages.
+
+\item If \gls{makeindex} warns about multiple encap values,
+\gls{makeglossaries} will detect this and attempt to correct the
+problem.\footnote{Added to version \gls{makeglossaries} 2.18.} This
+correction is only provided by \gls{makeglossaries} when
+\gls{makeindex} is used since \gls{xindy} uses the order of the
+attributes list to determine which format should take precedence.
+(See \cs{GlsAddXdyAttribute} in \sectionref{sec:xindyloc}.)
+
+\end{itemize}
+
+As from version 4.16, the \styfmt{glossaries} package also comes
+with a~Lua script called \gls{makeglossaries-lite.lua}. This is a
+\emph{trimmed-down} alternative to the \gls{makeglossaries} Perl
+script. It doesn't have some of the options that the Perl version
+has and it doesn't attempt to diagnose any problems, but since
+modern \TeX\ distributions come with Lua\TeX\ (and therefore have
+a~Lua interpreter) you don't need to install anything else in order
+to use \gls{makeglossaries-lite.lua} so it's an alternative to
+\gls{makeglossaries} if you want to use \opt2 (\gls{makeindex}).
+
+If things go wrong and you can't work out why your glossaries
+aren't being generated correctly, you can use
+\gls{makeglossariesgui} as a diagnostic tool. Once you've
+fixed the problem, you can then go back to using
+\gls{makeglossaries} or \gls{makeglossaries-lite.lua}.
+
+Whilst I strongly recommended that you use the \gls{makeglossaries}
+Perl script or the \gls{makeglossaries-lite.lua} Lua script, it is
+possible to use the \styfmt{glossaries} package without using those
+applications. However, note that some commands and package options
+have no effect if you explicitly run \gls{makeindex}\slash\gls{xindy}.
+These are listed in \tableref{tab:makeglossariesCmds}.
+
+\begin{important}
+If you are choosing not to use \gls*{makeglossaries} because you
+don't want to install Perl, you will only be able to use
+\gls*{makeindex} as \gls*{xindy} also requires Perl. (Other useful
+Perl scripts include \appfmt{epstopdf} and \appfmt{latexmk}, so it's
+well-worth the effort to install Perl.)
+\end{important}
+
+Note that if any of your entries use an entry
+that is not referenced outside the glossary, you will need to
+do an additional \gls{makeglossaries}, \gls{makeindex}
+or \gls{xindy} run, as appropriate. For example,
+suppose you have defined the following entries:\footnote{As from
+v3.01 \ics{gls} is no longer fragile and doesn't need protecting.}
+\begin{verbatim}
+\newglossaryentry{citrusfruit}{name={citrus fruit},
+description={fruit of any citrus tree. (See also
+\gls{orange})}}
+
+\newglossaryentry{orange}{name={orange},
+description={an orange coloured fruit.}}
+\end{verbatim}
+and suppose you have \verb|\gls{citrusfruit}| in your document
+but don't reference the \texttt{orange} entry, then the
+\texttt{orange} entry won't appear in your glossary until
+you first create the glossary and then do another run
+of \gls{makeglossaries}, \gls{makeindex} or \gls{xindy}.
+For example, if the document is called \texttt{myDoc.tex}, then
+you must do:
+\begin{prompt}
+latex myDoc
+makeglossaries myDoc
+latex myDoc
+makeglossaries myDoc
+latex myDoc
+\end{prompt}
+(Note that if you use \gls{glossaries-extra}, this will be done
+automatically for you if the \pkgoptfmt{indexcrossrefs} feature is
+enabled. See the \gls*{glossaries-extra} user guide for further
+details.)
+
+Likewise, an additional \gls{makeglossaries} and \LaTeX\ run
+may be required if the document pages shift with re-runs. For
+example, if the page numbering is not reset after the table of
+contents, the insertion of the table of contents on the second
+\LaTeX\ run may push glossary entries across page boundaries, which
+means that the \glspl{numberlist} in the glossary may
+need updating.
+
+The examples in this document assume that you are accessing
+\gls{makeglossaries}, \gls{xindy} or \gls{makeindex} via a terminal.
+Windows users can use the MSDOS Prompt which is usually accessed via
+the \menu{Start}\submenu{All Programs} menu or
+\menu{Start}\submenu{All Programs}\submenu{Accessories} menu.
+
+Alternatively, your text editor may have the facility to create a
+function that will call the required application. See
+\href{https://www.dickimaw-books.com/latex/buildglossaries/}{Incorporating
+makeglossaries or makeglossaries-lite or bib2gls into the document
+build}.
+
+If any problems occur, remember to check the transcript files
+(e.g.\ \filetype{.glg} or \filetype{.alg}) for messages.
+
+\begin{table}[htbp]
+\caption[Commands and package options that have no effect when
+using xindy or makeindex explicitly]{Commands and package options that have no effect when
+using \gls{xindy} or \gls{makeindex} explicitly}
+\label{tab:makeglossariesCmds}
+\vskip\baselineskip
+\begin{tabular}{@{}lll@{}}
+\bfseries Command or Package Option & \gls{makeindex} &
+\gls{xindy}\\
+\pkgopt[letter]{order} & use \mkidxopt{l} &
+ use \xdyopt{M}\texttt{ ord/letorder}\\
+\pkgopt[word]{order} & default & default\\
+\pkgopt{xindy}=\{\pkgoptfmt{language=}\meta{lang}\pkgoptfmt{,codename=}\meta{code}\} &
+N/A & use \xdyopt{L} \meta{lang} \xdyopt{C} \meta{code}\\
+\ics{GlsSetXdyLanguage}\marg{lang} & N/A &
+use \xdyopt{L} \meta{lang}\\
+\ics{GlsSetXdyCodePage}\marg{code} & N/A &
+use \xdyopt{C} \meta{code}
+\end{tabular}
+\par
+\end{table}
+
+
+\subsection{Using the makeglossaries Perl Script}
+\label{sec:makeglossariesapp}
+
+The \gls{makeglossaries} script picks up the relevant information
+from the auxiliary (\filetype{.aux}) file and will either call
+\gls{xindy} or \gls{makeindex}, depending on the supplied
+information. Therefore, you only need to pass the document's name
+without the extension to \gls*{makeglossaries}. For example, if your
+document is called \texttt{myDoc.tex}, type the following in your
+terminal:
+\begin{prompt}
+latex myDoc
+makeglossaries myDoc
+latex myDoc
+\end{prompt}
+You may need to explicitly load \gls{makeglossaries} into Perl:
+\begin{prompt}
+perl makeglossaries myDoc
+\end{prompt}
+
+Windows users: \TeX~Live on Windows has its own internal Perl
+interpreter and provides \texttt{makeglossaries.exe} as a~convenient
+wrapper for the \gls{makeglossaries} Perl script. MiKTeX also
+provides a~wrapper \texttt{makeglossaries.exe} but doesn't provide
+a~Perl interpreter, which is still required even if you run MiKTeX's
+\texttt{makeglossaries.exe}, so with MiKTeX you'll need to install
+Perl.\footnote{The batch file \texttt{makeglossaries.bat} has been
+removed since the \TeX\ distributions for Windows provide
+\texttt{makeglossaries.exe}.} There's more information about this at
+\url{http://tex.stackexchange.com/q/158796/19862} on the TeX.SX
+site.
+
+The \gls{makeglossaries} script attempts to fork the
+\gls{makeindex}\slash\gls{xindy} process using \texttt{open()} on the
+piped redirection \verb"2>&1 |" and parses the processor output to
+help diagnose problems. If this method fails \gls{makeglossaries}
+will print an \qt{Unable to fork} warning and will retry without
+redirection. If you run \gls{makeglossaries} on an operating system
+that doesn't support this form of redirection, then you can use the
+\mkglsopt{Q} switch to suppress this warning or you can use the
+\mkglsopt{k} switch to make \gls{makeglossaries} automatically use
+the fallback method without attempting the redirection. Without this
+redirection, the \mkglsopt{q} (quiet) switch doesn't work as well.
+
+You can specify in which directory the \filetype{.aux},
+\filetype{.glo} etc files are located using the \texttt{-d} switch.
+For example:
+\begin{prompt}
+pdflatex -output-directory myTmpDir myDoc
+makeglossaries -d myTmpDir myDoc
+\end{prompt}
+Note that \gls*{makeglossaries} assumes by default that
+\gls*{makeindex}\slash\gls*{xindy} is on your operating system's
+path. If this isn't the case, you can specify the full pathname
+using \mkglsopt{m} \meta{path/to/makeindex} for \gls*{makeindex}
+or \mkglsopt{x} \meta{path/to/xindy} for \gls*{xindy}.
+
+As from \gls{makeglossaries} v2.18, if you are using
+\gls{makeindex}, there's a check for \gls*{makeindex}['s] multiple
+encap warning. This is where different encap values (location formats) are
+used on the same location for the same entry. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\begin{document}
+\gls{sample}, \gls[format=textbf]{sample}.
+\printglossaries
+\end{document}
+\end{verbatim}
+If you explicitly use \gls{makeindex}, this will cause a warning and
+the location list will be \qt{1, \textbf{1}}. That is, the page
+number will be repeated with each format. As from v2.18,
+\gls{makeglossaries} will check for this warning and, if found, will
+attempt to correct the problem by removing duplicate locations and
+retrying. There's no similar check for \gls{xindy} as \gls*{xindy}
+won't produce any warning and will simply discard duplicates.
+
+The \gls{makeglossaries} script contains POD (Plain Old
+Documentation). If you want, you can create a man page for
+\gls*{makeglossaries} using \app{pod2man} and move the
+resulting file onto the man path. Alternatively do
+\texttt{makeglossaries -{}-help} for a list of all options or
+\texttt{makeglossaries -{}-version} for the version number.
+
+\begin{important}
+When upgrading the \styfmt{glossaries} package, make sure you also
+upgrade your version of \gls{makeglossaries}. The current version is
+4.41.
+\end{important}
+
+\subsection{Using the makeglossaries-lite Lua Script}
+\label{sec:makeglossarieslua}
+
+The Lua alternative to the \gls{makeglossaries} Perl script requires
+a~Lua interpreter, which should already be available if you have
+a~modern \TeX\ distribution that includes Lua\TeX. Lua is
+a~light-weight, cross-platform scripting language, but because it's
+light-weight it doesn't have the full-functionality of heavy-weight
+scripting languages, such as Perl. The \gls{makeglossaries-lite.lua}
+script is therefore limited by this and some of the options
+available to the \gls{makeglossaries} Perl script aren't available
+here. (In particular the \mkglsopt{d} option.)
+
+\begin{important}
+Note that \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, so you may not need to
+supply the extension.
+\end{important}
+
+The \gls{makeglossaries-lite.lua} script can be invoked in the same way
+as \gls{makeglossaries}. For example, if your document is called
+\texttt{myDoc.tex}, then do
+\begin{prompt}
+makeglossaries-lite.lua myDoc
+\end{prompt}
+or
+\begin{prompt}
+makeglossaries-lite myDoc
+\end{prompt}
+
+\emph{Some} of the options available with \gls{makeglossaries} are
+also available with \gls{makeglossaries-lite.lua}. For a complete list of
+available options, do
+\begin{prompt}
+makeglossaries-lite.lua -{}-help
+\end{prompt}
+
+
+\subsection[Using xindy explicitly (Option~3)]{Using
+\gls{xindy} explicitly (\ifpdf \opt3\else Option 3\fi)}
+\label{sec:xindyapp}
+
+\Gls{xindy} comes with \TeX~Live. It has also been added
+to Mik\TeX, but if you don't have it installed, see
+\href{http://tex.stackexchange.com/questions/71167/how-to-use-xindy-with-miktex}{How
+to use Xindy with MikTeX} on
+\urlfootref{http://www.stackexchange.com/}{\TeX\ on StackExchange}.
+
+If you want to use \gls{xindy} to process the glossary
+files, you must make sure you have used the
+\pkgopt{xindy} package option:
+\begin{verbatim}
+\usepackage[xindy]{glossaries}
+\end{verbatim}
+This is required regardless of whether you use \gls{xindy}
+explicitly or whether it's called implicitly via applications such
+as \gls{makeglossaries}. This causes the glossary
+entries to be written in raw \gls*{xindy} format, so you need to
+use \xdyopt{I}\texttt{ xindy} \emph{not} \xdyopt{I}\texttt{ tex}.
+
+To run \gls{xindy} type the following in your terminal
+(all on one line):
+\begin{prompt}
+xindy -L \meta{language} -C \meta{encoding} -I xindy -M \meta{style} -t \meta{base}.glg -o \meta{base}.gls \meta{base}.glo
+\end{prompt}
+where \meta{language} is the required language name, \meta{encoding}
+is the encoding, \meta{base} is the name of the document without the
+\filetype{.tex} extension and \meta{style} is the name of the
+\gls{xindy} style file without the \filetype{.xdy} extension.
+The default name for this style file is \meta{base}\filetype{.xdy}
+but can be changed via \ics{setStyleFile}\marg{style}. You may need
+to specify the full path name depending on the current working
+directory. If any of the file names contain spaces, you must delimit
+them using double-quotes.
+
+For example, if your document is called \texttt{myDoc.tex} and
+you are using UTF8 encoding in English, then type the
+following in your terminal:
+\begin{prompt}
+xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.glg -o myDoc.gls myDoc.glo
+\end{prompt}
+
+Note that this just creates the main glossary. You need to do
+the same for each of the other glossaries (including the
+list of acronyms if you have used the \pkgopt{acronym}
+package option), substituting \filetype{.glg}, \filetype{.gls}
+and \filetype{.glo} with the relevant extensions. For example,
+if you have used the \pkgopt{acronym} package option, then
+you would need to do:
+\begin{prompt}
+xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.alg -o myDoc.acr myDoc.acn
+\end{prompt}
+For additional glossaries, the extensions are those supplied
+when you created the glossary with \ics{newglossary}.
+
+Note that if you use \gls{makeglossaries} instead, you can
+replace all those calls to \gls{xindy} with just one call
+to \gls*{makeglossaries}:
+\begin{prompt}
+makeglossaries myDoc
+\end{prompt}
+Note also that some commands and package options have no effect if
+you use \gls{xindy} explicitly instead of using
+\gls*{makeglossaries}. These are listed in
+\tableref{tab:makeglossariesCmds}.
+
+
+\subsection[Using makeindex explicitly (Option~2)]{Using
+\gls{makeindex} explicitly (\ifpdf \opt2\else Option 2\fi)}
+\label{sec:makeindexapp}
+
+If you want to use \gls{makeindex} explicitly, you must
+make sure that you haven't used the \pkgopt{xindy} package
+option or the glossary entries will be written in the wrong
+format. To run \gls*{makeindex}, type the following in
+your terminal:
+\begin{prompt}
+makeindex -s \meta{style}.ist -t \meta{base}.glg -o \meta{base}.gls \meta{base}.glo
+\end{prompt}
+where \meta{base} is the name of your document without the
+\filetype{.tex} extension and \meta{style}\filetype{.ist} is the
+name of the \gls{makeindex} style file. By default, this is
+\meta{base}\filetype{.ist}, but may be changed via
+\ics{setStyleFile}\marg{style}. Note that there are other options,
+such as \mkidxopt{l} (letter ordering). See the \gls*{makeindex}
+manual for further details.
+
+For example, if your document is called \texttt{myDoc.tex}, then
+type the following at the terminal:
+\begin{prompt}
+makeindex -s myDoc.ist -t myDoc.glg -o myDoc.gls myDoc.glo
+\end{prompt}
+Note that this only creates the main glossary. If you have
+additional glossaries (for example, if you have used the
+\pkgopt{acronym} package option) then you must call
+\gls{makeindex} for each glossary, substituting
+\filetype{.glg}, \filetype{.gls} and \filetype{.glo} with the
+relevant extensions. For example, if you have used the
+\pkgopt{acronym} package option, then you need to type the
+following in your terminal:
+\begin{prompt}
+makeindex -s myDoc.ist -t myDoc.alg -o myDoc.acr myDoc.acn
+\end{prompt}
+For additional glossaries, the extensions are those supplied
+when you created the glossary with \ics{newglossary}.
+
+Note that if you use \gls{makeglossaries} instead, you can
+replace all those calls to \gls{makeindex} with just one call
+to \gls*{makeglossaries}:
+\begin{prompt}
+makeglossaries myDoc
+\end{prompt}
+Note also that some commands and package options have no effect if
+you use \gls*{makeindex} explicitly instead of using
+\gls{makeglossaries}. These are listed in
+\tableref{tab:makeglossariesCmds}.
+
+
+\subsection{Note to Front-End and Script Developers}
+\label{sec:notedev}
+
+The information needed to determine whether to use \gls{xindy}
+or \gls{makeindex} and the information needed to call those
+applications is stored in the auxiliary file. This information can
+be gathered by a front-end, editor or script to make the glossaries
+where appropriate. This section describes how the information is
+stored in the auxiliary file.
+
+The file extensions used by each defined glossary are given by
+\begin{definition}[\DescribeMacro{\@newglossary}]
+\cs{@newglossary}\marg{label}\marg{log}\marg{out-ext}\marg{in-ext}
+\end{definition}
+where \meta{in-ext} is the extension of the
+\emph{\gls{indexingapp}['s]} input file (the output file from the
+\styfmt{glossaries} package's point of view), \meta{out-ext} is the
+extension of the \emph{\gls*{indexingapp}['s]} output file (the
+input file from the \styfmt{glossaries} package's point of view) and
+\meta{log} is the extension of the \gls*{indexingapp}['s] transcript
+file. The label for the glossary is also given for information
+purposes only, but is not required by the \glspl*{indexingapp}. For
+example, the information for the default main glossary is written
+as:
+\begin{verbatim}
+\@newglossary{main}{glg}{gls}{glo}
+\end{verbatim}
+
+The \gls{indexingapp}['s] style file is specified by
+\begin{definition}[\DescribeMacro{\@istfilename}]
+\cs{@istfilename}\marg{filename}
+\end{definition}
+The file extension indicates whether to use \gls{makeindex}
+(\filetype{.ist}) or \gls{xindy} (\filetype{.xdy}). Note that
+the glossary information is formatted differently depending on
+which \gls*{indexingapp} is supposed to be used, so it's
+important to call the correct one.
+
+Word or letter ordering is specified by:
+\begin{definition}[\DescribeMacro{\@glsorder}]
+\cs{@glsorder}\marg{order}
+\end{definition}
+where \meta{order} can be either \texttt{word} or \texttt{letter}.
+
+If \gls{xindy} should be used, the language and code page
+for each glossary is specified by
+\begin{definition}[\DescribeMacro{\@xdylanguage}\DescribeMacro{\@gls@codepage}]
+\cs{@xdylanguage}\marg{label}\marg{language}\\
+\cs{@gls@codepage}\marg{label}\marg{code}
+\end{definition}
+where \meta{label} identifies the glossary, \meta{language} is
+the root language (e.g.\ \texttt{english}) and \meta{code}
+is the encoding (e.g.\ \texttt{utf8}). These commands are omitted
+if \gls{makeindex} should be used.
+
+If \opt1 has been used, the \texttt{.aux} file will contain
+\begin{definition}
+\cs{@gls@reference}\marg{type}\marg{label}\marg{location}
+\end{definition}
+for every time an entry has been referenced. If \opt4 has been
+used, the \texttt{.aux} file will contain one or more instances of
+\begin{definition}
+\cs{glsxtr@resource}\marg{options}\marg{basename}
+\end{definition}
+
+\chapter{Package Options}
+\label{sec:pkgopts}
+
+This section describes the available \styfmt{glossaries} package
+options. You may omit the \texttt{=true} for boolean options. (For
+example, \pkgopt{acronym} is equivalent to \pkgopt[true]{acronym}).
+The \gls{glossaries-extra} package has additional options described
+in the \gls*{glossaries-extra} manual.
+
+\begin{important}
+Note that \meta{key}=\meta{value} package options can't be passed via the
+document class options. (This includes options where the
+\meta{value} part may be omitted, such as \pkgopt{acronym}.) This is
+a general limitation not restricted to the \styfmt{glossaries}
+package. Options that aren't \meta{key}=\meta{value} (such as
+\pkgopt{makeindex}) may be passed via the document class options.
+\end{important}
+
+\section{General Options}
+\label{sec:pkgopts-general}
+
+\begin{description}
+\item[\pkgoptdef{nowarn}] This suppresses all warnings generated by
+the \styfmt{glossaries} package. Don't use this option if you're new to using
+\styfmt{glossaries} as the warnings are designed to help detect
+common mistakes (such as forgetting to use \ics{makeglossaries}).
+Note that the \pkgopt[true]{debug} and \pkgopt[showtargets]{debug} will override this option.
+
+\item[\pkgoptdef{nolangwarn}] This suppresses the warning generated by
+a missing language module.
+
+\item[\pkgoptdef{noredefwarn}] If you load \styfmt{glossaries} with
+a~class or another package that already defines glossary related
+commands, by default \styfmt{glossaries} will warn you that it's
+redefining those commands. If you are aware of the consequences of
+using \styfmt{glossaries} with that class or package and you don't
+want to be warned about it, use this option to suppress those
+warnings. Other warnings will still be issued unless you use the
+\pkgopt{nowarn} option described above.
+
+\item[\pkgoptdef{debug}] Introduced in version 4.24.
+The default setting is \pkgopt[false]{debug}.
+This was a boolean option but as from v4.32 it now accepts the
+values: \pkgoptfmt{false}, \pkgoptfmt{true} and
+\pkgoptfmt{showtargets}. If no value is given, \pkgopt[true]{debug} is assumed.
+Both \pkgopt[true]{debug} and \pkgopt[showtargets]{debug}
+switch on the debug mode (and will automatically
+cancel the \pkgopt{nowarn} option). The \pkgopt[showtargets]{debug}
+option will additionally use
+\begin{definition}[\DescribeMacro\glsshowtarget]
+\cs{glsshowtarget}\marg{target name}
+\end{definition}
+to show the hypertarget or hyperlink name in the margin when
+\cs{glsdohypertarget} is used by commands like \cs{glstarget}
+and when \cs{glsdohyperlink} is used by commands like \cs{gls}.
+This puts the information in the margin using \ics{marginpar} unless
+math mode or inner mode are detected, in which case it puts the
+information in line enclosed by square brackets. The
+\gls{glossaries-extra} package provides an additional setting that
+may be used to show where the indexing is occurring. See the
+\gls{glossaries-extra} manual for further details.
+
+The purpose of the debug mode can be demonstrated with
+the following example document:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{glossaries}
+\newglossaryentry{sample1}{name={sample1},
+ description={example}}
+\newglossaryentry{sample2}{name={sample2},
+ description={example}}
+\glsadd{sample2}
+\makeglossaries
+\begin{document}
+\gls{sample1}.
+\printglossaries
+\end{document}
+\end{verbatim}
+In this case, only the \texttt{sample1} entry has been indexed, even
+though \verb|\glsadd{sample2}| appears in the source code.
+This is because \verb|\glsadd{sample2}| has been used before the
+associated file is opened by \ics{makeglossaries}. Since the file
+isn't open yet, the information can't be written to it, which is why
+the \texttt{sample2} entry doesn't appear in the glossary.
+
+This situation doesn't cause any errors or warnings as it's
+perfectly legitimate for a user to want to use \styfmt{glossaries}
+to format the entries (e.g.\ abbreviation expansion) but not display
+any lists of terms, abbreviations, symbols etc.
+Without \cs{makeglossaries} the indexing is suppressed but, other
+than that, commands like \cs{gls} behave as usual. It's also
+possible that the user may want to temporarily comment out
+\cs{makeglossaries} in order to suppress the indexing while working
+on a draft version to speed compilation. Therefore
+\cs{makeglossaries} can't be used to enable \cs{newglossaryentry}
+and \cs{glsadd}. They must be enabled by default. (It does, however,
+enable the \gloskey{see} key as that's a more common problem. See
+below.)
+
+The debug mode, enabled with the \pkgopt{debug} option,
+\begin{verbatim}
+\usepackage[debug]{glossaries}
+\end{verbatim}
+will write information to the log file when the indexing
+can't occur because the associated file isn't open.
+The message is written in the form
+\begin{quote}
+Package glossaries Info: wrglossary(\meta{type})(\meta{text}) on
+input line \meta{line number}.
+\end{quote}
+where \meta{type} is the glossary label and \meta{text} is the line
+of text that would've been written to the associated file if
+it had been open. So if any entries haven't appeared in the
+glossary but you're sure you used commands like \cs{glsadd}
+or \cs{glsaddall}, try switching on the \pkgopt{debug} option
+and see if any information has been written to the log file.
+
+\item[\pkgoptdef{seenoindex}] Introduced in version 4.24, this option
+may take one of three values: \pkgoptfmt{error}, \pkgoptfmt{warn} or
+\pkgoptfmt{ignore}. The \gloskey{see} key automatically indexes the
+cross-referenced entry using \cs{glsadd}. This means that it suffers
+from the same problem as the above. If used before the relevant
+glossary file has been opened, the indexing can't be performed.
+Since this is easy to miss, the \styfmt{glossaries} package by
+default issues an error message if the \gloskey{see} key is used
+before \cs{makeglossaries}. This option allows you to change the
+error into just a warning (\pkgopt[warn]{seenoindex}) or
+ignore it (\pkgopt[ignore]{seenoindex}) if, for example, you want
+to temporarily comment out \cs{makeglossaries} to speed up the
+compilation of a draft document by omitting the indexing.
+
+\item[\pkgoptdef{nomain}] This suppresses the creation of the main
+glossary and associated \texttt{.glo} file, if unrequired. Note that
+if you use this option, you must create another glossary in which to
+put all your entries (either via the \pkgopt{acronym} (or
+\pkgopt{acronyms}) package option described in
+\sectionref{sec:pkgopts-acronym} or via the \pkgopt{symbols},
+\pkgopt{numbers} or \pkgopt{index} options described in
+\sectionref{sec:pkgopts-other} or via \ics{newglossary} described in
+\sectionref{sec:newglossary}).
+
+\begin{important}
+If you don't use the main glossary and you don't use this option,
+\gls{makeglossaries} will produce a warning.
+\end{important}
+\begin{alltt}
+Warning: File '\emph{filename}.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{alltt}
+If you did actually want to use the main glossary and you see this
+warning, check that you have referenced the entries in that glossary
+via commands such as \ics{gls}.
+
+\item[\pkgoptdef{sanitizesort}] This is a boolean option that
+determines whether or not to \gls{sanitize} the sort value when
+writing to the external glossary file. For example, suppose you
+define an entry as follows:
+\begin{verbatim}
+\newglossaryentry{hash}{name={\#},sort={#},
+ description={hash symbol}}
+\end{verbatim}
+The sort value (\verb|#|) must be sanitized before writing it to the
+glossary file, otherwise \LaTeX\ will try to interpret it as a
+parameter reference. If, on the other hand, you want the sort value
+expanded, you need to switch off the sanitization. For example,
+suppose you do:
+\begin{verbatim}
+\newcommand{\mysortvalue}{AAA}
+\newglossaryentry{sample}{%
+ name={sample},
+ sort={\mysortvalue},
+ description={an example}}
+\end{verbatim}
+and you actually want \cs{mysortvalue} expanded, so that the entry
+is sorted according to \texttt{AAA}, then use the package option
+\pkgopt[false]{sanitizesort}.
+
+The default for \optsand23 is \pkgopt[true]{sanitizesort}, and the
+default for \opt1 is \pkgopt[false]{sanitizesort}.
+
+\item[\pkgoptdef{savewrites}] This is a boolean option to minimise the
+number of write registers used by the \styfmt{glossaries} package.
+(Default is \pkgopt[false]{savewrites}.) There are only a limited
+number of write registers, and if you have a large number of
+glossaries or if you are using a class or other packages that
+create a lot of external files, you may exceed the maximum number
+of available registers. If \pkgopt{savewrites} is set, the glossary
+information will be stored in token registers until the end of the
+document when they will be written to the external files.
+
+\begin{important}
+This option can significantly slow document compilation and may
+cause the indexing to fail. Page numbers in the \gls{numberlist}
+will be incorrect on page boundaries due to \TeX's asynchronous
+output routine. As an alternative, you can use the \sty{scrwfile}
+package (part of the KOMA-Script bundle) and not use this option.
+\end{important}
+
+You can also reduce the number of write registers by using
+\optsor14 or by ensuring you define all your glossary entries in the
+preamble.
+
+\begin{important}
+If you want to use \TeX's \ics{write18} mechanism to call
+\gls{makeindex} or \gls{xindy} from your document and use
+\pkgopt{savewrites}, you must create the external files with
+\cs{glswritefiles} before you call \gls*{makeindex}/\gls*{xindy}. Also set
+\cs{glswritefiles} to nothing or \cs{relax} before the end of the
+document to avoid rewriting the files. For example:
+\begin{verbatim}
+\glswritefiles
+\write18{makeindex -s \istfilename\space
+-t \jobname.glg -o \jobname.gls \jobname}
+\let\glswritefiles\relax
+\end{verbatim}
+\end{important}
+In general, this package option is best avoided.
+
+\item[\pkgoptdef{translate}] This can take the following values:
+
+ \begin{description}
+ \item[{\pkgopt[true]{translate}}] If \sty{babel} has been loaded
+ and the \sty{translator} package is installed, \sty{translator}
+ will be loaded and the translations will be provided by the
+ \sty{translator} package interface. You can modify the
+ translations by providing your own dictionary. If the
+ \sty{translator} package isn't installed and \sty{babel} is
+ loaded, the \sty{glossaries-babel} package will
+ be loaded and the translations will be provided using \styfmt{babel}'s
+ \cs{addto}\cs{caption}\meta{language} mechanism. If
+ \sty{polyglossia} has been loaded, \sty{glossaries-polyglossia}
+ will be loaded.
+
+ \item[{\pkgopt[false]{translate}}] Don't provide translations, even
+ if \sty{babel} or \sty{polyglossia} has been loaded.
+ (Note that \sty{babel} provides the command \ics{glossaryname}
+ so that will still be translated if you have loaded \sty{babel}.)
+
+ \item[{\pkgopt[babel]{translate}}] Don't load the \sty{translator}
+package. Instead load \sty{glossaries-babel}.
+
+\begin{important}
+I recommend you use \pkgopt[babel]{translate} if you have any
+problems with the translations or with PDF bookmarks, but to maintain backward
+compatibility, if \sty{babel} has been loaded the default is
+\pkgopt[true]{translate}.
+\end{important}
+
+ \end{description}
+
+ If \pkgopt{translate} is specified without a value,
+ \pkgopt[true]{translate} is assumed. If \pkgopt{translate} isn't
+specified, \pkgopt[true]{translate} is assumed if \sty{babel},
+\sty{polyglossia} or \sty{translator} have been loaded. Otherwise
+\pkgopt[false]{translate} is assumed.
+
+See \sectionref{sec:fixednames} for further details.
+
+\item[\pkgoptdef{notranslate}] This is equivalent to
+\pkgopt[false]{translate} and may be passed via the document class
+options.
+
+\item[\pkgoptdef{nohypertypes}] Use this option if you have multiple
+glossaries and you want to suppress the entry hyperlinks for a
+particular glossary or glossaries. The value of this option should
+be a comma-separated list of glossary types where \ics{gls} etc
+shouldn't have hyperlinks by default. Make sure you enclose the
+value in braces if it contains any commas. Example:
+\begin{verbatim}
+\usepackage[acronym,nohypertypes={acronym,notation}]
+ {glossaries}
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+\end{verbatim}
+The values must be fully expanded, so \textbf{don't} try
+\texttt{nohypertypes\discretionary{}{}{}=\ics{acronymtype}}. You may also use
+\begin{definition}
+\ics{GlsDeclareNoHyperList}\marg{list}
+\end{definition}
+instead or additionally.
+See \sectionref{sec:glslink} for further details.
+
+\item[\pkgoptdef{hyperfirst}] This is a boolean option that specifies
+whether each term has a hyperlink on \firstuse. The default is
+\pkgopt[true]{hyperfirst} (terms on \gls{firstuse} have a hyperlink,
+unless explicitly suppressed using starred versions of commands
+such as \ics{gls*} or by identifying the glossary with
+\pkgopt{nohypertypes}, described above). Note that
+\pkgopt{nohypertypes} overrides \pkgopt[true]{hyperfirst}.
+This option only affects commands that check the \firstuseflag, such
+as the \glslike\ commands (for example, \ics{gls} or
+\ics{glsdisp}), but not the \glstextlike\ commands
+(for example, \ics{glslink} or \ics{glstext}).
+
+The \pkgopt{hyperfirst} setting applies to
+all glossary types (unless identified by \pkgopt{nohypertypes} or
+defined with \ics{newignoredglossary}). It can be overridden on an
+individual basis by explicitly setting the \gloskey[glslink]{hyper} key
+when referencing an entry (or by using the plus or starred
+version of the referencing command).
+
+It may be that you only want to apply this to just the acronyms
+(where the first use explains the meaning of the acronym) but not
+for ordinary glossary entries (where the first use is identical to
+subsequent uses). In this case, you can use \pkgopt[false]{hyperfirst} and
+apply \cs{glsunsetall} to all the regular (non-acronym) glossaries.
+For example:
+\begin{verbatim}
+ \usepackage[acronym,hyperfirst=false]{glossaries}
+ % acronym and glossary entry definitions
+
+ % at the end of the preamble
+ \glsunsetall[main]
+\end{verbatim}
+
+Alternatively you can redefine the hook
+\begin{definition}[\DescribeMacro\glslinkcheckfirsthyperhook]
+\cs{glslinkcheckfirsthyperhook}
+\end{definition}
+which is used by the commands that check the \firstuseflag, such
+as \ics{gls}. Within the definition of this command, you can use
+\ics{glslabel} to reference the entry label and \ics{glstype} to
+reference the glossary type. You can also use \ics{ifglsused}
+to determine if the entry has been used. You can test if an entry is
+an acronym by checking if it has the \gloskey{long} key set using
+\ics{ifglshaslong}. For example, to switch off the hyperlink on
+first use just for acronyms:
+\begin{verbatim}
+\renewcommand*{\glslinkcheckfirsthyperhook}{%
+ \ifglsused{\glslabel}{}%
+ {%
+ \ifglshaslong{\glslabel}{\setkeys{glslink}{hyper=false}}{}%
+ }%
+}
+\end{verbatim}
+
+Note that this hook isn't used by the commands that don't check the
+\firstuseflag, such as \ics{glstext}. (You can, instead, redefine
+\ics{glslinkpostsetkeys}, which is used by both the \glslike\ and
+\glstextlike\ commands.)
+
+\item[\pkgoptdef{indexonlyfirst}] This is a boolean option that specifies
+whether to only add information to the external glossary file on
+\gls{firstuse}. The default is \pkgopt[false]{indexonlyfirst},
+which will add a line to the file every time one of the
+\glslike\ or \glstextlike\ commands are used. Note that \ics{glsadd}
+will always add information to the external glossary
+file\footnote{bug fix in v4.16 has corrected the code to ensure
+this.}\ (since that's the purpose of that command).
+
+You can customise this by redefining
+\begin{definition}[\DescribeMacro\glswriteentry]
+\cs{glswriteentry}\marg{label}\marg{wr-code}
+\end{definition}
+where \meta{label} is the entry's label and \meta{wr-code} is the
+code that writes the entry's information to the external file.
+The default definition of \cs{glswriteentry} is:
+\begin{verbatim}
+\newcommand*{\glswriteentry}[2]{%
+ \ifglsindexonlyfirst
+ \ifglsused{#1}{}{#2}%
+ \else
+ #2%
+ \fi
+}
+\end{verbatim}
+This checks the \pkgopt{indexonlyfirst} package option (using
+\cs{ifglsindexonlyfirst}) and does \meta{wr-code} if this is
+\pkgoptfmt{false} otherwise it only does \meta{wr-code} of the entry
+hasn't been used.
+
+For example, suppose you only want to index the first use for
+entries in the \texttt{acronym} glossary and not in the
+\texttt{main} (or any other) glossary:
+\begin{verbatim}
+\renewcommand*{\glswriteentry}[2]{%
+ \ifthenelse{\equal{\glsentrytype{#1}}{acronym}}
+ {\ifglsused{#1}{}{#2}}%
+ {#2}%
+}
+\end{verbatim}
+Here I've used \cs{ifthenelse} to ensure the arguments of
+\cs{equal} are fully expanded before the comparison is made.
+
+\item[\pkgoptdef{savenumberlist}] This is a boolean option that
+specifies whether or not to gather and store the \gls{numberlist}
+for each entry. The default is \pkgopt[false]{savenumberlist}. (See
+\ics{glsentrynumberlist} and \ics{glsdisplaynumberlist} in
+\sectionref{sec:glsnolink}.) This is always true if you
+use \opt1.
+
+\end{description}
+
+\section{Sectioning, Headings and TOC Options}
+\label{sec:pkgopts-sec}
+
+\begin{description}
+\item[\pkgoptdef{toc}] Add the glossaries to the table of contents.
+Note that an extra \LaTeX\ run is required with this option.
+Alternatively, you can switch this function on and off using
+\begin{definition}[\DescribeMacro{\glstoctrue}]
+\cs{glstoctrue}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro{\glstocfalse}]
+\cs{glstocfalse}
+\end{definition}
+
+\item[\pkgoptdef{numberline}] When used with \pkgopt{toc}, this will
+add \ics{numberline}\verb|{}| in the final argument of
+\ics{addcontentsline}. This will align the table of contents entry
+with the numbered section titles. Note that this option has no
+effect if the \pkgopt{toc} option is omitted. If \pkgopt{toc} is
+used without \pkgopt{numberline}, the title will be aligned with
+the section numbers rather than the section titles.
+
+\item[\pkgoptdef{section}] This is a \meta{key}=\meta{value} option. Its
+value should be the name of a sectional unit (e.g.\ chapter).
+This will make the glossaries appear in the named sectional unit,
+otherwise each glossary will appear in a chapter, if chapters
+exist, otherwise in a section. Unnumbered sectional units will be used
+by default. Example:
+\begin{verbatim}
+\usepackage[section=subsection]{glossaries}
+\end{verbatim}
+You can omit the value if you want to use sections, i.e.\
+\begin{verbatim}
+\usepackage[section]{glossaries}
+\end{verbatim}
+is equivalent to
+\begin{verbatim}
+\usepackage[section=section]{glossaries}
+\end{verbatim}
+You can change this value later in the document using
+\begin{definition}[\DescribeMacro{\setglossarysection}]
+\cs{setglossarysection}\marg{name}
+\end{definition}
+where \meta{name} is the sectional unit.
+
+The start of each glossary adds information to the page header via
+\begin{definition}[\DescribeMacro{\glsglossarymark}]
+\cs{glsglossarymark}\marg{glossary title}
+\end{definition}
+By default this uses \cs{@mkboth}\footnote{unless \cls{memoir} is
+loaded, which case it uses \ics{markboth}} but you may
+need to redefine it.
+For example, to only change the right header:
+\begin{verbatim}
+\renewcommand{\glsglossarymark}[1]{\markright{#1}}
+\end{verbatim}
+or to prevent it from changing the headers:
+\begin{verbatim}
+\renewcommand{\glsglossarymark}[1]{}
+\end{verbatim}
+If you want \cs{glsglossarymark} to use \cs{MakeUppercase} in the header, use the
+\pkgopt{ucmark} option described below.
+
+Occasionally you may find that another package defines
+\cs{cleardoublepage} when it is not required. This may cause an
+unwanted blank page to appear before each glossary. This can
+be fixed by redefining \DescribeMacro\glsclearpage\cs{glsclearpage}:
+\begin{verbatim}
+\renewcommand*{\glsclearpage}{\clearpage}
+\end{verbatim}
+
+\item[\pkgoptdef{ucmark}] This is a boolean option (default:
+\pkgopt[false]{ucmark}, unless \cls{memoir} has been loaded, in
+which case it defaults to \pkgopt[true]{ucmark}). If
+set, \ics{glsglossarymark} uses
+\ics{MakeTextUppercase}\footnote{Actually it uses
+\ics{mfirstucMakeUppercase} which is set to \sty{textcase}'s \cs{MakeTextUppercase}
+by the
+\styfmt{glossaries} package. This makes it consistent with
+\ics{makefirstuc}. (The \sty{textcase} package is automatically
+loaded by \styfmt{glossaries}.)}.
+You can test whether this option has been set or not using
+\begin{definition}[\DescribeMacro\ifglsucmark]
+\cs{ifglsucmark} \meta{true part}\cs{else} \meta{false part}\cs{fi}
+\end{definition}
+For example:
+\begin{verbatim}
+\renewcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \markright{\MakeTextUppercase{#1}}%
+ \else
+ \markright{#1}%
+ \fi}
+\end{verbatim}
+If \cls{memoir} has been loaded and \pkgopt{ucfirst} is set, then
+\cls{memoir}'s \ics{memUChead} is used.
+
+\item[\pkgoptdef{numberedsection}]
+The glossaries are placed in unnumbered sectional units by default,
+but this can be changed using \pkgopt{numberedsection}. This option can take
+one of the following values:
+\begin{itemize}
+\item \pkgoptval{false}{numberedsection}: no number, i.e.\ use starred form
+of sectioning command (e.g.\ \cs{chapter*} or \cs{section*});
+
+\item \pkgoptval{nolabel}{numberedsection}:
+use a numbered section, i.e.\ the unstarred form of sectioning
+command (e.g.\ \cs{chapter} or \cs{section}), but
+the section not labelled;
+
+\item \pkgoptval{autolabel}{numberedsection}: numbered with automatic
+labelling. Each glossary uses the unstarred form of a sectioning
+command (e.g.\ \cs{chapter} or \cs{section}) and is assigned a label
+(via \ics{label}). The label is formed from
+\begin{definition}[\DescribeMacro{\glsautoprefix}]
+\cs{glsautoprefix} \meta{type}
+\end{definition}
+where
+\meta{type} is the label identifying that glossary. The default
+value of \cs{glsautoprefix} is empty. For example, if you load \styfmt{glossaries}
+using:
+\begin{verbatim}
+\usepackage[section,numberedsection=autolabel]
+ {glossaries}
+\end{verbatim}
+then each glossary will appear in a numbered section, and can
+be referenced using something like:
+\begin{verbatim}
+The main glossary is in section~\ref{main} and
+the list of acronyms is in section~\ref{acronym}.
+\end{verbatim}
+If you can't decide whether to have the acronyms in the main
+glossary or a separate list of acronyms, you can use
+\ics{acronymtype} which is set to \texttt{main} if the
+\pkgopt{acronym} option is not used and is set to \texttt{acronym}
+if the \pkgopt{acronym} option is used. For example:
+\begin{verbatim}
+The list of acronyms is in section~\ref{\acronymtype}.
+\end{verbatim}
+You can redefine the prefix if the default label clashes with
+another label in your document.
+For example:
+\begin{verbatim}
+\renewcommand*{\glsautoprefix}{glo:}
+\end{verbatim}
+will add \texttt{glo:} to the automatically generated label, so
+you can then, for example, refer to the list of acronyms as follows:
+\begin{verbatim}
+The list of acronyms is in
+section~\ref{glo:\acronymtype}.
+\end{verbatim}
+Or, if you are undecided on a prefix:
+\begin{verbatim}
+The list of acronyms is in
+section~\ref{\glsautoprefix\acronymtype}.
+\end{verbatim}
+
+\item \pkgoptval{nameref}{numberedsection}: this is like
+\pkgoptval{autolabel}{numberedsection} but uses an unnumbered
+sectioning command (e.g.\ \ics{chapter*} or \ics{section*}). It's
+designed for use with the \sty{nameref} package. For example:
+\begin{verbatim}
+\usepackage{nameref}
+\usepackage[numberedsection=nameref]{glossaries}
+\end{verbatim}
+Now \verb|\nameref{main}| will display the (TOC) section title
+associated with the \texttt{main} glossary. As above, you can
+redefine \cs{glsautoprefix} to provide a prefix for the label.
+\end{itemize}
+
+\end{description}
+
+\section{Glossary Appearance Options}
+\label{sec:pkgopts-printglos}
+
+\begin{description}
+\item[\pkgoptdef{entrycounter}] This is a boolean option. (Default
+is \pkgopt[false]{entrycounter}.) If set, each main (level~0)
+glossary entry will be numbered when using the standard glossary
+styles. This option creates the counter
+\DescribeCounter{glossaryentry}\ctrfmt{glossaryentry}.
+
+If you use this option, you can reference the entry number
+within the document using
+\begin{definition}[\DescribeMacro{\glsrefentry}]
+\cs{glsrefentry}\marg{label}
+\end{definition}
+where \meta{label} is the label associated with that glossary entry.
+The labelling systems uses \meta{prefix}\meta{label}, where
+\meta{label} is the entry's label and \meta{prefix} is given by
+\begin{definition}[\DescribeMacro\GlsEntryCounterLabelPrefix]
+\cs{GlsEntryCounterLabelPrefix}
+\end{definition}
+(which defaults to \texttt{glsentry-}).
+
+\begin{important}
+If you use \cs{glsrefentry}, you must run \LaTeX\ twice after
+creating the glossary files using \gls{makeglossaries},
+\gls{makeindex} or \gls{xindy} to ensure the cross-references are
+up-to-date.
+\end{important}
+
+\item[\pkgoptdef{counterwithin}] This is a \meta{key}=\meta{value}
+option where \meta{value} is the name of a counter. If used, this
+option will automatically set \pkgopt[true]{entrycounter} and the
+\ctr{glossaryentry} counter will be reset every time \meta{value} is
+incremented.
+
+
+\begin{important}
+The \ctr{glossaryentry} counter isn't automatically reset at the
+start of each glossary, except when glossary section numbering is on
+and the counter used by \pkgopt{counterwithin} is the same as the
+counter used in the glossary's sectioning command.
+\end{important}
+
+If you want the counter reset at the start of each glossary, you can
+redefine \ics{glossarypreamble} to use
+\begin{definition}[\DescribeMacro{\glsresetentrycounter}]
+\cs{glsresetentrycounter}
+\end{definition}
+which sets \ctr{glossaryentry} to zero:
+\begin{verbatim}
+\renewcommand{\glossarypreamble}{%
+ \glsresetentrycounter
+}
+\end{verbatim}
+or if you are using \ics{setglossarypreamble}, add it to each
+glossary preamble, as required. For example:
+\begin{verbatim}
+\setglossarypreamble[acronym]{%
+ \glsresetentrycounter
+ The preamble text here for the list of acronyms.
+}
+\setglossarypreamble{%
+ \glsresetentrycounter
+ The preamble text here for the main glossary.
+}
+\end{verbatim}
+
+\item[\pkgoptdef{subentrycounter}] This is a boolean option. (Default
+is \pkgopt[false]{subentrycounter}.) If set, each level~1
+glossary entry will be numbered when using the standard glossary
+styles. This option creates the counter
+\DescribeCounter{glossarysubentry}\ctrfmt{glossarysubentry}.
+The counter is reset with each main (level~0) entry. Note that this
+package option is independent of \pkgopt{entrycounter}. You can
+reference the number within the document using
+\ics{glsrefentry}\marg{label} where \meta{label} is the label
+associated with the sub-entry.
+
+\item[\pkgoptdef{style}] This is a \meta{key}=\meta{value} option.
+(Default is \pkgopt[list]{style}, unless \sty{classicthesis}
+has been loaded, in which case the default is \pkgopt[index]{style}.) Its value should be the name of
+the glossary style to use. This key may only be used for styles
+defined in \sty{glossary-list}, \sty{glossary-long},
+\sty{glossary-super} or \sty{glossary-tree}. Alternatively, you can
+set the style using
+\begin{definition}
+\cs{setglossarystyle}\marg{style name}
+\end{definition}
+(See \sectionref{sec:styles} for further details.)
+
+\item[\pkgoptdef{nolong}] This prevents the \styfmt{glossaries} package
+from automatically loading \sty{glossary-long} (which means that
+the \sty{longtable} package also won't be loaded). This reduces
+overhead by not defining unwanted styles and commands. Note that if
+you use this option, you won't be able to use any of the
+glossary styles defined in the \styfmt{glossary-long} package (unless
+you explicitly load \sty{glossary-long}).
+
+\item[\pkgoptdef{nosuper}] This prevents the \styfmt{glossaries} package
+from automatically loading \sty{glossary-super} (which means that
+the \sty{supertabular} package also won't be loaded). This reduces
+overhead by not defining unwanted styles and commands. Note that if
+you use this option, you won't be able to use any of the
+glossary styles defined in the \styfmt{glossary-super} package
+(unless you explicitly load \sty{glossary-super}).
+
+\item[\pkgoptdef{nolist}] This prevents the \styfmt{glossaries} package
+from automatically loading \sty{glossary-list}. This reduces
+overhead by not defining unwanted styles. Note that if
+you use this option, you won't be able to use any of the
+glossary styles defined in the \styfmt{glossary-list} package
+(unless you explicitly load \sty{glossary-list}).
+Note that since the default style is \glostyle{list} (unless
+\sty{classicthesis} has been loaded), you will
+also need to use the \pkgopt{style} option to set the style to
+something else.
+
+\item[\pkgoptdef{notree}] This prevents the \styfmt{glossaries} package
+from automatically loading \sty{glossary-tree}. This reduces
+overhead by not defining unwanted styles. Note that if
+you use this option, you won't be able to use any of the
+glossary styles defined in the \styfmt{glossary-tree} package
+(unless you explicitly load \sty{glossary-tree}). Note that if
+\sty{classicthesis} has been loaded, the default style is
+\glostyle{index}, which is provided by \sty{glossary-tree}.
+
+\item[\pkgoptdef{nostyles}] This prevents all the predefined styles
+from being loaded. If you use this option, you need to load a
+glossary style package (such as \sty{glossary-mcols}). Also if you
+use this option, you can't use the \pkgopt{style} package option.
+Instead you must either use \ics{setglossarystyle}\marg{style} or the
+\gloskey[printglossary]{style} key in the optional argument to
+\ics{printglossary}. Example:
+\begin{verbatim}
+\usepackage[nostyles]{glossaries}
+\usepackage{glossary-mcols}
+\setglossarystyle{mcoltree}
+\end{verbatim}
+
+\item[\pkgoptdef{esclocations}] This is a boolean option. (The default
+is \pkgopt[true]{esclocations}, but \ics{makenoidxglossaries}
+changes it to \pkgopt[false]{esclocations}.) Both \gls{makeindex} and \gls{xindy}
+are fussy about the location formats (\gls{makeindex} more so than
+\gls{xindy}) so the \styfmt{glossaries} package tries to ensure that
+special characters are escaped and allows for the location to be
+substituted for a format that's more acceptable to the indexing
+application. This requires a bit of trickery to circumvent the
+problem posed by \TeX's asynchronous output routine, which can go
+wrong and also adds to the complexity of the document build.
+
+If you're sure that your locations will always expand to an
+acceptable format (or you're prepared to post-process the glossary
+file before passing it to the relevant indexing application) then
+use \pkgopt[false]{esclocations} to avoid the complex escaping
+of location values. (See \ifpdf section~\ref*{sec:wrgloss}\fi \qt{Writing information to associated files} in the documented
+code for further details.)
+
+\item[\pkgoptdef{nonumberlist}] This option will suppress the
+associated \glspl{numberlist} in the glossaries (see also
+\sectionref{sec:numberlists}). Note that if you use \optsor23
+(\gls{makeindex} or \gls{xindy}) then the locations must still be
+valid. This package option merely prevents the \gls{numberlist}
+from being displayed, but both \gls{makeindex} and \gls{xindy}
+still require a location or cross-reference for each term that's
+indexed. Remember that \gls{numberlist} includes any
+cross-references, so suppressing the \gls{numberlist} will also hide
+the cross-references (see below).
+
+\item[\pkgoptdef{seeautonumberlist}] If you suppress the
+\glspl{numberlist} with \pkgopt{nonumberlist}, described above, this
+will also suppress any cross-referencing information supplied by the
+\gloskey{see} key in \ics{newglossaryentry} or \ics{glssee}. If you
+use \pkgopt{seeautonumberlist}, the \gloskey{see} key will
+automatically implement \gloskey{nonumberlist=false} for that entry.
+(Note this doesn't affect \cs{glssee}.) For further details see
+\sectionref{sec:crossref}.
+
+\item[\pkgoptdef{counter}] This is a \meta{key}=\meta{value} option.
+(Default is \pkgopt[page]{counter}.) The value should be the name of
+the default counter to use in the \glspl{numberlist}
+(see \sectionref{sec:numberlists}).
+
+\item[\pkgoptdef{nopostdot}] This is a boolean option. If no value is
+specified, \texttt{true} is assumed. When set to \texttt{true}, this
+option suppresses the default post description dot used by some of
+the predefined styles. The default setting is
+\pkgopt[false]{nopostdot}.
+
+\item[\pkgoptdef{nogroupskip}] This is a boolean option. If no value is
+specified, \texttt{true} is assumed. When set to \texttt{true}, this
+option suppresses the default vertical gap between groups used by
+some of the predefined styles. The default setting is
+\pkgopt[false]{nogroupskip}.
+
+\end{description}
+
+\section{Sorting Options}
+\label{sec:pkgopts-sort}
+
+\begin{description}
+\item[\pkgoptdef{sort}] If you use \optsor23, this package option is
+the only way of specifying how to sort the glossaries. Only \opt1
+allows you to specify sort methods for individual glossaries
+via the \gloskey[printnoidxglossary]{sort} key in the optional
+argument of \ics{printnoidxglossary}. If you have multiple
+glossaries in your document and you are using \opt1, only use
+the package options
+\pkgopt[def]{sort} or \pkgopt[use]{sort} if you want to set this
+sort method for \emph{all} your glossaries.
+
+This is a \meta{key}=\meta{value} option where
+\meta{value} may be one of the following:
+\begin{itemize}
+\item \pkgoptval{standard}{sort} : entries are sorted according to
+the value of the \gloskey{sort} key used in \ics{newglossaryentry}
+(if present) or the \gloskey{name} key (if \gloskey{sort} key is
+missing);
+
+\item \pkgoptval{def}{sort} : entries are sorted in the order in
+which they were defined (the \gloskey{sort} key in
+\cs{newglossaryentry} is ignored);
+
+\item \pkgoptval{use}{sort} : entries are sorted according to the
+order in which they are used in the document (the \gloskey{sort} key
+in \cs{newglossaryentry} is ignored).
+
+Both \pkgopt[def]{sort} and \pkgopt[use]{sort} set the sort key to a
+six digit number via
+\begin{definition}[\DescribeMacro\glssortnumberfmt]
+\cs{glssortnumberfmt}\marg{number}
+\end{definition}
+(padded with leading zeros, where necessary). This can be
+redefined, if required, before the entries are defined (in the
+case of \pkgopt[def]{sort}) or before the entries are used
+(in the case of \pkgopt[use]{sort}).
+
+\item \pkgoptval{none}{sort} : this setting is new to version 4.30
+and is only for documents that don't use \cs{makeglossaries} (\optsor23)
+or \cs{makenoidxglossaries} (\opt1). It omits the code used to sanitize
+or escape the sort value, since it's not required. This can help to
+improve the document build speed, especially if there are a large
+number of entries. This option
+can't be used with \cs{printglossary} or \cs{printnoidxglossary}
+(or the iterative versions \cs{printglossaries} or
+\cs{printnoidxglossaries}). It may be used with
+\sty{glossaries-extra}'s \cs{printunsrtglossary} (\opt5).
+\end{itemize}
+Note that the group styles (such as \glostyle{listgroup}) are
+incompatible with the \pkgopt[use]{sort} and \pkgopt[def]{sort}
+options.
+
+The default is \pkgopt[standard]{sort}. When the standard sort
+option is in use, you can hook into the sort mechanism by
+redefining:
+\begin{definition}[\DescribeMacro{\glsprestandardsort}]
+\cs{glsprestandardsort}\marg{sort cs}\marg{type}\marg{label}
+\end{definition}
+where \meta{sort cs} is a temporary control sequence that stores the
+sort value (which was either explicitly set via the \gloskey{sort}
+key or implicitly set via the \gloskey{name} key) before any escaping of the
+\gls{makeindex}\slash\gls{xindy} special characters is performed.
+By default \cs{glsprestandardsort} just does:
+\begin{definition}[\DescribeMacro{\glsdosanitizesort}]
+\cs{glsdosanitizesort}
+\end{definition}
+which \gls{sanitize}[s] \meta{sort cs} if the \pkgopt{sanitizesort} package
+option is set (or does nothing if the package option
+\pkgopt[false]{sanitizesort} is used).
+
+The other arguments, \meta{type} and \meta{label}, are the
+glossary type and the entry label for the current entry. Note that
+\meta{type} will always be a control sequence, but \meta{label} will
+be in the form used in the first argument of \ics{newglossaryentry}.
+
+\begin{important}
+Redefining \cs{glsprestandardsort} won't affect any entries that
+have already been defined and will have no effect at all if you
+are using \pkgopt[def]{sort} or \pkgopt[use]{sort}.
+\end{important}
+
+\begin{example}{Mixing Alphabetical and Order of Definition Sorting}{ex:diffsorts}
+Suppose I have three glossaries: \texttt{main},
+\texttt{acronym} and \texttt{notation}, and let's suppose
+I want the \texttt{main} and \texttt{acronym} glossaries to be
+sorted alphabetically, but the \texttt{notation} type should be
+sorted in order of definition.
+
+For \opt1, I~just need to set the \gloskey[printnoidxglossary]{sort} key in
+the optional argument of \ics{printnoidxglossary}:
+\begin{verbatim}
+\printnoidxglossary[sort=word]
+\printnoidxglossary[type=acronym,sort=word]
+\printnoidxglossary[type=notation,sort=def]
+\end{verbatim}
+
+For \optsor23, I can set the sort to \texttt{standard}
+(which is the default, but can be explicitly set via the
+package option \pkgopt[standard]{sort}), and I can either define
+all my \texttt{main} and \texttt{acronym} entries, then
+redefine \cs{glsprestandardsort} to set \meta{sort cs} to
+an incremented integer, and then define all my
+\texttt{notation} entries. Alternatively, I can redefine
+\cs{glsprestandardsort} to check for the glossary type and only
+modify \meta{sort cs} if \meta{type} is \texttt{notation}.
+
+The first option can be achieved as follows:
+\begin{verbatim}
+\newcounter{sortcount}
+
+\renewcommand{\glsprestandardsort}[3]{%
+ \stepcounter{sortcount}%
+ \edef#1{\glssortnumberfmt{\arabic{sortcount}}}%
+}
+\end{verbatim}
+The second option can be achieved as follows:
+\begin{verbatim}
+\newcounter{sortcount}
+
+\renewcommand{\glsprestandardsort}[3]{%
+ \ifdefstring{#2}{notation}%
+ {%
+ \stepcounter{sortcount}%
+ \edef#1{\glssortnumberfmt{\arabic{sortcount}}}%
+ }%
+ {%
+ \glsdosanitizesort
+ }%
+}
+\end{verbatim}
+(\cs{ifdefstring} is defined by the \sty{etoolbox} package.)
+For a complete document, see the sample file \samplefile{Sort}.
+\end{example}
+
+\begin{example}{Customizing Standard Sort (Options 2 or 3)}{ex:customsort}
+Suppose you want a glossary of people and you want the names listed
+as \meta{first-name} \meta{surname} in the glossary, but you want the names
+sorted by \meta{surname}, \meta{first-name}. You can do this by
+defining a command called, say,
+\cs{name}\marg{first-name}\marg{surname} that you can use in the
+\gloskey{name} key when you define the entry, but hook into the
+standard sort mechanism to temporarily redefine \cs{name} while the
+sort value is being set.
+
+First, define two commands to set the person's name:
+\begin{verbatim}
+\newcommand{\sortname}[2]{#2, #1}
+\newcommand{\textname}[2]{#1 #2}
+\end{verbatim}
+and \cs{name} needs to be initialised to \cs{textname}:
+\begin{verbatim}
+\let\name\textname
+\end{verbatim}
+Now redefine \cs{glsprestandardsort} so that it temporarily sets
+\cs{name} to \cs{sortname} and expands the sort value, then sets
+\cs{name} to \cs{textname} so that the person's name appears as
+\meta{first-name} \meta{surname} in the text:
+\begin{verbatim}
+\renewcommand{\glsprestandardsort}[3]{%
+ \let\name\sortname
+ \edef#1{\expandafter\expandonce\expandafter{#1}}%
+ \let\name\textname
+ \glsdosanitizesort
+}
+\end{verbatim}
+(The somewhat complicate use of \cs{expandafter} etc helps to
+protect fragile commands, but care is still needed.)
+
+Now the entries can be defined:
+\begin{verbatim}
+\newglossaryentry{joebloggs}{name={\name{Joe}{Bloggs}},
+ description={some information about Joe Bloggs}}
+
+\newglossaryentry{johnsmith}{name={\name{John}{Smith}},
+ description={some information about John Smith}}
+\end{verbatim}
+For a complete document, see the sample file \samplefile{People}.
+\end{example}
+
+\item[\pkgoptdef{order}] This may take two values:
+\pkgoptval{word}{order} or \pkgoptval{letter}{order}. The default
+is word ordering.
+
+\begin{important}
+Note that the \pkgopt{order} option has no effect if you don't use
+\gls{makeglossaries}.
+\end{important}
+
+If you use \opt1, this setting will be used if you use
+\gloskey[printnoidxglossary]{sort}\texttt{=standard} in
+the optional argument of \ics{printnoidxglossary}:
+\begin{verbatim}
+\printnoidxglossary[sort=standard]
+\end{verbatim}
+Alternatively, you can specify the order for individual glossaries:
+\begin{verbatim}
+\printnoidxglossary[sort=word]
+\printnoidxglossary[type=acronym,sort=letter]
+\end{verbatim}
+
+\item[\pkgoptdef{makeindex}] (\opt2) The glossary information and
+indexing style file will be written in \gls{makeindex} format. If
+you use \gls{makeglossaries}, it will automatically detect that it
+needs to call \gls*{makeindex}. If you don't use
+\gls*{makeglossaries}, you need to remember to use \gls*{makeindex}
+not \gls{xindy}. The indexing style file will been given
+a~\filetype{.ist} extension.
+
+You may omit this package option if you are using \opt2 as this is the
+default. It's available in case you need to override the effect of an earlier
+occurrence of \pkgopt{xindy} in the package option list.
+
+\item[\pkgoptdef{xindy}] (\opt3) The glossary information and indexing style
+file will be written in \gls{xindy} format. If you use
+\gls{makeglossaries}, it will automatically detect that it needs to
+call \gls*{xindy}. If you don't use \gls*{makeglossaries}, you need to
+remember to use \gls*{xindy} not \gls{makeindex}. The indexing style
+file will been given a \filetype{.xdy} extension.
+
+This package option may additionally have a value that
+is a \meta{key}=\meta{value} comma-separated list to override the
+language and codepage. For example:
+\begin{verbatim}
+\usepackage[xindy={language=english,codepage=utf8}]
+ {glossaries}
+\end{verbatim}
+You can also specify whether you want a number group in the
+glossary. This defaults to true, but can be suppressed. For example:
+\begin{verbatim}
+\usepackage[xindy={glsnumbers=false}]{glossaries}
+\end{verbatim}
+If no value is supplied to this package option (either simply
+writing \texttt{xindy} or writing \verb|xindy={}|) then the
+language, codepage and number group settings are unchanged. See
+\sectionref{sec:xindy} for further details on using \gls{xindy} with
+the \styfmt{glossaries} package.
+
+\item[\pkgoptdef{xindygloss}] (\opt3) This is equivalent to
+\verb|xindy={}| (that is, the \pkgopt{xindy} option without any value
+supplied) and may be used as a document class option. The language
+and code page can be set via \ics{GlsSetXdyLanguage} and
+\ics{GlsSetXdyCodePage} (see \sectionref{sec:langenc}.)
+
+\item[\pkgoptdef{xindynoglsnumbers}] (\opt3) This is equivalent to
+\verb|xindy={glsnumbers=false}| and may be used as a document class
+option.
+
+\item[\pkgoptdef{automake}] This is option was introduced to
+version 4.08 as a boolean option. As from version 4.42 it may now
+take three values: \texttt{false} (default), \texttt{true}
+or \texttt{immediate}. If no option is supplied, \texttt{immediate}
+is assumed.
+The option \pkgopt[true]{automake} will attempt to run \gls{makeindex} or \gls{xindy} using
+\TeX's \ics{write18} mechanism at the end of the document.
+The option \pkgopt[immediate]{automake} will attempt to
+run \gls{makeindex} or \gls{xindy} at the start of
+\ics{makeglossaries} using \cs{immediate} (before the glossary files have been opened).
+
+In the case of \pkgopt[true]{automake}, the associated files
+are created at the end of the document ready for the next \LaTeX\
+run. Since there is a possibility of commands such as \cs{gls}
+occurring on the last page of the document, it's not possible
+to use \cs{immediate} to close the associated file or with
+\cs{write18} since the writing of the final indexing lines may
+have been delayed. In certain situations this can mean that
+the \cs{write18} fails. In such cases, you will need to use
+\pkgopt[immediate]{automake} instead.
+
+With \pkgopt[immediate]{automake}, you will get a warning on
+the first \LaTeX\ run as the associated glossary files don't exist
+yet.
+
+Since this mechanism can be a security risk, some \TeX\
+distributions disable it completely, in which case this option won't
+have an effect. (If this option doesn't appear to work, search the
+log file for \qt{runsystem} and see if it is followed by
+\qt{enabled} or \qt{disabled}.)
+
+Some distributions allow \cs{write18} in a restricted mode.
+This mode has a~limited number of trusted applications, which
+usually includes \gls{makeindex} but may not include \gls{xindy}. So
+if you have the restricted mode on, \pkgopt{automake} should work
+with \gls*{makeindex} but may not work with \gls{xindy}.
+
+However even in unrestricted mode this option may not work with
+\gls*{xindy} as \gls*{xindy} uses language names that don't always
+correspond with \ics{babel}'s language names. (The
+\gls{makeglossaries} script applies mappings to assist you.)
+Note that you still need at least two \LaTeX\ runs to ensure the document
+is up-to-date with this setting.
+
+Since this package option attempts to run the \gls{indexingapp} on
+every \LaTeX\ run, its use should be considered a last resort for
+those who can't work out how to incorporate the \gls*{indexingapp}
+into their document build. The default value for this option is
+\pkgopt[false]{automake}.
+
+\end{description}
+
+\section{Acronym Options}
+\label{sec:pkgopts-acronym}
+
+\begin{description}
+\item[\pkgoptdef{acronym}] This creates a new glossary with the
+label \texttt{acronym}. This is equivalent to:
+\begin{verbatim}
+\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+\end{verbatim}
+It will also define
+\begin{definition}[\DescribeMacro\printacronyms]
+\cs{printacronyms}\oarg{options}
+\end{definition}
+that's equivalent to
+\begin{alltt}
+\ics{printglossary}[type=acronym,\meta{options}]
+\end{alltt}
+(unless that command is already defined before the beginning of the
+document or the package option \pkgopt{compatible-3.07} is used).
+
+If you are using \opt1, you need to use
+\begin{alltt}
+\ics{printnoidxglossary}[type=acronym,\meta{options}]
+\end{alltt}
+to display the list of acronyms.
+
+If the \pkgopt{acronym} package option is used, \ics{acronymtype}
+is set to \texttt{acronym} otherwise it is set to
+\texttt{main}.\footnote{Actually it sets \ics{acronymtype} to
+\ics{glsdefaulttype} if the \pkgopt{acronym} package option is
+not used, but \ics{glsdefaulttype} usually has the value
+\texttt{main} unless the \pkgopt{nomain} option has been used.}
+Entries that are defined using \ics{newacronym} are placed in
+the glossary whose label is given by \ics{acronymtype}, unless
+another glossary is explicitly specified.
+
+\begin{important}
+Remember to use the \pkgopt{nomain} package option if you're only
+interested in using this \texttt{acronym} glossary. (That is, you
+don't intend to use the \texttt{main} glossary.)
+\end{important}
+
+\item[\pkgoptdef{acronyms}] This is equivalent to
+\pkgopt[true]{acronym} and may be used in the document class option
+list.
+
+\item[\pkgoptdef{acronymlists}] By default, only the \cs{acronymtype}
+glossary is considered to be a list of acronyms. If you have other
+lists of acronyms, you can specify them as a comma-separated list
+in the value of \pkgopt{acronymlists}. For example, if you use the
+\pkgopt{acronym} package option but you also want the \texttt{main}
+glossary to also contain a list of acronyms, you can do:
+\begin{verbatim}
+\usepackage[acronym,acronymlists={main}]{glossaries}
+\end{verbatim}
+No check is performed to determine if the listed glossaries exist,
+so you can add glossaries you haven't defined yet. For example:
+\begin{verbatim}
+\usepackage[acronym,acronymlists={main,acronym2}]
+ {glossaries}
+\newglossary[alg2]{acronym2}{acr2}{acn2}%
+ {Statistical Acronyms}
+\end{verbatim}
+You can use
+\begin{definition}[\DescribeMacro\DeclareAcronymList]
+\cs{DeclareAcronymList}\marg{list}
+\end{definition}
+instead of or in addition to the \pkgopt{acronymlists} option.
+This will add the glossaries given in \meta{list} to the list of glossaries
+that are identified as lists of acronyms. To replace the list of acronym lists
+with a new list use:
+\begin{definition}[\DescribeMacro\SetAcronymLists]
+\cs{SetAcronymLists}\marg{list}
+\end{definition}
+
+You can determine if a glossary has been identified as being a list
+of acronyms using:
+\begin{definition}[\DescribeMacro\glsIfListOfAcronyms]
+\cs{glsIfListOfAcronyms}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+
+\item[\pkgoptdef{shortcuts}] This option provides shortcut commands
+for acronyms. See \sectionref{sec:acronyms} for further details.
+Alternatively you can use:
+\begin{definition}[\DescribeMacro\DefineAcronymSynonyms]
+\cs{DefineAcronymSynonyms}
+\end{definition}
+\end{description}
+
+\subsection{Deprecated Acronym Style Options}
+\label{sec:pkgopts-old-acronym}
+
+The package options listed in this section are now deprecated but
+are kept for backward-compatibility. Use \ics{setacronymstyle}
+instead. See \sectionref{sec:acronyms} for further details.
+
+\begin{description}
+\item[\pkgoptdef{description}] This option changes the definition of
+\ics{newacronym} to allow a description.
+This option may be replaced by
+\begin{verbatim}
+\setacronymstyle{long-short-desc}
+\end{verbatim}
+or (with \pkgopt{smallcaps})
+\begin{verbatim}
+\setacronymstyle{long-sc-short-desc}
+\end{verbatim}
+or (with \pkgopt{smaller})
+\begin{verbatim}
+\setacronymstyle{long-sm-short-desc}
+\end{verbatim}
+or (with \pkgopt{footnote})
+\begin{verbatim}
+\setacronymstyle{footnote-desc}
+\end{verbatim}
+or (with \pkgopt{footnote} and \pkgopt{smallcaps})
+\begin{verbatim}
+\setacronymstyle{footnote-sc-desc}
+\end{verbatim}
+or (with \pkgopt{footnote} and \pkgopt{smaller})
+\begin{verbatim}
+\setacronymstyle{footnote-sm-desc}
+\end{verbatim}
+or (with \pkgopt{dua})
+\begin{verbatim}
+\setacronymstyle{dua-desc}
+\end{verbatim}
+
+\item[\pkgoptdef{smallcaps}] This option changes the definition of
+\ics{newacronym} and the way that acronyms are displayed.
+This option may be replaced by:
+\begin{verbatim}
+\setacronymstyle{long-sc-short}
+\end{verbatim}
+or (with \pkgopt{description})
+\begin{verbatim}
+\setacronymstyle{long-sc-short-desc}
+\end{verbatim}
+or (with \pkgopt{description} and \pkgopt{footnote})
+\begin{verbatim}
+\setacronymstyle{footnote-sc-desc}
+\end{verbatim}
+
+\item[\pkgoptdef{smaller}] This option changes the definition of
+\ics{newacronym} and the way that acronyms are displayed.
+\begin{important}
+If you use this option, you will need to include the \sty{relsize}
+package or otherwise define \ics{textsmaller} or redefine
+\ics{acronymfont}.
+\end{important}
+This option may be replaced by:
+\begin{verbatim}
+\setacronymstyle{long-sm-short}
+\end{verbatim}
+or (with \pkgopt{description})
+\begin{verbatim}
+\setacronymstyle{long-sm-short-desc}
+\end{verbatim}
+or (with \pkgopt{description} and \pkgopt{footnote})
+\begin{verbatim}
+\setacronymstyle{footnote-sm-desc}
+\end{verbatim}
+
+\item[\pkgoptdef{footnote}] This option changes the definition of
+\ics{newacronym} and the way that acronyms are displayed.
+This option may be replaced by:
+\begin{verbatim}
+\setacronymstyle{footnote}
+\end{verbatim}
+or (with \pkgopt{smallcaps})
+\begin{verbatim}
+\setacronymstyle{footnote-sc}
+\end{verbatim}
+or (with \pkgopt{smaller})
+\begin{verbatim}
+\setacronymstyle{footnote-sm}
+\end{verbatim}
+or (with \pkgopt{description})
+\begin{verbatim}
+\setacronymstyle{footnote-desc}
+\end{verbatim}
+or (with \pkgopt{smallcaps} and \pkgopt{description})
+\begin{verbatim}
+\setacronymstyle{footnote-sc-desc}
+\end{verbatim}
+or (with \pkgopt{smaller} and \pkgopt{description})
+\begin{verbatim}
+\setacronymstyle{footnote-sm-desc}
+\end{verbatim}
+
+
+\item[\pkgoptdef{dua}] This option changes the definition of
+\ics{newacronym} so that acronyms are always expanded.
+This option may be replaced by:
+\begin{verbatim}
+\setacronymstyle{dua}
+\end{verbatim}
+or (with \pkgopt{description})
+\begin{verbatim}
+\setacronymstyle{dua-desc}
+\end{verbatim}
+
+\end{description}
+
+\section{Other Options}
+\label{sec:pkgopts-other}
+
+Other available options that don't fit any of the above categories
+are:
+\begin{description}
+\item[\pkgoptdef{symbols}] This option defines a new glossary type with
+the label \texttt{symbols} via
+\begin{verbatim}
+\newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}
+\end{verbatim}
+It also defines
+\begin{definition}[\DescribeMacro\printsymbols]
+\cs{printsymbols}\oarg{options}
+\end{definition}
+which is a synonym for
+\begin{alltt}
+\ics{printglossary}[type=symbols,\meta{options}]
+\end{alltt}
+
+If you use \opt1, you need to use:
+\begin{alltt}
+\ics{printnoidxglossary}[type=symbols,\meta{options}]
+\end{alltt}
+to display the list of symbols.
+
+\begin{important}
+Remember to use the \pkgopt{nomain} package option if you're only
+interested in using this \texttt{symbols} glossary and don't intend
+to use the \texttt{main} glossary.
+\end{important}
+
+The \styfmt{glossaries-extra} package has a slightly modified
+version of this option which additionally provides \ics{glsxtrnewsymbol}
+as a convenient shortcut method for defining symbols. See the
+\styfmt{glossaries-extra} manual for further details.
+
+\item[\pkgoptdef{numbers}] This option defines a new glossary type with
+the label \texttt{numbers} via
+\begin{verbatim}
+\newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}
+\end{verbatim}
+It also defines
+\begin{definition}[\DescribeMacro\printnumbers]
+\cs{printnumbers}\oarg{options}
+\end{definition}
+which is a synonym for
+\begin{alltt}
+\ics{printglossary}[type=numbers,\meta{options}]
+\end{alltt}
+
+If you use \opt1, you need to use:
+\begin{alltt}
+\ics{printnoidxglossary}[type=numbers,\meta{options}]
+\end{alltt}
+to display the list of numbers.
+
+\begin{important}
+Remember to use the \pkgopt{nomain} package option if you're only
+interested in using this \texttt{numbers} glossary and don't intend
+to use the \texttt{main} glossary.
+\end{important}
+
+The \styfmt{glossaries-extra} package has a slightly modified
+version of this option which additionally provides \ics{glsxtrnewnumber}
+as a convenient shortcut method for defining numbers. See the
+\styfmt{glossaries-extra} manual for further details.
+
+\item[\pkgoptdef{index}] This option defines a new glossary type with
+the label \texttt{index} via
+\begin{verbatim}
+\newglossary[ilg]{index}{ind}{idx}{\indexname}%
+\end{verbatim}
+It also defines
+\begin{definition}[\DescribeMacro\newterm]
+\cs{newterm}\oarg{options}\marg{term}
+\end{definition}
+which is a synonym for
+\begin{alltt}
+\ics{newglossaryentry}\marg{term}[type=index,name=\marg{term},%
+description=\ics{nopostdesc},\meta{options}]
+\end{alltt}
+and
+\begin{definition}[\DescribeMacro\printindex]
+\cs{printindex}\oarg{options}
+\end{definition}
+which is a synonym for
+\begin{alltt}
+\ics{printglossary}[type=index,\meta{options}]
+\end{alltt}
+
+If you use \opt1, you need to use:
+\begin{alltt}
+\ics{printnoidxglossary}[type=index,\meta{options}]
+\end{alltt}
+to display this glossary.
+
+\begin{important}
+Remember to use the \pkgopt{nomain} package option if you're only
+interested in using this \texttt{index} glossary and don't intend to
+use the \texttt{main} glossary. Note that you
+can't mix this option with \ics{index}. Either use
+\styfmt{glossaries} for the indexing or use a~custom indexing
+package, such as \sty{makeidx}, \sty{index} or \sty{imakeidx}.
+(You can, of course, load one of those packages and
+load \styfmt{glossaries} without the \pkgopt{index} package option.)
+\end{important}
+
+Since the index isn't designed for terms with descriptions, you
+might also want to disable the hyperlinks for this glossary using
+the package option \pkgopt[index]{nohypertypes} or the command
+\begin{display}
+\ics{GlsDeclareNoHyperList}\verb|{index}|
+\end{display}
+
+The example file \samplefile{-index} illustrates the use of the
+\pkgopt{index} package option.
+
+\item[\pkgoptdef{noglossaryindex}] This option switches off \pkgopt{index}
+if \pkgopt{index} has been passed implicitly (for example,
+through global document options). This option can't be used
+in \cs{setupglossaries}.
+
+\item[\pkgoptdef{compatible-2.07}] Compatibility mode for old documents
+created using version 2.07 or below.
+
+\item[\pkgoptdef{compatible-3.07}] Compatibility mode for old documents
+created using version 3.07 or below.
+
+\item[\pkgoptdef{kernelglossredefs}] As a legacy from the precursor
+\sty{glossary} package, the standard glossary commands provided
+by the \LaTeX\ kernel (\cs{makeglossary} and \cs{glossary}) are
+redefined in terms of the \styfmt{glossaries} package's commands.
+However, they were never documented in this user manual, and the
+conversion guide (\htmldoc{Upgrading from the glossary package to the
+glossaries package}{glossary2glossaries}) explicitly discourages
+their use.
+
+The use of those kernel commands (instead of the appropriate
+commands documented in this user guide) are deprecated, and you will
+now get a warning if you try using them.
+
+In the event that you require the original form of these kernel
+commands, for example, if you need to use the \styfmt{glossaries}
+package with another class or package that also performs
+glossary-style indexing, then you can restore these commands to
+their previous definition (that is, their definitions prior to
+loading the \styfmt{glossaries} package) with the package option
+\pkgopt[false]{kernelglossredefs}. You may also need to use the
+\pkgopt{nomain} option in the event of file extension conflicts.
+(In which case, you must provide a new default glossary for use with
+the \sty{glossaries} package.)
+
+This option may take one of three values: \pkgoptfmt{true}
+(redefine with warnings, default), \pkgoptfmt{false} (restore
+previous definitions) or \pkgoptfmt{nowarn} (redefine without
+warnings, not recommended).
+
+Note that the only glossary-related commands provided by the \LaTeX\
+kernel are \cs{makeglossary} and \cs{glossary}. Other packages
+or classes may provide additional glossary-related commands or
+environments that conflict with \styfmt{glossaries} (such as
+\cs{printglossary} and \env{theglossary}). These non-kernel commands
+aren't affected by this package option, and you will have to find
+some way to resolve the conflict if you require both glossary
+mechanisms. (The \sty{glossaries} package will override the existing
+definitions of \cs{printglossary} and \env{theglossary}.)
+
+In general, if possible, it's best to stick with just one package that
+provides a glossary mechanism. (The \styfmt{glossaries} package does
+check for the \sty{doc} package and patches \cs{PrintChanges}.)
+
+\end{description}
+
+\section{Setting Options After the Package is Loaded}
+\label{sec:setupglossaries}
+
+Some of the options described above may also be set after the
+\styfmt{glossaries} package has been loaded using
+\begin{definition}[\DescribeMacro{\setupglossaries}]
+\cs{setupglossaries}\marg{key-val list}
+\end{definition}
+The following package options \textbf{can't} be used in
+\cs{setupglossaries}: \pkgopt{xindy}, \pkgopt{xindygloss},
+\pkgopt{xindynoglsnumbers}, \pkgopt{makeindex},
+\pkgopt{nolong}, \pkgopt{nosuper}, \pkgopt{nolist},
+\pkgopt{notree}, \pkgopt{nostyles}, \pkgopt{nomain},
+\pkgopt{compatible-2.07}, \pkgopt{translate}, \pkgopt{notranslate},
+\pkgopt{acronym}. These options have to be set while the package is
+loading, except for the \pkgopt{xindy} sub-options which can be set
+using commands like \ics{GlsSetXdyLanguage} (see
+\sectionref{sec:xindy} for further details).
+
+\begin{important}
+If you need to use this command, use it as soon as
+possible after loading \styfmt{glossaries} otherwise you might
+end up using it too late for the change to take effect. For example,
+if you try changing the acronym styles (such as \pkgopt{smallcaps})
+after you have started defining your acronyms, you are likely to get
+unexpected results. If you try changing the sort option after you have
+started to define entries, you may get unexpected results.
+\end{important}
+
+\chapter{Setting Up}
+\label{sec:setup}
+
+In the preamble you need to indicate whether you want to use \opt1,
+\opt2 or \opt3. It's not possible to mix these options within
+a~document, although some combinations are possible with
+\gls*{glossaries-extra}. (For \optsand45 see the \gls{bib2gls} and
+\gls{glossaries-extra} manuals.)
+
+\section[Option 1]{\ifpdf\opt1\else Option 1\fi}
+\label{sec:setupopt1}
+
+The command
+\begin{definition}[\DescribeMacro{\makenoidxglossaries}]
+\cs{makenoidxglossaries}
+\end{definition}
+must be placed in the preamble. This sets up the internal commands
+required to make \opt1 work.
+\textbf{If you omit \cs{makenoidxglossaries} none of
+the glossaries will be displayed.}
+
+\section[Options 2 and 3]{\ifpdf\optsand23\else Options 2 and 3\fi}
+\label{sec:setupopt23}
+
+The command
+\begin{definition}[\DescribeMacro{\makeglossaries}]
+\cs{makeglossaries}
+\end{definition}
+must be placed in the preamble in order to create the customised
+\gls{makeindex} (\filetype{.ist}) or \gls{xindy} (\filetype{.xdy})
+style file (for \optsor23, respectively) and to ensure that glossary
+entries are written to the appropriate output files.
+\textbf{If you omit \cs{makeglossaries} none of
+the glossary files will be created.}
+
+\begin{important}
+Note that some of the commands provided by the \styfmt{glossaries}
+package must not be used after \cs{makeglossaries} as they are
+required when creating the customised style file. If you attempt
+to use those commands after \cs{makeglossaries} you will generate
+an error.
+
+Similarly, there are some commands that must not be used before
+\cs{makeglossaries}.
+\end{important}
+
+You can suppress the creation of the customised \gls{xindy}
+or \gls{makeindex} style file using
+\begin{definition}[\DescribeMacro{\noist}]
+\cs{noist}
+\end{definition}
+That this command must not be used after \cs{makeglossaries}.
+\begin{important}
+Note that if you have a custom \filetype{.xdy} file created when using
+\styfmt{glossaries} version 2.07 or below, you will need to use the
+\pkgopt{compatible-2.07} package option with it.
+\end{important}
+
+The default name for the customised style file is given by
+\ics{jobname}\filetype{.ist} (\opt2) or
+\ics{jobname}\filetype{.xdy} (\opt3). This name may be
+changed using:
+\begin{definition}[\DescribeMacro{\setStyleFile}]
+\cs{setStyleFile}\marg{name}
+\end{definition}
+where \meta{name} is the name of the style file without the
+extension. Note that this command must not be used after
+\cs{makeglossaries}.
+
+Each glossary entry is assigned a \gls{numberlist} that lists all
+the locations in the document where that entry was used. By default,
+the location refers to the page number but this may be overridden
+using the \pkgopt{counter} package option. The default form of
+the location number assumes a full stop compositor (e.g.\ 1.2),
+but if your location numbers use a different compositor (e.g. 1-2)
+you need to set this using
+\begin{definition}[\DescribeMacro{\glsSetCompositor}]
+\cs{glsSetCompositor}\marg{symbol}
+\end{definition}
+For example:
+\begin{verbatim}
+\glsSetCompositor{-}
+\end{verbatim}
+This command must not be used after \cs{makeglossaries}.
+
+If you use \opt3, you can have a different compositor for page
+numbers starting with an upper case alphabetical character using:
+\begin{definition}[\DescribeMacro{\glsSetAlphaCompositor}]
+\cs{glsSetAlphaCompositor}\marg{symbol}
+\end{definition}
+This command has no effect if you use \opt2. For example, if you want
+\glspl{numberlist} containing a mixture of A-1 and 2.3 style
+formats, then do:
+\begin{verbatim}
+\glsSetCompositor{.}\glsSetAlphaCompositor{-}
+\end{verbatim}
+See \sectionref{sec:numberlists} for further information about
+\glspl{numberlist}.
+
+\chapter{Defining Glossary Entries}
+\label{sec:newglosentry}
+
+All glossary entries must be defined before they are used, so it is
+better to define them in the preamble to ensure this. In fact, some
+commands such as \cs{longnewglossaryentry}
+may only be used in the preamble. See \sectionref{sec:docdefs} for
+a discussion of the problems with defining entries within the
+document instead of in the preamble. (The \gls{glossaries-extra}
+package has an option that provides a restricted form of document
+definitions that avoids some of the issues discussed in
+\sectionref{sec:docdefs}.)
+\begin{important}
+\opt1 enforces the preamble-only restriction on
+\ics{newglossaryentry}. \opt4 requires that definitions are provided
+in \texttt{.bib} format. \opt5 requires either preamble-only
+definitions or the use of the \sty{glossaries-extra} package option
+\optfmt{docdef=restricted}.
+\end{important}
+
+Only those entries that are indexed in the document
+(using any of the commands described in
+\sectionref{sec:glslink}, \sectionref{sec:glsadd} or
+\sectionref{sec:crossref}) will appear in the glossary. See
+\sectionref{sec:printglossary} to find out how to display the
+glossary.
+
+
+New glossary entries are defined using the command:
+\begin{definition}[\DescribeMacro{\newglossaryentry}]
+\cs{newglossaryentry}\marg{label}\marg{key=value list}
+\end{definition}
+This is a short command, so values in \meta{key-val list} can't
+contain any paragraph breaks. Take care to enclose values containing
+any commas (\texttt{,}) or equal signs (\texttt{=}) with braces to hide them
+from the key=value list parser. Be careful to ensure that no
+spurious spaces are included at the start and end of the braces.
+
+If you have a long description that
+needs to span multiple paragraphs, use
+\begin{definition}[\DescribeMacro{\longnewglossaryentry}]
+\cs{longnewglossaryentry}\marg{label}\marg{key=value
+list}\marg{long description}
+\end{definition}
+instead. Note that this command may only be used in the preamble.
+Be careful of unwanted spaces. \cs{longnewglossaryentry}
+will remove trailing spaces in the description (via \cs{unskip})
+but won't remove leading spaces (otherwise it would interfere with
+commands like \cs{Glsentrydesc}). This command also appends
+\cs{nopostdesc} to the end of the description, which suppresses the
+post-description hook. The \sty{glossaries-extra} package provides
+a starred version of \cs{longnewglossaryentry} that doesn't append
+either \cs{unskip} or \cs{nopostdesc}.
+
+There are also commands that will only define the entry if it
+hasn't already been defined:
+\begin{definition}[\DescribeMacro\provideglossaryentry]
+\cs{provideglossaryentry}\marg{label}\marg{key=value list}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\longprovideglossaryentry]
+\cs{longprovideglossaryentry}\marg{label}\marg{key=value
+list}\marg{long description}
+\end{definition}
+(These are both preamble-only commands.)
+
+For all the above commands, the first argument, \meta{label}, must be
+a~unique label with which to identify this entry. \textbf{This can't contain
+any non-expandable commands or active characters.} The reason for
+this restriction is that the label is used to construct internal commands
+that store the associated information (similarly to commands
+like \cs{label}) and therefore must be able to expand to a valid
+control sequence name.
+
+\begin{important}
+Note that although an \gls{exlatinchar} or other \gls{nonlatinchar},
+such as \'e or \ss, looks like a plain character in your
+\texttt{.tex} file, it's actually a~macro (an active character) and
+therefore can't be used in the label. (This applies to \LaTeX\
+rather than \XeLaTeX.) Also be careful of
+\sty{babel}'s options that change certain punctuation characters
+(such as \texttt{:} or \texttt{-}) to active characters.
+\end{important}
+
+The second argument, \meta{key=value list}, is
+a \meta{key}=\meta{value} list that supplies the relevant
+information about this entry. There are two required fields:
+\gloskey{description} and either \gloskey{name} or \gloskey{parent}.
+The description is set in the third argument of
+\cs{longnewglossaryentry} and \cs{longprovideglossaryentry}. With
+the other commands it's set via the \gloskey{description} key.
+As is typical with \meta{key}=\meta{value} lists, values that contain
+a comma or equal sign must be enclosed in braces. Available fields
+are listed below. Additional fields are provided by the
+supplementary packages \sty{glossaries-prefix}
+(\sectionref{sec:prefix}) and \sty{glossaries-accsupp}
+(\sectionref{sec:accsupp}) and also by \gls{glossaries-extra}.
+You can also define your own custom keys (see
+\sectionref{sec:addkey}).
+
+\begin{description}
+\item[{\gloskey{name}}] The name of the entry (as it will appear in
+the glossary). If this key is omitted and the \gloskey{parent}
+key is supplied, this value will be the same as the parent's name.
+
+\begin{important}
+If the \gloskey{name} key contains any commands, you must also
+use the \gloskey{sort} key (described below) if you intend sorting the entries
+alphabetically, otherwise the entries can't be sorted correctly.
+\end{important}
+
+\item[{\gloskey{description}}] A brief description of this term (to
+appear in the glossary). Within this value, you can use
+\begin{definition}[\DescribeMacro{\nopostdesc}]
+\cs{nopostdesc}
+\end{definition}
+to suppress the
+description terminator for this entry. For example, if this
+entry is a parent entry that doesn't require a description, you
+can do \verb|description={\nopostdesc}|. If you want a paragraph
+break in the description use
+\begin{definition}[\DescribeMacro{\glspar}]
+\cs{glspar}
+\end{definition}
+or, better, use \cs{longnewglossaryentry}.
+However, note that not all glossary styles support multi-line
+descriptions. If you are using one of the tabular-like glossary
+styles that permit multi-line descriptions, use \ics{newline}
+not \verb"\\" if you want to force a line break.
+
+\item[{\gloskey{parent}}] The label of the parent entry. Note that
+the parent entry must be defined before its sub-entries.
+See \sectionref{sec:subentries} for further details.
+
+\item[{\gloskey{descriptionplural}}] The plural form of the
+description, if required. If omitted, the value
+is set to the same as the \gloskey{description} key.
+
+\item[{\gloskey{text}}] How this entry will appear in the document text
+when using \ics{gls} (or one of its upper case variants). If this
+field is omitted, the value of the \gloskey{name} key is used.
+
+\item[{\gloskey{first}}] How the entry will appear in the document text
+on \firstuse\ with \ics{gls} (or one of its upper case
+variants). If this field is omitted, the value of the \gloskey{text}
+key is used. Note that if you use \ics{glspl}, \ics{Glspl},
+\ics{GLSpl}, \ics{glsdisp} before using \ics{gls}, the
+\gloskey{firstplural} value won't be used with \ics{gls}.
+
+\item[{\gloskey{plural}}] How the entry will appear in the document text
+when using \ics{glspl} (or one of its upper case variants). If this
+field is omitted, the value is obtained by appending
+\ics{glspluralsuffix} to the value of the \gloskey{text} field. The
+default value of \ics{glspluralsuffix} is the letter \qt{s}.
+
+\item[{\gloskey{firstplural}}] How the entry will appear in the
+document text on \firstuse\ with \ics{glspl} (or one of its
+upper case variants). If this field is omitted, the value is obtained
+from the \gloskey{plural} key, if the \gloskey{first} key is omitted,
+or by appending \ics{glspluralsuffix} to the value of the
+\gloskey{first} field, if the \gloskey{first} field is present. Note
+that if you use \ics{gls}, \ics{Gls}, \ics{GLS}, \cs{glsdisp} before
+using \ics{glspl}, the \gloskey{firstplural} value won't be used
+with \ics{glspl}.
+
+\textbf{Note:} prior to version 1.13, the default value of
+\gloskey{firstplural} was always taken by appending \qt{s} to the
+\gloskey{first} key, which meant that you had to specify both
+\gloskey{plural} and \gloskey{firstplural}, even if you hadn't
+used the \gloskey{first} key.
+
+\item[{\gloskey{symbol}}] This field is provided to allow the user
+to specify an associated symbol. If omitted, the value is set to
+\cs{relax}. Note that not all glossary styles display the symbol.
+
+\item[{\gloskey{symbolplural}}] This is the plural form of the
+symbol (as passed to \ics{glsdisplay} and \ics{glsdisplayfirst}
+by \ics{glspl}, \ics{Glspl} and \ics{GLSpl}). If omitted, the value
+is set to the same as the \gloskey{symbol} key.
+
+\item[{\gloskey{sort}}] This value indicates how this entry should
+be sorted. If omitted, the value is given
+by the \gloskey{name} field unless one of the package options
+\pkgopt[def]{sort} and \pkgopt[use]{sort} have been used. In
+general, it's best to use the \gloskey{sort} key if the
+\gloskey{name} contains commands (e.g.\ \verb|\ensuremath{\alpha}|).
+You can also override the \gloskey{sort} key by redefining
+\ics{glsprestandardsort} (see \sectionref{sec:pkgopts-sort}).
+
+\opt1 by default strips the \glslink{latexexlatinchar}{standard
+\LaTeX\ accents} (that is, accents generated by core \LaTeX\ commands) from the
+\gloskey{name} key when it sets the \gloskey{sort} key. So with
+\opt1:
+\begin{verbatim}
+\newglossaryentry{elite}{%
+ name={{\'e}lite},
+ description={select group of people}
+}
+\end{verbatim}
+This is equivalent to:
+\begin{verbatim}
+\newglossaryentry{elite}{%
+ name={{\'e}lite},
+ description={select group of people},
+ sort={elite}
+}
+\end{verbatim}
+Unless you use the package option \pkgopt[true]{sanitizesort}, in
+which case it's equivalent to:
+\begin{verbatim}
+\newglossaryentry{elite}{%
+ name={{\'e}lite},
+ description={select group of people},
+ sort={\'elite}
+}
+\end{verbatim}
+This will place the entry before the \qt{A} letter group since the
+sort value starts with a symbol.
+
+Similarly if you use the \sty{inputenc} package:
+\begin{alltt}
+\verb|\newglossaryentry{elite}{%|
+ name=\verb|{{|\'e\verb|}|lite\verb|}|,
+ description=\verb|{select group of people}|
+\verb|}|
+\end{alltt}
+This is equivalent to
+\begin{alltt}
+\verb|\newglossaryentry{elite}{%|
+ name=\verb|{{|\'e\verb|}|lite\verb|}|,
+ description=\verb|{select group of people}|,
+ sort=elite
+\verb|}|
+\end{alltt}
+Unless you use the package option \pkgopt[true]{sanitizesort}, in
+which case it's equivalent to:
+\begin{alltt}
+\verb|\newglossaryentry{elite}{%|
+ name=\verb|{{|\'e\verb|}|lite\verb|}|,
+ description=\verb|{select group of people}|,
+ sort=\'elite
+\verb|}|
+\end{alltt}
+Again, this will place the entry before the \qt{A} group.
+
+With \optsand23, the default value of \gloskey{sort} will either be
+set to the \gloskey{name} key (if \pkgopt[true]{sanitizesort}) or it
+will set it to the expansion of the \gloskey{name} key (if
+\pkgopt[false]{sanitizesort}).
+
+\begin{important}
+Take care with \gls{xindy} (\opt3): if you have entries with the same
+\gloskey{sort} value they will be treated as the
+same entry. If you use \gls{xindy} and aren't using the \texttt{def}
+or \texttt{use} sort methods, \textbf{always} use the \gloskey{sort}
+key for entries where the name just consists of a control sequence
+(for example \texttt{name=\{\cs{alpha}\}}).
+
+Take care if you use \opt1 and the \gloskey{name} contains fragile
+commands. You will either need to explicitly set the \gloskey{sort}
+key or use the \pkgopt[true]{sanitizesort} package option (unless
+you use the \texttt{def} or \texttt{use} sort methods).
+\end{important}
+
+\item[{\gloskey{type}}] This specifies the label of the glossary in
+which this entry belongs. If omitted, the default glossary is
+assumed unless \ics{newacronym} is used (see
+\sectionref{sec:acronyms}).
+
+\item[{\gloskey{user1}, \ldots, \gloskey{user6}%
+\igloskey{user2}\igloskey{user3}\igloskey{user4}\igloskey{user5}}]
+Six keys provided for any additional information the user may want
+to specify. (For example, an associated dimension or an alternative
+plural or some other grammatical construct.) Alternatively, you can
+add new keys using \ics{glsaddkey} or \ics{glsaddstoragekey} (see \sectionref{sec:addkey}).
+
+\item[{\gloskey{nonumberlist}}] A boolean key. If the value is
+missing or is \texttt{true}, this will suppress the \gls{numberlist} just for
+this entry. Conversely, if you have used the package option
+\pkgopt{nonumberlist}, you can activate the \gls*{numberlist} just
+for this entry with \gloskey{nonumberlist=false}.
+(See \sectionref{sec:numberlists}.)
+
+\item[{\gloskey{see}}] Cross-reference another entry. Using the
+\gloskey{see} key will \emph{automatically add this entry to the
+glossary}, but will not automatically add the cross-referenced entry.
+The referenced entry should be supplied as the value to this key.
+If you want to override the \qt{see} tag, you can supply the new
+tag in square brackets before the label. For example
+\verb|see=[see also]{anotherlabel}|. \textbf{Note that if you have
+suppressed the \gls{numberlist}, the cross-referencing information
+won't appear in the glossary, as it forms part of the
+\gls*{numberlist}.} You can override this for individual
+glossary entries using \gloskey{nonumberlist=false} (see above).
+Alternatively, you can use the \pkgopt{seeautonumberlist} package
+option. For further details, see \sectionref{sec:crossref}.
+
+This key essentially provides a convenient shortcut that performs
+\begin{alltt}
+\cs{glssee}\oarg{tag}\marg{label}\marg{xr-label list}
+\end{alltt}
+after the entry has been defined.
+
+\begin{important}
+For \optsand23, \ics{makeglossaries} must be used before any occurrence of
+\ics{newglossaryentry} that contains the \gloskey{see} key. This key
+should not be used with entries defined in the \env{document} environment.
+\end{important}
+Since it's useful to suppress the indexing while working on a draft
+document, consider using the \pkgopt{seenoindex} package option to
+warn or ignore the \gloskey{see} key while \cs{makeglossaries} is
+commented out.
+
+If you use the \gloskey{see} key, you may want to consider using the
+\gls{glossaries-extra} package which additionally
+provides a \texttt{seealso} and \texttt{alias} key. If you want to
+avoid the automatic indexing triggered by the \gloskey{see} key,
+consider using \opt4.
+
+\end{description}
+
+The following keys are reserved for \ics{newacronym} (see
+\sectionref{sec:acronyms}): \gloskey{long}, \gloskey{longplural},
+\gloskey{short} and \gloskey{shortplural}.
+
+\begin{important}
+Avoid using any of the \glslike\ or \glstextlike\ commands within
+the \gloskey{text}, \gloskey{first}, \gloskey{short} or
+\gloskey{long} keys (or their plural equivalent) or any
+other key that you plan to access through those commands.
+(For example, the \gloskey{symbol} key if you intend to use
+\cs{glssymbol}.) Otherwise you end up with nested links, which
+can cause complications and they won't work with the case-changing
+commands. You can use them within the value of keys
+that won't be accessed through those commands. For example,
+the \gloskey{description} key if you don't use \cs{glsdesc}.
+Additionally, they'll confuse the entry formatting commands, such as
+\cs{glslabel}.
+\end{important}
+
+Note that if the name starts with
+\gls{nonlatinchar}, you must group the character, otherwise it will
+cause a problem for commands like \ics{Gls} and \ics{Glspl}.
+For example:
+\begin{verbatim}
+\newglossaryentry{elite}{name={{\'e}lite},
+description={select group or class}}
+\end{verbatim}
+Note that the same applies if you are using the \sty{inputenc}
+package:
+\begin{alltt}
+\verb|\newglossaryentry{elite}{name={{|\'e\verb|}lite},|
+description=\verb|{select group or class}}|
+\end{alltt}
+(This doesn't apply for \XeLaTeX\ documents using the \sty{fontspec}
+package. For further details, see the \qt{UTF-8} section in the
+\sty{mfirstuc} user manual.)
+
+Note that in both of the above examples, you will also need to
+supply the \gloskey{sort} key if you are using \opt2
+whereas \gls{xindy} (\opt3) is usually able to sort
+\glspl{nonlatinchar}
+correctly. \opt1 discards accents from
+\glspl{latexexlatinchar} unless you use the \pkgopt[true]{sanitizesort}.
+
+
+\section{Plurals}
+\label{sec:plurals}
+
+You may have noticed from above that you can specify the plural form
+when you define a term. If you omit this, the plural will be
+obtained by appending
+\begin{definition}[\DescribeMacro{\glspluralsuffix}]
+\cs{glspluralsuffix}
+\end{definition}
+to the singular form. This command defaults to the letter \qt{s}.
+For example:
+\begin{verbatim}
+\newglossaryentry{cow}{name=cow,description={a fully grown
+female of any bovine animal}}
+\end{verbatim}
+defines a new entry whose singular form is \qt{cow} and plural form
+is \qt{cows}. However, if you are writing in archaic English, you
+may want to use \qt{kine} as the plural form, in which case you
+would have to do:
+\begin{verbatim}
+\newglossaryentry{cow}{name=cow,plural=kine,
+description={a fully grown female of any bovine animal}}
+\end{verbatim}
+
+If you are writing in a language that supports
+multiple plurals (for a given term) then use the \gloskey{plural} key
+for one of them and one of the user keys to specify the
+other plural form. For example:
+\begin{verbatim}
+\newglossaryentry{cow}{%
+ name=cow,%
+ description={a fully grown female of any bovine animal
+ (plural cows, archaic plural kine)},%
+ user1={kine}}
+\end{verbatim}
+You can then use \verb|\glspl{cow}| to produce \qt{cows} and
+\verb|\glsuseri{cow}| to produce \qt{kine}. You can, of course,
+define an easy to remember synonym. For example:
+\begin{verbatim}
+\let\glsaltpl\glsuseri
+\end{verbatim}
+Then you don't have to remember which key you used to store the
+second plural. Alternatively, you can define your own keys using
+\ics{glsaddkey}, described in \sectionref{sec:addkey}.
+
+If you are using a language that usually forms plurals
+by appending a different letter, or sequence of letters, you can
+redefine \cs{glspluralsuffix} as required. However, this must be
+done \emph{before} the entries are defined. For languages that don't
+form plurals by simply appending a suffix, all the plural forms must be
+specified using the \gloskey{plural} key (and the \gloskey{firstplural}
+key where necessary).
+
+\section{Other Grammatical Constructs}
+\label{sec:grammar}
+
+You can use the six user keys to provide alternatives, such as
+participles. For example:
+\begin{verbatim}
+\let\glsing\glsuseri
+\let\glsd\glsuserii
+
+\newcommand*{\ingkey}{user1}
+\newcommand*{\edkey}{user2}
+
+\newcommand*{\newword}[3][]{%
+ \newglossaryentry{#2}{%
+ name={#2},%
+ description={#3},%
+ \edkey={#2ed},%
+ \ingkey={#2ing},#1%
+ }%
+}
+\end{verbatim}
+With the above definitions, I can now define terms like this:
+\begin{verbatim}
+\newword{play}{to take part in activities for enjoyment}
+\newword[\edkey={ran},\ingkey={running}]{run}{to move fast using
+the legs}
+\end{verbatim}
+and use them in the text:
+\begin{verbatim}
+Peter is \glsing{play} in the park today.
+
+Jane \glsd{play} in the park yesterday.
+
+Peter and Jane \glsd{run} in the park last week.
+\end{verbatim}
+
+Alternatively, you can define your own keys using
+\ics{glsaddkey}, described below in \sectionref{sec:addkey}.
+
+\section{Additional Keys}
+\label{sec:addkey}
+
+You can now also define your own custom keys using the
+commands described in this section. There are two types of keys:
+those for use within the document and those to store information
+used behind the scenes by other commands.
+
+For example, if you want to add a key that indicates the associated
+unit for a~term, you might want to reference this unit in your
+document. In this case use \cs{glsaddkey} described in
+\sectionref{sec:glsaddkey}. If, on the other hand, you want to add a
+key to indicate to a glossary style or acronym style that this entry
+should be formatted differently to other entries, then you can use
+\cs{glsaddstoragekey} described in \sectionref{sec:glsaddstoragekey}.
+
+In both cases, a new command \meta{no link cs} will be defined that
+can be used to access the value of this key (analogous to commands
+such as \cs{glsentrytext}). This can be used in an expandable
+context (provided any fragile commands stored in the key have been
+protected). The new keys must be added using \cs{glsaddkey} or
+\cs{glsaddstoragekey} before glossary entries are defined.
+
+\subsection{Document Keys}
+\label{sec:glsaddkey}
+
+A custom key that can be used in the document is defined using:
+\begin{definition}[\DescribeMacro\glsaddkey]
+\cs{glsaddkey}\marg{key}%
+\marg{default value}%
+\marg{no link cs}%
+\marg{no link ucfirst cs}%
+\marg{link cs}%
+\marg{link ucfirst cs}%
+\marg{link allcaps cs}
+\end{definition}
+where:
+\begin{description}
+\item[\meta{key}] is the new key to use in \ics{newglossaryentry}
+(or similar commands such as \ics{longnewglossaryentry});
+\item[\meta{default value}] is the default value to use if this key
+isn't used in an entry definition (this may reference the current
+entry label via \cs{glslabel}, but you will have to switch on
+expansion via the starred version of \cs{glsaddkey} and protect
+fragile commands);
+\item[\meta{no link cs}] is the control sequence to use analogous
+to commands like \ics{glsentrytext};
+\item[\meta{no link ucfirst cs}] is the control sequence to use analogous
+to commands like \ics{Glsentrytext};
+\item[\meta{link cs}] is the control sequence to use analogous
+to commands like \ics{glstext};
+\item[\meta{link ucfirst cs}] is the control sequence to use analogous
+to commands like \ics{Glstext};
+\item[\meta{link allcaps cs}] is the control sequence to use analogous
+to commands like \ics{GLStext}.
+\end{description}
+The starred version of \cs{glsaddkey} switches on expansion for this
+key. The unstarred version doesn't override the current expansion
+setting.
+
+\begin{example}{Defining Custom Keys}{ex:addkey}
+Suppose I want to define two new keys, \texttt{ed} and \texttt{ing},
+that default to the entry text followed by \qt{ed} and \qt{ing},
+respectively. The default value will need expanding in both cases, so
+I need to use the starred form:
+\begin{verbatim}
+ % Define "ed" key:
+ \glsaddkey*
+ {ed}% key
+ {\glsentrytext{\glslabel}ed}% default value
+ {\glsentryed}% command analogous to \glsentrytext
+ {\Glsentryed}% command analogous to \Glsentrytext
+ {\glsed}% command analogous to \glstext
+ {\Glsed}% command analogous to \Glstext
+ {\GLSed}% command analogous to \GLStext
+
+ % Define "ing" key:
+ \glsaddkey*
+ {ing}% key
+ {\glsentrytext{\glslabel}ing}% default value
+ {\glsentrying}% command analogous to \glsentrytext
+ {\Glsentrying}% command analogous to \Glsentrytext
+ {\glsing}% command analogous to \glstext
+ {\Glsing}% command analogous to \Glstext
+ {\GLSing}% command analogous to \GLStext
+\end{verbatim}
+Now I can define some entries:
+\begin{verbatim}
+ % No need to override defaults for this entry:
+
+ \newglossaryentry{jump}{name={jump},description={}}
+
+ % Need to override defaults on these entries:
+
+ \newglossaryentry{run}{name={run},%
+ ed={ran},%
+ ing={running},%
+ description={}}
+
+ \newglossaryentry{waddle}{name={waddle},%
+ ed={waddled},%
+ ing={waddling},%
+ description={}}
+\end{verbatim}
+
+These entries can later be used in the document:
+\begin{verbatim}
+The dog \glsed{jump} over the duck.
+
+The duck was \glsing{waddle} round the dog.
+
+The dog \glsed{run} away from the duck.
+\end{verbatim}
+For a complete document, see the sample file \samplefile{-newkeys}.
+\end{example}
+
+\subsection{Storage Keys}
+\label{sec:glsaddstoragekey}
+
+A custom key that can be used for simply storing information is
+defined using:
+\begin{definition}[\DescribeMacro\glsaddstoragekey]
+\cs{glsaddstoragekey}\marg{key}\marg{default value}\marg{no link cs}
+\end{definition}
+where the arguments are as the first three arguments of
+\cs{glsaddkey}, described above in \sectionref{sec:glsaddkey}.
+
+This is essentially the same as \cs{glsaddkey} except that it
+doesn't define the additional commands. You can access or update
+the value of your new field using the commands described in
+\sectionref{sec:fetchset}.
+
+\begin{example}{Defining Custom Storage Key (Acronyms and Initialisms)}{ex:addstoragekey}
+Suppose I want to define acronyms and other forms of abbreviations,
+such as initialisms, but I want them all in the same glossary and I
+want the acronyms on first use to be displayed with the short form followed by
+the long form in parentheses, but the opposite way round for other
+forms of abbreviations. (The \gls{glossaries-extra} package
+provides a simpler way of achieving this.)
+
+Here I can define a new key that determines whether the term is
+actually an acronym rather than some other form of abbreviation. I'm
+going to call this key \texttt{abbrtype} (since \texttt{type}
+already exists):
+\begin{verbatim}
+\glsaddstoragekey
+ {abbrtype}% key/field name
+ {word}% default value if not explicitly set
+ {\abbrtype}% custom command to access the value if required
+\end{verbatim}
+
+Now I can define a style that looks up the value of this new key to
+determine how to display the full form:
+\begin{verbatim}
+\newacronymstyle
+ {mystyle}% style name
+ {% Use the generic display
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+ }
+ {% Put the long form in the description
+ \renewcommand*{\GenericAcronymFields}{%
+ description={\the\glslongtok}}%
+ % For the full format, test the value of the "abbrtype" key.
+ % If it's set to "word" put the short form first with
+ % the long form in brackets.
+ \renewcommand*{\genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % first letter upper case version:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % plural
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % plural and first letter upper case
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % Just use the short form as the name part in the glossary:
+ \renewcommand*{\acronymentry}[1]{%
+ \acronymfont{\glsentryshort{##1}}}%
+ % Sort by the short form:
+ \renewcommand*{\acronymsort}[2]{##1}%
+ % Just use the surrounding font for the short form:
+ \renewcommand*{\acronymfont}[1]{##1}%
+ % Same for first use:
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ % Default plural suffix if the plural isn't explicitly set
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ }
+\end{verbatim}
+Remember that the new style needs to be set before defining any
+terms:
+\begin{verbatim}
+\setacronymstyle{mystyle}
+\end{verbatim}
+
+Since it's a bit confusing to use \ics{newacronym} for something
+that's not technically an acronym, let's define a new command for
+initialisms:
+\begin{verbatim}
+\newcommand*{\newinitialism}[4][]{%
+ \newacronym[abbrtype=initialism,#1]{#2}{#3}{#4}%
+}
+\end{verbatim}
+Now the entries can all be defined:
+\begin{verbatim}
+\newacronym{radar}{radar}{radio detecting and ranging}
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+\newacronym{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+\newinitialism{dsp}{DSP}{digital signal processing}
+\newinitialism{atm}{ATM}{automated teller machine}
+\end{verbatim}
+On \gls{firstuse}, \verb|\gls{radar}| will produce \qt{radar (radio
+detecting and ranging)} but \verb|\gls{dsp}| will produce \qt{DSP
+(digital signal processing)}.
+
+For a complete document, see the sample file
+\samplefile{-storage-abbr}.
+\end{example}
+
+In the above example, if \cs{newglossaryentry} is explicitly used
+(instead of through \cs{newacronym}) the \texttt{abbrtype} key will
+be set to its default value of \qt{word} but the \cs{ifglshaslong}
+test in the custom acronym style will be false (since the
+\gloskey{long} key hasn't been set) so the display style will switch
+to that given by \cs{glsgenentryfmt} and they'll be no test
+performed on the \texttt{abbrtype} field.
+
+\begin{example}{Defining Custom Storage Key (Acronyms and
+Non-Acronyms with Descriptions)}{ex:addstoragekey2}
+The previous example can be modified if the \gloskey{description}
+also needs to be provided. Here I've changed \qt{word} to
+\qt{acronym}:
+\begin{verbatim}
+\glsaddstoragekey
+ {abbrtype}% key/field name
+ {acronym}% default value if not explicitly set
+ {\abbrtype}% custom command to access the value if required
+\end{verbatim}
+This may seem a little odd for non-abbreviated entries defined using
+\cs{newglossaryentry} directly, but \ics{ifglshaslong} can be used
+to determine whether or not to reference the value of this new
+\texttt{abbrtype} field.
+
+The new acronym style has a~minor modification that forces the user
+to specify a description. In the previous example, the line:
+\begin{verbatim}
+ \renewcommand*{\GenericAcronymFields}{%
+ description={\the\glslongtok}}%
+\end{verbatim}
+needs to be changed to:
+\begin{verbatim}
+ \renewcommand*{\GenericAcronymFields}{}%
+\end{verbatim}
+Additionally, to accommodate the change in the default value of the
+\texttt{abbrtype} key, all instances of
+\begin{verbatim}
+ \ifglsfieldeq{##1}{abbrtype}{word}
+\end{verbatim}
+need to be changed to:
+\begin{verbatim}
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+\end{verbatim}
+
+Once this new style has been set, the new acronyms can be defined
+using the optional argument to set the description:
+\begin{verbatim}
+\newacronym[description={system for detecting the position and
+speed of aircraft, ships, etc}]{radar}{radar}{radio detecting
+and ranging}
+\end{verbatim}
+
+No change is required for the definition of \cs{newinitialism} but
+again the optional argument is required to set the description:
+\begin{verbatim}
+\newinitialism[description={mathematical manipulation of an
+information signal}]{dsp}{DSP}{digital signal processing}
+\end{verbatim}
+
+We can also accommodate contractions in a similar manner to the
+initialisms:
+\begin{verbatim}
+\newcommand*{\newcontraction}[4][]{%
+ \newacronym[abbrtype=contraction,#1]{#2}{#3}{#4}%
+}
+\end{verbatim}
+The contractions can similarly been defined using this new command:
+\begin{verbatim}
+\newcontraction[description={front part of a ship below the
+deck}]{focsle}{fo'c's'le}{forecastle}
+\end{verbatim}
+
+Since the custom acronym style just checks if \texttt{abbrtype} is
+\texttt{acronym}, the contractions will be treated the same as the
+initialisms, but the style could be modified by a further test of
+the \texttt{abbrtype} value if required.
+
+To test regular non-abbreviated entries, I've also defined a simple
+word:
+\begin{verbatim}
+\newglossaryentry{apple}{name={apple},description={a fruit}}
+\end{verbatim}
+
+Now for a new glossary style that provides information about the
+abbreviation (in addition to the description):
+\begin{verbatim}
+\newglossarystyle
+ {mystyle}% style name
+ {% base it on the "list" style
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \ifglshaslong{##1}%
+ { (\abbrtype{##1}: \glsentrylong{##1})\space}{}%
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ }
+\end{verbatim}
+This uses \ics{ifglshaslong} to determine whether or not the term is
+an abbreviation. If it has an abbreviation, the full form is
+supplied in parentheses and \cs{abbrtype} (defined by
+\cs{glsaddstoragekey} earlier) is used to indicate the type of
+abbreviation.
+
+With this style set, the \texttt{apple} entry is simply displayed in
+the glossary as
+\begin{description}
+\item[apple] a fruit.
+\end{description}
+but the abbreviations are displayed in the form
+\begin{description}
+\item[laser] (acronym: light amplification by
+stimulated emission of radiation) device that creates a narrow beam
+of intense light.
+\end{description}
+(for acronyms) or
+\begin{description}
+\item[DSP] (initialism: digital signal processing) mathematical
+manipulation of an information signal.
+\end{description}
+(for initalisms) or
+\begin{description}
+\item[fo'c's'le] (contraction: forecastle) front part of a ship
+below the deck.
+\end{description}
+(for contractions).
+
+For a complete document, see \samplefile{-storage-abbr-desc}.
+\end{example}
+
+\section{Expansion}
+\label{sec:expansion}
+
+When you define new glossary entries expansion is performed by
+default, except for the \gloskey{name}, \gloskey{description},
+\gloskey{descriptionplural}, \gloskey{symbol}, \gloskey{symbolplural}
+and \gloskey{sort} keys (these keys all have expansion suppressed via
+\cs{glssetnoexpandfield}).
+
+You can switch expansion on or off for individual keys using
+\begin{definition}[\DescribeMacro\glssetexpandfield]
+\cs{glssetexpandfield}\marg{field}
+\end{definition}
+or
+\begin{definition}[\DescribeMacro\glssetnoexpandfield]
+\cs{glssetnoexpandfield}\marg{field}
+\end{definition}
+respectively, where \meta{field} is the field tag corresponding to
+the key. In most cases, this is the same as the name of the key
+except for those listed in \tableref{tab:fieldmap}.
+
+\begin{table}[htbp]
+\caption{Key to Field Mappings}
+\label{tab:fieldmap}
+\centering
+\begin{tabular}{ll}
+\bfseries Key & \bfseries Field\\
+\gloskey{sort} & \ttfamily sortvalue\\
+\gloskey{firstplural} & \ttfamily firstpl\\
+\gloskey{description} & \ttfamily desc\\
+\gloskey{descriptionplural} & \ttfamily descplural\\
+\gloskey{user1} & \ttfamily useri\\
+\gloskey{user2} & \ttfamily userii\\
+\gloskey{user3} & \ttfamily useriii\\
+\gloskey{user4} & \ttfamily useriv\\
+\gloskey{user5} & \ttfamily userv\\
+\gloskey{user6} & \ttfamily uservi\\
+\gloskey{longplural} & \ttfamily longpl\\
+\gloskey{shortplural} & \ttfamily shortpl
+\end{tabular}
+\end{table}
+
+Any keys that haven't had the expansion explicitly set using
+\cs{glssetexpandfield} or \cs{glssetnoexpandfield} are governed by
+\begin{definition}[\DescribeMacro\glsexpandfields]
+\cs{glsexpandfields}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glsnoexpandfields]
+\cs{glsnoexpandfields}
+\end{definition}
+
+If your entries contain any fragile commands, I recommend you switch
+off expansion via \cs{glsnoexpandfields}. (This should be used
+before you define the entries.)
+
+\section{Sub-Entries}
+\label{sec:subentries}
+
+As from version 1.17, it is possible to specify sub-entries. These
+may be used to order the glossary into categories, in which case the
+sub-entry will have a different name to its parent entry, or it may
+be used to distinguish different definitions for the same word, in
+which case the sub-entries will have the same name as the parent
+entry. Note that not all glossary styles support hierarchical
+entries and may display all the entries in a flat format. Of the
+styles that support sub-entries, some display the sub-entry's name
+whilst others don't. Therefore you need to ensure that you use a
+suitable style. (See \sectionref{sec:styles} for a list of predefined
+styles.) As from version 3.0, level~1 sub-entries are automatically
+numbered in the predefined styles if you use the
+\pkgopt{subentrycounter} package option (see
+\sectionref{sec:pkgopts-printglos} for further details).
+
+Note that the parent entry will automatically be added to the
+glossary if any of its child entries are used in the document.
+If the parent entry is not referenced in the document, it will not
+have a \gls{numberlist}. Note also that \gls{makeindex} has a
+restriction on the maximum sub-entry depth.
+
+\subsection{Hierarchical Categories}
+\label{sec:hierarchical}
+
+To arrange a glossary with hierarchical categories, you need to
+first define the category and then define the sub-entries using the
+relevant category entry as the value of the \gloskey{parent} key.
+
+\begin{example}{Hierarchical Categories---Greek and Roman
+Mathematical Symbols}{ex:hierarchical}
+
+Suppose I want a glossary of mathematical symbols that
+are divided into Greek letters and Roman letters. Then I can define
+the categories as follows:
+\begin{verbatim}
+\newglossaryentry{greekletter}{name={Greek letters},
+description={\nopostdesc}}
+
+\newglossaryentry{romanletter}{name={Roman letters},
+description={\nopostdesc}}
+\end{verbatim}
+
+Note that in this example, the category entries don't need a
+description so I have set the descriptions to \ics{nopostdesc}.
+This gives a blank description and suppresses the
+description terminator.
+
+I can now define my sub-entries as follows:
+\begin{verbatim}
+\newglossaryentry{pi}{name={\ensuremath{\pi}},sort={pi},
+description={ratio of the circumference of a circle to
+the diameter},
+parent=greekletter}
+
+\newglossaryentry{C}{name={\ensuremath{C}},sort={C},
+description={Euler's constant},
+parent=romanletter}
+\end{verbatim}
+For a complete document, see the sample file \samplefile{tree}.
+\end{example}
+
+\subsection{Homographs}
+\label{sec:homographs}
+
+Sub-entries that have the same name as the parent entry, don't need
+to have the \gloskey{name} key. For example, the word \qt{glossary}
+can mean a list of technical words or a collection of glosses. In
+both cases the plural is \qt{glossaries}. So first define the parent
+entry:
+\begin{verbatim}
+\newglossaryentry{glossary}{name=glossary,
+description={\nopostdesc},
+plural={glossaries}}
+\end{verbatim}
+Again, the parent entry has no description, so the description
+terminator needs to be suppressed using \ics{nopostdesc}.
+
+Now define the two different meanings of the word:
+\begin{verbatim}
+\newglossaryentry{glossarylist}{
+description={list of technical words},
+sort={1},
+parent={glossary}}
+
+\newglossaryentry{glossarycol}{
+description={collection of glosses},
+sort={2},
+parent={glossary}}
+\end{verbatim}
+Note that if I reference the parent entry, the location will be
+added to the parent's \gls{numberlist}, whereas if I reference any
+of the child entries, the location will be added to the child
+entry's number list. Note also that since the sub-entries have the
+same name, the \gloskey{sort} key is required unless you are using
+the \pkgopt[use]{sort} or \pkgopt[def]{sort} package options (see
+\sectionref{sec:pkgopts-sort}). You
+can use the \pkgopt{subentrycounter} package option to automatically
+number the first-level child entries. See
+\sectionref{sec:pkgopts-printglos} for further details.
+
+In the above example, the plural form for both of the child entries
+is the same as the parent entry, so the \gloskey{plural} key was
+not required for the child entries. However, if the sub-entries
+have different plurals, they will need to be specified. For example:
+\begin{verbatim}
+\newglossaryentry{bravo}{name={bravo},
+description={\nopostdesc}}
+
+\newglossaryentry{bravocry}{description={cry of approval
+(pl.\ bravos)},
+sort={1},
+plural={bravos},
+parent=bravo}
+
+\newglossaryentry{bravoruffian}{description={hired
+ruffian or killer (pl.\ bravoes)},
+sort={2},
+plural={bravoes},
+parent=bravo}
+\end{verbatim}
+
+
+\section{Loading Entries From a File}
+\label{sec:loadglsentries}
+
+You can store all your glossary entry definitions in another
+file and use:
+\begin{definition}[\DescribeMacro{\loadglsentries}]
+\cs{loadglsentries}\oarg{type}\marg{filename}
+\end{definition}
+where \meta{filename} is the name of the file containing all the
+\ics{newglossaryentry} or \ics{longnewglossaryentry} commands.
+The optional argument
+\meta{type} is the name of the glossary to which those entries
+should belong, for those entries where the \gloskey{type} key has
+been omitted (or, more specifically, for those entries whose
+type has been specified by \ics{glsdefaulttype}, which is what
+\ics{newglossaryentry} uses by default).
+
+This is a~preamble-only command. You may also use \ics{input} to load
+the file but don't use \ics{include}. If you find that your file is
+becoming unmanageably large, you may want to consider switching to
+\gls{bib2gls} and use an application such as JabRef to manage the
+entry definitions.
+
+\begin{important}
+If you want to use \ics{AtBeginDocument} to \cs{input} all your entries
+automatically at the start of the document, add the
+\cs{AtBeginDocument} command \emph{before} you load the
+\sty{glossaries} package (and \sty{babel}, if you are also loading
+that) to avoid the creation of the
+\filetype{.glsdefs} file and any associated problems that are caused
+by defining commands in the \env{document} environment.
+(See \sectionref{sec:docdefs}.)
+\end{important}
+
+\begin{example}{Loading Entries from Another File}{ex:loadgls}
+Suppose I have a file called \texttt{myentries.tex} which contains:
+\begin{verbatim}
+\newglossaryentry{perl}{type=main,
+name={Perl},
+description={A scripting language}}
+
+\newglossaryentry{tex}{name={\TeX},
+description={A typesetting language},sort={TeX}}
+
+\newglossaryentry{html}{type=\glsdefaulttype,
+name={html},
+description={A mark up language}}
+\end{verbatim}
+and suppose in my document preamble I use the command:
+\begin{verbatim}
+\loadglsentries[languages]{myentries}
+\end{verbatim}
+then this will add the entries \texttt{tex} and \texttt{html}
+to the glossary whose type is given by \texttt{languages}, but
+the entry \texttt{perl} will be added to the main glossary, since
+it explicitly sets the type to \texttt{main}.
+\end{example}
+
+\textbf{Note:} if you use \ics{newacronym} (see
+\sectionref{sec:acronyms}) the type is set as
+\verb|type=\acronymtype| unless you explicitly override it. For
+example, if my file \texttt{myacronyms.tex} contains:
+\begin{verbatim}
+\newacronym{aca}{aca}{a contrived acronym}
+\end{verbatim}
+then (supposing I have defined a new glossary type called
+\texttt{altacronym})
+\begin{verbatim}
+\loadglsentries[altacronym]{myacronyms}
+\end{verbatim}
+will add \texttt{aca} to the glossary type \texttt{acronym}, if the
+package option \pkgopt{acronym} has been specified, or will add
+\texttt{aca} to the glossary type \texttt{altacronym}, if the
+package option \pkgopt{acronym} is not specified.\footnote{This is
+because \ics{acronymtype} is set to \ics{glsdefaulttype} if the
+\pkgopt{acronym} package option is not used.}
+
+If you have used the \pkgopt{acronym} package option,
+there are two possible solutions to this problem:
+\begin{enumerate}
+\item Change \texttt{myacronyms.tex} so that entries are defined in
+the form:
+\begin{verbatim}
+\newacronym[type=\glsdefaulttype]{aca}{aca}{a
+contrived acronym}
+\end{verbatim}
+and do:
+\begin{verbatim}
+\loadglsentries[altacronym]{myacronyms}
+\end{verbatim}
+
+\item Temporarily change \cs{acronymtype} to the target glossary:
+\begin{verbatim}
+\let\orgacronymtype\acronymtype
+\renewcommand{\acronymtype}{altacronym}
+\loadglsentries{myacronyms}
+\let\acronymtype\orgacronymtype
+\end{verbatim}
+\end{enumerate}
+
+Note that only those entries that have been used
+in the text will appear in the relevant glossaries.
+Note also that \cs{loadglsentries} may only be used in the
+preamble.
+
+Remember that you can use \ics{provideglossaryentry} rather than
+\ics{newglossaryentry}. Suppose you want to maintain a large database
+of acronyms or terms that you're likely to use in your documents,
+but you may want to use a modified version of some of those entries.
+(Suppose, for example, one document may require a more detailed
+description.) Then if you define the entries using
+\cs{provideglossaryentry} in your database file, you can override
+the definition by simply using \cs{newglossaryentry} before loading
+the file. For example, suppose your file (called, say,
+\texttt{terms.tex}) contains:
+\begin{verbatim}
+\provideglossaryentry{mallard}{name=mallard,
+ description={a type of duck}}
+\end{verbatim}
+but suppose your document requires a more detailed description, you
+can do:
+\begin{verbatim}
+\usepackage{glossaries}
+\makeglossaries
+
+\newglossaryentry{mallard}{name=mallard,
+ description={a dabbling duck where the male has a green head}}
+
+\loadglsentries{terms}
+\end{verbatim}
+Now the \texttt{mallard} definition in the \texttt{terms.tex} file
+will be ignored.
+
+\section{Moving Entries to Another Glossary}
+\label{sec:moveentry}
+
+As from version~3.02, you can move an entry from one glossary to
+another using:
+\begin{definition}[\DescribeMacro{\glsmoveentry}]
+\cs{glsmoveentry}\marg{label}\marg{target glossary label}
+\end{definition}
+where \meta{label} is the unique label identifying the required
+entry and \meta{target glossary label} is the unique label
+identifying the glossary in which to put the entry.
+
+Note that no check is performed to determine the existence of
+the target glossary. If you want to move an entry to a glossary
+that's skipped by \ics{printglossaries}, then define an ignored
+glossary with \ics{newignoredglossary}. (See
+\sectionref{sec:newglossary}.)
+
+\begin{important}
+Unpredictable results may occur if you move an entry to a different
+glossary from its parent or children.
+\end{important}
+
+\section{Drawbacks With Defining Entries in the Document Environment}
+\label{sec:docdefs}
+
+Originally, \ics{newglossaryentry} (and \ics{newacronym}) could only be
+used in the preamble. I reluctantly removed this restriction in version 1.13,
+but there are issues with defining commands in the \env{document}
+environment instead of the preamble, which is why the restriction is
+maintained for newer commands. This restriction is also reimposed
+for \cs{newglossaryentry} by the new \opt1. (The
+\gls{glossaries-extra} package automatically reimposes this restriction for
+\optsand23 but provides a package option to allow document
+definitions.)
+
+\subsection{Technical Issues}
+\label{sec:techissues}
+
+\begin{enumerate}
+ \item If you define an entry mid-way through your document, but
+subsequently shuffle sections around, you could end up using an
+entry before it has been defined.
+
+ \item Entry information is required when displaying the glossary.
+If this occurs at the start of the document, but the entries aren't
+defined until later, then the entry details are
+being looked up before the entry has been defined.
+
+ \item If you use a package, such as \sty{babel}, that makes
+certain characters active at the start of the \env{document}
+environment, there will be a~problem if those characters have
+a~special significance when defining glossary entries.
+These characters include the double-quote \verb|"| character, the
+exclamation mark \texttt{!} character, the question mark \verb|?|
+character, and the pipe \verb"|" character. They
+must not be active when defining a~glossary entry where they occur
+in the \gloskey{sort} key (and they should be avoided in the label
+if they may be active at any point in the document). Additionally,
+the comma \texttt{,} character and the equals \texttt{=} character
+should not be active when using commands that have
+\meta{key}=\meta{value} arguments.
+
+\end{enumerate}
+
+To overcome the first two problems, as from version 4.0 the
+\styfmt{glossaries} package modifies the definition of
+\cs{newglossaryentry} at the beginning of the \env{document}
+environment so that the definitions are written to an external file
+(\cs{jobname}\filetype{.glsdefs}) which is then read in at the start
+of the document on the next run. The entry will then only be defined
+in the \env{document} environment if it doesn't already exist. This
+means that the entry can now be looked up in the glossary, even if
+the glossary occurs at the beginning of the document.
+
+There are drawbacks to this mechanism: if you modify an entry
+definition, you need a second run to see the effect of your
+modification; this method requires an extra \cs{newwrite}, which may
+exceed \TeX's maximum allocation; unexpected expansion issues could
+occur; the \gloskey{see} key isn't stored, which means it can't be
+added to the \filetype{.glsdefs} file when it's created at the end of the
+document (and therefore won't be present on subsequent runs).
+
+The \gls{glossaries-extra} package provides a setting (but only for
+\optsand23) that allows \cs{newglossaryentry} to occur in the
+document environment but doesn't create the \filetype{.glsdefs}
+file. This circumvents some problems but it means that you can't
+display any of the glossaries before all the entries have been
+defined (so it's all right if all the glossaries are at the end of
+the document but not if any occur in the front matter).
+
+\subsection{Good Practice Issues}
+\label{sec:goodpractice}
+
+The above section covers technical issues that can cause your document to have
+compilation errors or produce incorrect output. This section
+focuses on good writing practice. The main reason cited by users
+wanting to define entries within the \env{document} environment rather
+than in the preamble is that they want to write the definition as
+they type in their document text. This suggests a \qt{stream of
+consciousness} style of writing that may be acceptable in certain
+literary genres but is inappropriate for factual documents.
+
+When you write technical documents, regardless of whether it's a PhD
+thesis or an article for a~journal or proceedings, you must plan what you write
+in advance. If you plan in advance, you should have a fairly good
+idea of the type of terminology that your document will contain,
+so while you are planning, create a new file with all your entry
+definitions. If, while you're writing your document, you remember
+another term you need, then you can switch over to your definition file and
+add it. Most text editors have the ability to have more than one
+file open at a time. The other advantage to this approach is that if
+you forget the label, you can look it up in the definition file
+rather than searching through your document text to find the
+definition.
+
+\chapter{Number lists}
+\label{sec:numberlists}
+
+Each entry in the glossary has an associated \gls{numberlist}.
+By default, these numbers refer to the pages on which that entry has
+been indexed (using any of the commands described in
+\sectionref{sec:glslink} and \sectionref{sec:glsadd}). The number
+list can be suppressed using the \pkgopt{nonumberlist} package
+option, or an alternative counter can be set as the default using
+the \pkgopt{counter} package option. The number list is also
+referred to as the location list\index{location list|see{number list}}.
+
+\Glspl{numberlist} are more common with indexes rather than
+glossaries (although you can use the \styfmt{glossaries} package for
+indexes as well). However, the \styfmt{glossaries} package makes use
+of \gls{makeindex} or \gls{xindy} to hierarchically sort and collate the
+entries since they are readily available with most modern \TeX\
+distributions. Since these are both designed as \glspl{indexingapp}
+they both require that terms either have a valid location or a
+cross-reference. Even if you use \pkgopt{nonumberlist}, the
+locations must still be provided and acceptable to the
+\gls{indexingapp} or they will cause an error during the indexing
+stage, which will interrupt the document build. However, if you're
+not interested in the locations, each entry only needs to be indexed
+once, so consider using \pkgopt{indexonlyfirst}, which can improve the
+document build time by only indexing the \gls{firstuse} of each term.
+
+The \ics{glsaddall} command (see \sectionref{sec:glsadd}), which is used to
+automatically index all entries, iterates over all defined entries
+and does \cs{glsadd}\marg{label} for each entry (where \meta{label}
+is that entry's label). This means that \cs{glsaddall} automatically
+adds the same location to every entry's \gls{numberlist}, which
+looks weird if the \gls*{numberlist} hasn't been suppressed.
+
+With \opt4, the indexing is performed by \gls{bib2gls}, which was
+specifically designed for the \gls{glossaries-extra} package. So it
+will allow any location format, and its \texttt{selection=all}
+option will select all entries without adding an unwanted location to the
+\gls{numberlist}. If \gls{bib2gls} can deduce a numerical value for
+a location, it will attempt to form a range over consecutive
+locations, otherwise it won't try to form a range and the
+location will just form an individual item in the list.
+\opt1 also allows any location but it doesn't form ranges.
+
+\section{Encap Values}
+\label{sec:encap}
+
+Each location in the \gls{numberlist} is encapsulated with a
+command formed from the \termdef{encap} value. By
+default this is the \ics{glsnumberformat} command, which corresponds
+to the encap \texttt{glsnumberformat}, but this may be
+overridden using the \gloskey[glslink]{format} key in the optional
+argument to commands like \cs{gls}. (See \sectionref{sec:glslink}.)
+For example, you may want the location to appear in bold to indicate
+the principle use of a term or symbol. If the encap starts with an
+open parenthesis~\verb|(| this signifies the start of a range and if
+the encap starts with close parenthesis~\verb|)| this signifies the
+end of a range. These must always occur in matching pairs.
+
+The \styfmt{glossaries} package provides the command \ics{glsignore}
+which ignores its argument. This is the format used by
+\cs{glsaddallunused} to suppress the location, which works fine as
+long as no other locations are added to the \gls{numberlist}. For
+example, if you use \verb|\gls{sample}| on page~2 then reset the
+\gls{firstuseflag} and then use \cs{glsaddallunused} on page~10, the
+\gls{numberlist} for \texttt{sample} will be \verb|2, \glsignore{10}|
+which will result in \qt{2,~} which has a spurious comma.
+
+This isn't a problem with \gls{bib2gls} because you'd use
+\texttt{selection=all} instead of \cs{glsaddallunused}, but even if
+you explicitly had, for example,
+\cs{gls}\texttt{[format=glsignore]}\marg{label}
+for some reason, \gls{bib2gls} will recognise \texttt{glsignore} as
+a special encap indicating an ignored location, so it will select
+the entry but not add that location to the \gls{numberlist}. It's a
+problem for all the other options (except \opt5, which doesn't
+perform any indexing).
+
+Complications can arise if you use different encap values for the
+same location. For example, suppose on page~10 you have both the
+default \texttt{glsnumberformat} and \texttt{textbf} encaps. While it may
+seem apparent that \texttt{textbf} should override \texttt{glsnumberformat}
+in this situation, the \gls{indexingapp} may not know it.
+This is therefore something you need to be careful about if you use the
+\gloskey[glslink]{format} key or if you use a command that
+implicitly sets it.
+
+In the case of \gls{xindy}, it only accepts one encap (according to
+the order of precedence given in the \gls{xindy} module) and discards the
+others for identical locations (for the same entry). This can cause
+a problem if a discarded location forms the start or end of a range.
+
+In the case of \gls{makeindex}, it accepts different encaps for the
+same location, but warns about it. This leads to a \gls{numberlist}
+with the same location repeated in different formats. If you use
+the \gls{makeglossaries} Perl script with \opt2 it will detect
+\gls{makeindex}'s warning and attempt to fix the problem, ensuring
+that the \texttt{glsnumberformat} encap always has the least precedence
+unless it includes a range identifier. Other conflicting encaps will
+have the last one override earlier ones for the same location with
+range identifiers taking priority.
+
+No discard occurs with \opt1 so again you get the same location
+repeated in different formats. With \opt4, \gls{bib2gls} will discard
+according to order of precedence, giving priority to start and end
+range encaps. (See the \gls{bib2gls} manual for further details.)
+
+\section{Locations}
+\label{sec:locationsyntax}
+
+Neither \opt1 nor \opt4 care about the location syntax as long as
+it's valid \LaTeX\ code (and doesn't contain fragile commands). In
+both cases, the indexing is performed by writing a line to the
+\texttt{.aux} file. The write operation is deferred to avoid the
+problems associated with \TeX's asynchronous output routine.
+(See, for example,
+\href{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=oddpage}{Finding
+if you're on an odd or an even page} for more details on this issue.)
+Unfortunately \optsand23 are far more problematic and need some
+complex code to deal with awkward locations.
+
+If you know that your locations will always expand to a format
+acceptable to your chosen \gls{indexingapp} then use the package
+option \pkgopt[false]{esclocations} to bypass this operation. This setting
+only affects \optsand23 as the problem doesn't arise with the other
+indexing options.
+
+Both \gls{makeindex} and \gls{xindy} are fussy about the syntax of
+the locations. In the case of \gls{makeindex}, only the numbering
+system obtained with \cs{arabic}, \cs{roman}, \cs{Roman}, \cs{alph}
+and \cs{Alph} or composites formed from them with the same separator
+(set with \cs{glsSetCompositor}\marg{char}) are accepted.
+(\gls{makeindex} won't accept an empty location.) In the case of
+\gls{xindy}, you can define your own location classes, but if the
+location contains a robust command then the leading backslash must
+be escaped. The \sty{glossaries} package tries to do this, but it's
+caught between two conflicting requirements:
+\begin{enumerate}
+\item The location must be fully expanded before \verb|\| can be
+converted to \verb|\\| (there's no point converting \verb|\thepage|
+to \verb|\\thepage|);
+\item The page number can't be expanded until the deferred write
+operation (so \verb|\c@page| mustn't expand in the previous step
+but \verb|\the\c@page| mustn't be converted to \verb|\\the\\c@page|
+and \verb|\number\c@page| mustn't be converted to
+\verb|\\number\\c@page| etc).
+\end{enumerate}
+There's a certain amount of trickery needed to deal with this
+conflict and the code requires the location to be in a form that
+doesn't embed the counter's internal register in commands like
+\cs{value}. For example, suppose you have a robust command called
+\cs{tallynum} that takes a number as the argument and an expandable
+command called \cs{tally} that converts a counter name into the
+associated register or number to pass to \cs{tallynum}. Let's
+suppose that this command is used to represent the page number:
+\begin{verbatim}
+\renewcommand{\thepage}{\tally{page}}
+\end{verbatim}
+Now let's suppose that a term is indexed at the beginning of page~2
+at the end of a paragraph that started on page~1. With \gls{xindy},
+the location \verb|\tally{page}| needs to be written to the file
+as \verb|\\tallynum{2}|. If it's written as \verb|\tallynum{2}| then
+\gls{xindy} will interpret \verb|\t| as the character \qt{t}
+(which means the location would appear as \qt{tallynum2}). So
+\sty{glossaries} tries to expand \cs{thepage} without expanding
+\cs{c@page} and then escapes all the backslashes, except for the
+page counter's internal command. The following definitions of
+\cs{tally} will work:
+\begin{itemize}
+\item In the following, \cs{arabic} works as its internal command \cs{c@arabic} is
+temporarily redefined to check for \cs{c@page}:
+\begin{verbatim}
+\newcommand{\tally}[1]{\tallynum{\arabic{#1}}}
+\end{verbatim}
+
+\item The form \verb|\expandafter\the\csname c@|\meta{counter}\verb|\endcsname|
+also works (provided \cs{the} is allowed to be temporarily redefined,
+see below):
+\begin{verbatim}
+\newcommand{\tally}[1]{%
+ \tallynum{\expandafter\the\csname c@#1\endcsname}}
+\end{verbatim}
+
+\item \verb|\expandafter\the\value|\marg{counter} now also works
+(with the same condition as above):
+\begin{verbatim}
+\newcommand{\tally}[1]{\tallynum{\expandafter\the\value{#1}}}
+\end{verbatim}
+
+\item Another variation that will work:
+\begin{verbatim}
+\newcommand{\tally}[1]{%
+ \expandafter\tallynum\expandafter{\the\csname c@#1\endcsname}}
+\end{verbatim}
+
+\item and also:
+\begin{verbatim}
+\newcommand{\tally}[1]{\tallynum{\the\csname c@#1\endcsname}}
+\end{verbatim}
+\end{itemize}
+The following \emph{don't work}:
+\begin{itemize}
+\item This definition leads to the premature expansion of \cs{c@page}
+to \qt{1} when, in this case, it should be \qt{2}:
+\begin{verbatim}
+\newcommand{\tally}[1]{\tallynum{\the\value{#1}}}
+\end{verbatim}
+\item This definition leads to \verb|\\c@page| in the glossary file:
+\begin{verbatim}
+\newcommand{\tally}[1]{\tallynum{\csname c@#1\endcsname}}
+\end{verbatim}
+\end{itemize}
+If you have a numbering system where
+\verb|\|\meta{cs name}\verb|{page}| expands to
+\verb|\|\meta{internal cs name}\cs{c@page} (for example, if
+\verb|\tally{page}| expands to \verb|\tallynum\c@page|) then you
+need to use:
+\begin{definition}[\DescribeMacro\glsaddprotectedpagefmt]
+\cs{glsaddprotectedpagefmt}\marg{internal cs name}
+\end{definition}
+Note that the backslash must be omitted from \meta{internal cs name}
+and the corresponding command must be able to process a count
+register as the (sole) argument.
+
+For example, suppose you have a style \texttt{samplenum} that is
+implemented as follows:
+\begin{verbatim}
+ \newcommand*{\samplenum}[1]{%
+ \expandafter\@samplenum\csname c@#1\endcsname}
+ \newcommand*{\@samplenum}[1]{\two@digits{#1}}
+
+\end{verbatim}
+(That is, it displays the value of the counter as a two-digit
+number.) Then to ensure the location is correct for entries in
+page-spanning paragraphs, you need to do:
+\begin{verbatim}
+\glsaddprotectedpagefmt{@samplenum}
+\end{verbatim}
+(If you are using a different counter for the location, such as
+\texttt{section} or \texttt{equation}, you don't need to worry about
+this provided the inner command is expandable.)
+
+If the inner macro (as given by \verb|\|\meta{internal cs name}) contains
+non-expandable commands then you may need to redefine
+\cs{gls}\meta{internal cs name}\texttt{page} after using
+\cs{glsaddprotectedpagefmt}\marg{internal cs name}. This command doesn't take any arguments
+as \emph{the location is assumed to be given by \cs{c@page}} because
+that's the only occasion this command should be used. For example,
+suppose now my page counter format uses small caps Roman numerals:
+\begin{verbatim}
+ \newcommand*{\samplenum}[1]{%
+ \expandafter\@samplenum\csname c@#1\endcsname}
+ \newcommand*{\@samplenum}[1]{\textsc{\romannumeral#1}}
+\end{verbatim}
+Again, the inner macro needs to be identified using:
+\begin{verbatim}
+\glsaddprotectedpagefmt{@samplenum}
+\end{verbatim}
+However, since \cs{textsc} isn't fully expandable, the location
+is written to the file as \verb|\textsc {i}| (for page~1),
+\verb|\textsc {ii}| (for page~2), etc. This format may cause a problem for
+the \gls{indexingapp} (particularly for \gls{makeindex}).
+To compensate for this, the \cs{gls}\meta{internal cs
+name}\texttt{page} command may be redefined so that it expands to a
+format that's acceptable to the \gls*{indexingapp}. For example:
+\begin{verbatim}
+\renewcommand*{\gls@samplenumpage}{\romannumeral\c@page}
+\end{verbatim}
+While this modification means that the \gls{numberlist} in the glossary
+won't exactly match the format of the page numbers (displaying
+lower case Roman numbers instead of small cap Roman numerals)
+this method will at least work correctly for both \gls{makeindex}
+and \gls{xindy}. If you are using \gls{xindy}, the following
+definition:
+\begin{verbatim}
+ \renewcommand*{\gls@samplenumpage}{%
+ \glsbackslash\string\textsc{\romannumeral\c@page}}
+\end{verbatim}
+combined with
+\begin{verbatim}
+\GlsAddXdyLocation{romansc}{:sep "\string\textsc\glsopenbrace"
+ "roman-numbers-lowercase" :sep "\glsclosebrace"}
+\end{verbatim}
+will now have lowercase Roman numerals in the location list
+(see \sectionref{sec:xindyloc} for further details on that command).
+Take care of the backslashes. The location (which ends up in
+the ":locref" attribute) needs \verb|\\| but the location class
+(identified with \cs{GlsAddXdyLocation}) just has a single
+backslash. Note that this example will cause problems if your
+locations should be hyperlinks.
+
+Another possibility that may work with both \gls{makeindex} and
+\gls{xindy} is to redefine \cs{gls}\meta{internal cs
+name}\texttt{page} (\cs{gls@samplenumpage} in this example)
+to just expand to the decimal page number (\verb|\number\c@page|) and redefine
+\ics{glsnumberformat} to change the displayed format:
+\begin{verbatim}
+\renewcommand*{\gls@samplenumpage}{\number\c@page}
+\renewcommand*{\glsnumberformat}[1]{\textsc{\romannumeral#1}}
+\end{verbatim}
+
+\begin{important}
+If you redefine \cs{gls}\meta{internal cs name}\texttt{page},
+you must make sure that \cs{c@page} is expanded when it's written to
+the file. (So don't, for example, hide \cs{c@page} inside a robust
+command.)
+\end{important}
+
+The mechanism that allows this to work temporarily redefines
+\ics{the} and \ics{number} while it processes the location. If this
+causes a problem you can disallow it using
+\begin{definition}[\DescribeMacro\glswrallowprimitivemodsfalse]
+\cs{glswrallowprimitivemodsfalse}
+\end{definition}
+but you will need to find some other way to ensure the location expands
+correctly.
+
+\section{Range Formations}
+\label{sec:ranges}
+
+Both \gls{makeindex} and \gls{xindy} (\optsand23) concatenate a
+sequence of~3 or more consecutive pages into~a range. With
+\gls*{xindy} (\opt3) you can vary the minimum sequence length using
+\ics{GlsSetXdyMinRangeLength}\marg{n} where \meta{n} is either
+an integer or the keyword \texttt{none} which indicates that there
+should be no range formation (see \sectionref{sec:xindyloc} for
+further details).
+
+\begin{important}
+Note that \cs{GlsSetXdyMinRangeLength} must be used before
+\ics{makeglossaries} and has no effect if \ics{noist} is used.
+\end{important}
+
+With both \gls{makeindex} and \gls{xindy} (\optsand23), you can replace
+the separator and the closing number in the range using:
+\begin{definition}[\DescribeMacro{\glsSetSuffixF}]
+\cs{glsSetSuffixF}\marg{suffix}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsSetSuffixFF}]
+\cs{glsSetSuffixFF}\marg{suffix}
+\end{definition}
+where the former command specifies the suffix to use for a 2 page
+list and the latter specifies the suffix to use for longer lists.
+For example:
+\begin{verbatim}
+\glsSetSuffixF{f.}
+\glsSetSuffixFF{ff.}
+\end{verbatim}
+Note that if you use \gls{xindy} (\opt3), you will also need to
+set the minimum range length to 1 if you want to change these
+suffixes:
+\begin{verbatim}
+\GlsSetXdyMinRangeLength{1}
+\end{verbatim}
+Note that if you use the \sty{hyperref} package, you will need
+to use \ics{nohyperpage} in the suffix to ensure that the hyperlinks
+work correctly. For example:
+\begin{verbatim}
+\glsSetSuffixF{\nohyperpage{f.}}
+\glsSetSuffixFF{\nohyperpage{ff.}}
+\end{verbatim}
+
+\begin{important}
+Note that \cs{glsSetSuffixF} and \cs{glsSetSuffixFF} must be used
+before \ics{makeglossaries} and have no effect if \ics{noist} is
+used.
+\end{important}
+
+It's also possible to concatenate a sequence of consecutive
+locations into a range or have suffixes with \opt4, but with
+\gls{bib2gls} these implicit ranges can't be merged with explicit
+ranges (created with the \verb|(| and \verb|)| encaps). See
+the \gls{bib2gls} manual for further details.
+
+\opt1 doesn't form ranges. However, with this option you
+can iterate over an entry's \gls{numberlist} using:
+\begin{definition}[\DescribeMacro\glsnumberlistloop]
+\cs{glsnumberlistloop}\marg{label}\marg{handler cs}\marg{xr handler
+cs}
+\end{definition}
+where \meta{label} is the entry's label and \meta{handler cs} is a
+handler control sequence of the form:
+\begin{definition}
+\meta{handler cs}\marg{prefix}\marg{counter}\marg{format}\marg{location}
+\end{definition}
+where \meta{prefix} is the \sty{hyperref} prefix, \meta{counter} is
+the name of the counter used for the location, \meta{format} is the
+format used to display the location (e.g.\ \texttt{textbf})
+and \meta{location} is the location. The third argument is the
+control sequence to use for any cross-references in the list. This
+handler should have the syntax:
+\begin{definition}
+\meta{xr handler cs}\oarg{tag}\marg{xr list}
+\end{definition}
+where \meta{tag} is the cross-referenced text (e.g.\ \qt{see}) and
+\meta{xr list} is a~comma-separated list of labels. (This actually
+has a third argument but it's always empty when used with \opt1.)
+
+For example, if on page~12
+I~have used
+\begin{verbatim}
+\gls[format=textbf]{apple}
+\end{verbatim}
+and on page~18 I~have used
+\begin{verbatim}
+\gls[format=emph]{apple}
+\end{verbatim}
+then
+\begin{verbatim}
+\glsnumberlistloop{apple}{\myhandler}
+\end{verbatim}
+will be equivalent to:
+\begin{verbatim}
+\myhandler{}{page}{textbf}{12}%
+\myhandler{}{page}{emph}{18}%
+\end{verbatim}
+There is a predefined handler that's used to display the
+\gls{numberlist} in the glossary:
+\begin{definition}[\DescribeMacro\glsnoidxdisplayloc]
+\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location}
+\end{definition}
+The predefined handler used for the cross-references in the glossary is:
+\begin{definition}
+\cs{glsseeformat}\oarg{tag}\marg{xr list}\marg{location}
+\end{definition}
+which is described in \sectionref{sec:customxr}.
+
+\begin{important}
+\cs{glsnumberlistloop} is not available for \optsand23.
+\end{important}
+
+\section{Style Hook}
+\label{sec:isthook}
+
+As from version 4.24, there's a hook that's used near the end of
+\ics{writeist} before the file is closed. You can set the code
+to be performed then using:
+\begin{definition}[\DescribeMacro\GlsSetWriteIstHook]
+\cs{GlsSetWriteIstHook}\marg{code}
+\end{definition}
+If you want the \meta{code} to write any information to the
+file, you need to use
+\begin{definition}[\DescribeMacro\glswrite]
+\cs{write}\cs{glswrite}\marg{style information}
+\end{definition}
+Make sure you use the correct format within \meta{style
+information}. For example, if you are using \app{makeindex}:
+\begin{verbatim}
+\GlsSetWriteIstHook{%
+ \write\glswrite{page_precedence "arnAR"}%
+ \write\glswrite{line_max 80}%
+}
+\end{verbatim}
+This changes the page type precedence\index{page type precedence} and the maximum line length
+used by \app{makeindex}.
+
+Remember that if you switch to \app{xindy}, this will no longer be
+valid code.
+
+\chapter{Links to Glossary Entries}
+\label{sec:glslink}
+
+Once you have defined a glossary entry using \ics{newglossaryentry}
+(\sectionref{sec:newglosentry}) or \ics{newacronym} (see
+\sectionref{sec:acronyms}), you can refer to that entry in the
+document using one of the commands listed in
+\sectionref{sec:gls-like} or \sectionref{sec:glstext-like}. The text
+which appears at that point in the document when using one of these
+commands is referred to as the \gls{linktext} (even if there are no
+hyperlinks). These commands also add a line to an external file that
+is used to generate the relevant entry in the glossary. This
+information includes an associated location that is added to the
+\gls{numberlist} for that entry. By default, the location refers to
+the page number. For further information on number lists, see
+\sectionref{sec:numberlists}. These external files need to be
+post-processed by \gls{makeindex} or \gls{xindy} unless you have
+chosen \optsor14. If you don't use \ics{makeglossaries} these external
+files won't be created. (\optsand14 write the information to the
+\filetype{.aux} file.)
+
+Note that repeated use of these commands for the same entry can
+cause the \gls{numberlist} to become quite long, which may not be
+particular helpful to the reader. In this case, you can use the
+non-indexing commands described in \sectionref{sec:glsnolink} or
+you can use the supplemental \gls{glossaries-extra} package, which
+provides a means to suppress the automated indexing of the commands listed
+in this chapter.
+
+\begin{important}
+I strongly recommend that you don't use the commands
+defined in this chapter in the arguments of sectioning or caption
+commands or any other command that has a moving argument.
+
+Aside from problems with expansion issues, PDF bookmarks and
+possible nested hyperlinks in the table of contents (or list of
+whatever) any use of the commands described in \sectionref{sec:gls-like}
+will have their \firstuseflag\ unset when they appear in the table
+of contents (or list of whatever).
+\end{important}
+
+The above warning is particularly important if you are using the
+\styfmt{glossaries} package in conjunction with the \sty{hyperref}
+package. Instead, use one of the \emph{expandable} commands listed in
+\sectionref{sec:glsnolink} (such as \ics{glsentrytext} \emph{but
+not} the non-expandable
+case changing versions like \ics{Glsentrytext}). Alternatively, provide an
+alternative via the optional argument to the sectioning\slash caption
+command or use \sty{hyperref}'s \ics{texorpdfstring}. Examples:
+\begin{verbatim}
+\chapter{An overview of \glsentrytext{perl}}
+\chapter[An overview of Perl]{An overview of \gls{perl}}
+\chapter{An overview of \texorpdfstring{\gls{perl}}{Perl}}
+\end{verbatim}
+If you want to retain the formatting that's available through
+commands like \cs{acrshort} (for example, if you are using one of
+the small caps styles), then you might want to consider the
+\gls{glossaries-extra} package which provides commands
+for this purpose.
+
+If you want the \gls{linktext} to produce a hyperlink to the
+corresponding entry details in the glossary, you should load the
+\sty{hyperref} package \emph{before} the \styfmt{glossaries}
+package. That's what I've done in this document, so if you see a
+hyperlinked term, such as \gls{linktext}, you can click on the word
+or phrase and it will take you to a brief description in this
+document's glossary.
+
+\begin{important}
+If you use the \sty{hyperref} package, I strongly recommend you use
+\app{pdflatex} rather than \app{latex} to compile your document, if
+possible. The DVI format of \LaTeX\ has limitations with the
+hyperlinks that can cause a problem when used with the
+\styfmt{glossaries} package. Firstly, the DVI format can't break a
+hyperlink across a line whereas PDF\LaTeX\ can. This means that long
+glossary entries (for example, the full form of an acronym) won't be
+able to break across a line with the DVI format. Secondly, the DVI
+format doesn't correctly size hyperlinks in subscripts or
+superscripts. This means that if you define a term that may be used
+as a subscript or superscript, if you use the DVI format, it won't
+come out the correct size.
+
+These are limitations of the DVI format not of the \sty{glossaries}
+package.
+\end{important}
+
+It may be that you only want terms in certain glossaries to have
+hyperlinks, but not for other glossaries. In this case, you can use the
+package option \pkgopt{nohypertypes} to identify the glossary lists
+that shouldn't have hyperlinked \gls{linktext}. See
+\sectionref{sec:pkgopts-general} for further details.
+
+The way the \gls{linktext} is displayed depends on
+\begin{definition}[\DescribeMacro{\glstextformat}]
+\cs{glstextformat}\marg{text}
+\end{definition}
+For example, to make all \gls{linktext} appear in a sans-serif
+font, do:
+\begin{verbatim}
+\renewcommand*{\glstextformat}[1]{\textsf{#1}}
+\end{verbatim}
+Further customisation can be done via \ics{defglsentryfmt} or by
+redefining \ics{glsentryfmt}. See \sectionref{sec:glsdisplay} for
+further details.
+
+Each entry has an associated conditional referred to as the
+\firstuseflag. Some of the commands described in this chapter
+automatically unset this flag and can also use it
+to determine what text should be displayed. These types of commands
+are the \glslike\ commands and are described in
+\sectionref{sec:gls-like}. The commands that don't reference or change
+the \firstuseflag\ are \glstextlike\ commands and are described
+in \sectionref{sec:glstext-like}. See \sectionref{sec:glsunset} for
+commands that unset (mark the entry as having been used) or reset
+(mark the entry as not used) the \firstuseflag\ without referencing
+the entries.
+
+The \glslike\ and \glstextlike\ commands all take a first
+optional argument that is a comma-separated list of
+\meta{key}=\meta{value} options, described below. They also have a
+star-variant, which inserts \texttt{hyper=false} at the start of the
+list of options and a plus-variant, which inserts
+\texttt{hyper=true} at the start of the list of options. For example
+\verb|\gls*{sample}| is the same as \verb|\gls[hyper=false]{sample}|
+and \verb|\gls+{sample}| is the same as
+\verb|\gls[hyper=true]{sample}|, whereas just \verb|\gls{sample}|
+will use the default hyperlink setting which depends on a number of
+factors (such as whether the entry is in a glossary that has been
+identified in the \pkgopt{nohypertypes} list). You can override the
+\gloskey[glslink]{hyper} key in the variant's optional argument, for
+example, \verb|\gls*[hyper=true]{sample}| but this creates
+redundancy and is best avoided. The \gls{glossaries-extra} package
+provides the option to add a third custom variant.
+
+\begin{important}
+Avoid nesting these commands. For example don't do
+\cs{glslink}\marg{label}\texttt{\{\cs{gls}\marg{label2}\}}
+as this is likely to cause problems. By implication, this
+means that you should avoid using any of these commands within
+the \gloskey{text}, \gloskey{first}, \gloskey{short} or
+\gloskey{long} keys (or their plural equivalent) or any
+other key that you plan to access through these commands.
+(For example, the \gloskey{symbol} key if you intend to use
+\cs{glssymbol}.)
+\end{important}
+
+The keys listed below are available for the optional argument.
+The \gls{glossaries-extra} package provides additional keys.
+(See the \gls*{glossaries-extra} manual for further details.)
+\begin{description}
+\item[{\gloskey[glslink]{hyper}}] This is a boolean key which can
+be used to enable\slash disable the hyperlink to the relevant entry
+in the glossary. If this key is omitted, the value is determined by current
+settings, as indicated above. For example, when used with a \glslike\ command, if this is the first
+use and the \pkgopt[false]{hyperfirst} package option has been used,
+then the default value is \texttt{hyper=false}. The hyperlink can be
+forced on using \texttt{hyper=true} unless the hyperlinks have been
+suppressed using \ics{glsdisablehyper}. You must load the
+\sty{hyperref} package before the \sty{glossaries} package to
+ensure the hyperlinks work.
+
+\item[{\gloskey[glslink]{format}}] This specifies how to format the
+associated location number for this entry in the glossary. This
+value is equivalent to the \gls{makeindex} encap value, and (as
+with \ics{index}) the value needs to be the name of a command
+\emph{without} the initial backslash. As with \ics{index}, the
+characters \verb"(" and \verb")" can also be used to specify the
+beginning and ending of a number range and they must be in matching
+pairs. (For example, \verb|\gls[format={(}]{sample}| on one page
+to start the range and later \verb|\gls[format={)}]{sample}| to close
+the range.) Again as with \ics{index}, the command should be the
+name of a command which takes an argument (which will be the
+associated location). Be careful not to use a declaration (such as
+\texttt{bfseries}) instead of a text block command (such as
+\texttt{textbf}) as the effect is not guaranteed to be localised. If
+you want to apply more than one style to a given entry (e.g.\
+\textbf{bold} and \emph{italic}) you will need to create a command
+that applies both formats, e.g.\
+\begin{verbatim}
+\newcommand*{\textbfem}[1]{\textbf{\emph{#1}}}
+\end{verbatim}
+and use that command.
+
+In this document, the standard formats refer to the standard text
+block commands such as \ics{textbf} or \ics{emph} or any of the
+commands listed in \tableref{tab:hyperxx}. You can combine a range
+and format using \verb|(|\meta{format} to start the range and
+\verb|)|\meta{format} to end the range. The \meta{format} part must
+match. For example, \verb|format={(emph}| and \verb|format={)emph}|.
+
+\begin{important}
+If you use \gls{xindy} instead of \gls{makeindex}, you
+must specify any non-standard formats that you want to use
+with the \gloskey[glslink]{format} key using
+\ics{GlsAddXdyAttribute}\marg{name}. So if you use
+\gls*{xindy} with the above example, you would need to add:
+\begin{verbatim}
+\GlsAddXdyAttribute{textbfem}
+\end{verbatim}
+See \sectionref{sec:xindy} for further details.
+\end{important}
+
+If you are using hyperlinks and you want to change the font of the
+hyperlinked location, don't use \ics{hyperpage} (provided by the
+\sty{hyperref} package) as the locations may not refer to a page
+number. Instead, the \styfmt{glossaries} package provides number
+formats listed in \tableref{tab:hyperxx}.
+
+\begin{table}[htbp]
+\caption{Predefined Hyperlinked Location Formats}
+\label{tab:hyperxx}
+\centering
+\vskip\baselineskip
+\begin{tabular}{ll}
+\locfmt{hyperrm} & serif hyperlink\\
+\locfmt{hypersf} & sans-serif hyperlink\\
+\locfmt{hypertt} & monospaced hyperlink\\
+\locfmt{hyperbf} & bold hyperlink\\
+\locfmt{hypermd} & medium weight hyperlink\\
+\locfmt{hyperit} & italic hyperlink\\
+\locfmt{hypersl} & slanted hyperlink\\
+\locfmt{hyperup} & upright hyperlink\\
+\locfmt{hypersc} & small caps hyperlink\\
+\locfmt{hyperemph} & emphasized hyperlink
+\end{tabular}
+\par
+\end{table}
+
+Note that if the \ics{hyperlink} command hasn't been defined, the
+\texttt{hyper}\meta{xx} formats are equivalent to the analogous
+\texttt{text}\meta{xx} font commands (and \texttt{hyperemph} is
+equivalent to \texttt{emph}). If you want to make a new format, you
+will need to define a command which takes one argument and use that.
+For example, if you want the location number to be in a bold
+sans-serif font, you can define a command called, say,
+\ics{hyperbsf}:
+\begin{verbatim}
+\newcommand{\hyperbsf}[1]{\textbf{\hypersf{#1}}}
+\end{verbatim}
+and then use \texttt{hyperbsf} as the value for the \gloskey{format}
+key.\footnote{See also \ifpdf section~\ref*{sec:code:printglos} \fi
+\qt{Displaying the glossary} in the documented code,
+\texttt{glossaries-code.pdf}.} Remember that if you use \gls{xindy}, you
+will need to add this to the list of location attributes:
+\begin{verbatim}
+\GlsAddXdyAttribute{hyperbsf}
+\end{verbatim}
+
+\item[{\gloskey[glslink]{counter}}] This specifies which counter
+to use for this location. This overrides the default counter
+used by this entry. (See also \sectionref{sec:numberlists}.)
+
+\item[{\gloskey[glslink]{local}}] This is a boolean key that only
+makes a difference when used with \glslike\ commands that change the
+entry's \gls{firstuseflag}. If \texttt{local=true}, the change to
+the \gls*{firstuseflag} will be localised to the current scope. The
+default is \texttt{local=false}.
+
+\end{description}
+
+\begin{important}
+The \gls{linktext} isn't scoped by default. Any unscoped
+declarations in the \gls{linktext} may affect subsequent text.
+\end{important}
+
+\section{The \cs{gls}-Like Commands (First Use Flag Queried)}
+\label{sec:gls-like}
+
+This section describes the commands that unset (mark as used) the \firstuseflag\ on
+completion, and in most cases they use the current state of the flag
+to determine the text to be displayed. As described above, these
+commands all have a star-variant (\texttt{hyper=false}) and
+a plus-variant (\texttt{hyper=true}) and have an
+optional first argument that is a \meta{key}=\meta{value} list.
+
+These commands use \ics{glsentryfmt} or the equivalent definition provided by
+\ics{defglsentryfmt} to determine the automatically generated text
+and its format (see \sectionref{sec:glsdisplay}).
+
+Apart from \ics{glsdisp}, the commands described in this section
+also have a \emph{final} optional argument \meta{insert} which may
+be used to insert material into the automatically generated text.
+
+\begin{important}
+Since the commands have a final optional argument, take care if
+you actually want to display an open square bracket after the command
+when the final optional argument is absent. Insert an empty set of
+braces \verb|{}| immediately before the opening square bracket to
+prevent it from being interpreted as the final argument. For
+example:
+\begin{verbatim}
+\gls{sample} {}[Editor's comment]
+\end{verbatim}
+
+Don't use any of the \glslike\ or \glstextlike\ commands in the
+\meta{insert} argument.
+\end{important}
+
+Take care using these commands within commands or environments that
+are processed multiple times as this can confuse the first use flag
+query and state change. This includes frames with overlays in
+\cls{beamer} and the \envfmt{tabularx} environment provided by \sty{tabularx}.
+The \styfmt{glossaries} package automatically deals with this issue
+in \sty{amsmath}'s \envfmt{align} environment. You can apply a patch
+to \sty{tabularx} by placing the following command (new to v4.28) in
+the preamble:
+\begin{definition}[\DescribeMacro\glspatchtabularx]
+\cs{glspatchtabularx}
+\end{definition}
+This does nothing if \sty{tabularx} hasn't been loaded. There's no
+patch available for \cls{beamer}. See \sectionref{sec:glsunset} for
+more details.
+
+\begin{definition}[\DescribeMacro{\gls}]
+\cs{gls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command typically determines the \gls{linktext} from the values
+of the \gloskey{text} or \gloskey{first} keys supplied when the
+entry was defined using \ics{newglossaryentry}. However, if the
+entry was defined using \ics{newacronym} and \ics{setacronymstyle} was
+used, then the \gls*{linktext} will usually be determined from the \gloskey{long} or
+\gloskey{short} keys.
+
+There are two upper case variants:
+\begin{definition}[\DescribeMacro{\Gls}]
+\cs{Gls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro{\GLS}]
+\cs{GLS}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+which make the first letter of the link text or all the link text
+upper case, respectively. For the former, the uppercasing of the
+first letter is performed by \ics{makefirstuc}.
+
+\begin{important}
+The first letter uppercasing command \cs{makefirstuc} has
+limitations which must be taken into account if you use \cs{Gls} or
+any of the other commands that convert the first letter to
+uppercase.
+\end{important}
+The upper casing is performed as follows:
+\begin{itemize}
+\item If the first thing in the \gls{linktext} is a command follow
+by a group, the upper casing is performed on the first object of the
+group. For example, if an entry has been defined as
+\begin{verbatim}
+\newglossaryentry{sample}{
+ name={\emph{sample} phrase},
+ sort={sample phrase},
+ description={an example}}
+\end{verbatim}
+Then \cs{Gls}\verb|{sample}| will set the \gls{linktext}
+to\footnote{I've used \cs{MakeUppercase} in all the examples for clarity, but it
+will actually use \cs{mfirstucMakeUppercase}.}
+\begin{verbatim}
+\emph{\MakeUppercase sample} phrase
+\end{verbatim}
+which will appear as \emph{\MakeUppercase sample} phrase.
+
+\item If the first thing in the \gls{linktext} isn't a command or is
+a command but isn't followed by a group, then the upper casing will
+be performed on that first thing. For example, if an entry has been
+defined as:
+\begin{verbatim}
+\newglossaryentry{sample}{
+ name={\oe-ligature},
+ sort={oe-ligature},
+ description={an example}
+}
+\end{verbatim}
+Then \cs{Gls}\verb|{sample}| will set the \gls{linktext} to
+\begin{verbatim}
+\MakeUppercase \oe-ligature
+\end{verbatim}
+which will appear as \MakeUppercase \oe-ligature.
+
+\item If you have \sty{mfirstuc} v2.01 or above, an extra case is
+added. If the first thing is \cs{protect} it will be discarded and
+the above rules will then be tried.
+
+\end{itemize}
+(Note the use of the \gloskey{sort} key in the above examples.)
+
+There are hundreds of \LaTeX\ packages that altogether define
+thousands of commands with various syntax and it's impossible for
+\sty{mfirstuc} to take them all into account. The above rules are quite
+simplistic and are designed for \gls{linktext} that starts with
+a~text-block command (such as \cs{emph}) or a command that produces
+a character (such as \cs{oe}). This means that if your \gls{linktext}
+starts with something that doesn't adhere to \sty{mfirstuc}'s assumptions
+then things are likely to go wrong.
+
+For example, starting with a math-shift symbol:
+\begin{verbatim}
+\newglossaryentry{sample}{
+ name={$a$},
+ sort={a},
+ description={an example}
+}
+\end{verbatim}
+This falls into case~2 above, so the \gls{linktext} will be set to
+\begin{verbatim}
+\MakeUppercase $a$
+\end{verbatim}
+This attempts to uppercase the math-shift \verb|$|, which will go
+wrong. In this case it's not appropriate to perform any
+case-changing, but it may be that you want to use \cs{Gls}
+programmatically without checking if the text contains any maths.
+In this case, the simplest solution is to insert an empty brace at
+the start:
+\begin{verbatim}
+\newglossaryentry{sample}{
+ name={{}$a$},
+ sort={a},
+ description={an example}
+}
+\end{verbatim}
+Now the \gls{linktext} will be set to
+\begin{verbatim}
+\MakeUppercase{}$a$
+\end{verbatim}
+and the \cs{uppercase} becomes harmless.
+
+Another issue occurs when the \gls{linktext} starts with a command
+followed by an argument (case~1) but the argument is a label,
+identifier or something else that shouldn't have a case-change.
+A common example is when the \gls{linktext} starts with one of the
+commands described in this chapter. (But you haven't done that, have
+you? What with the warning not to do it at the beginning of the chapter.)
+Or when the \gls{linktext} starts with one of the non-linking
+commands described in \sectionref{sec:glsnolink}. For example:
+\begin{verbatim}
+\newglossaryentry{sample}{name={sample},description={an example}}
+\newglossaryentry{sample2}{
+ name={\glsentrytext{sample} two},
+ sort={sample two},
+ description={another example}
+ }
+\end{verbatim}
+Now the \gls{linktext} will be set to:
+\begin{verbatim}
+\glsentrytext{\MakeUppercase sample} two
+\end{verbatim}
+This will generate an error because there's no entry with the label
+given by \verb|\MakeUppercase sample|. The best solution here is to
+write the term out in the \gloskey{text} field and use the command
+in the \gloskey{name} field. If you don't use \cs{glsname} anywhere
+in your document, you can use \cs{gls} in the \gloskey{name} field:
+\begin{verbatim}
+\newglossaryentry{sample}{name={sample},description={an example}}
+\newglossaryentry{sample2}{
+ name={\gls{sample} two},
+ sort={sample two},
+ text={sample two},
+ description={another example}
+ }
+\end{verbatim}
+
+If the \gls{linktext} starts with a command that has an optional
+argument or with multiple arguments where the actual text isn't in
+the first argument, then \cs{makefirstuc} will also fail. For
+example:
+\begin{verbatim}
+\newglossaryentry{sample}{
+ name={\textcolor{blue}{sample} phrase},
+ sort={sample phrase},
+ description={an example}}
+\end{verbatim}
+Now the \gls{linktext} will be set to:
+\begin{verbatim}
+\textcolor{\MakeUppercase blue}{sample} phrase
+\end{verbatim}
+This won't work because \verb|\MakeUppercase blue| isn't a recognised
+colour name. In this case you will have to define a helper command where
+the first argument is the text. For example:
+\begin{verbatim}
+\newglossaryentry{sample}{
+\newcommand*{\blue}[1]{\textcolor{blue}{#1}}
+ name={\blue{sample} phrase},
+ sort={sample phrase},
+ description={an example}}
+\end{verbatim}
+In fact, since the whole design ethos of \LaTeX\ is the separation
+of content and style, it's better to use a semantic command. For
+example:
+\begin{verbatim}
+\newglossaryentry{sample}{
+\newcommand*{\keyword}[1]{\textcolor{blue}{#1}}
+ name={\keyword{sample} phrase},
+ sort={sample phrase},
+ description={an example}}
+\end{verbatim}
+For further details see the \sty{mfirstuc} user manual.
+
+There are plural forms that are analogous to \cs{gls}:
+\begin{definition}[\DescribeMacro{\glspl}]
+\cs{glspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glspl}]
+\cs{Glspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSpl}]
+\cs{GLSpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+These typically determine the link text from the \gloskey{plural} or
+\gloskey{firstplural} keys supplied when the entry was
+defined using \ics{newglossaryentry} or, if the entry is an
+abbreviation and \cs{setacronymstyle} was used, from the \gloskey{longplural} or
+\gloskey{shortplural} keys.
+
+\begin{important}
+Be careful when you use glossary entries in math mode especially if you
+are using \sty{hyperref} as it can affect the spacing of subscripts and
+superscripts. For example, suppose you have defined the following
+entry:
+\begin{verbatim}
+\newglossaryentry{Falpha}{name={F_\alpha},
+description=sample}
+\end{verbatim}
+and later you use it in math mode:
+\begin{verbatim}
+$\gls{Falpha}^2$
+\end{verbatim}
+This will result in $F_\alpha{}^2$ instead of $F_\alpha^2$. In this
+situation it's best to bring the superscript into the hyperlink using
+the final \meta{insert} optional argument:
+\begin{verbatim}
+$\gls{Falpha}[^2]$
+\end{verbatim}
+\end{important}
+
+\begin{definition}[\DescribeMacro{\glsdisp}]
+\cs{glsdisp}\oarg{options}\marg{label}\marg{link text}
+\end{definition}
+This behaves in the same way as the above commands, except
+that the \meta{link text} is explicitly set. There's no final
+optional argument as any inserted material can be added to the
+\meta{link text} argument.
+
+\begin{important}
+Don't use any of the \glslike\ or \glstextlike\ commands in the
+\meta{link text} argument of \cs{glsdisp}.
+\end{important}
+
+\section{The \cs{glstext}-Like Commands (First Use Flag Not Queried)}
+\label{sec:glstext-like}
+
+This section describes the commands that don't change or reference
+the \firstuseflag. As described above, these commands all have a
+star-variant (\texttt{hyper=false}) and a plus-variant
+(\texttt{hyper=true}) and have an optional first argument
+that is a \meta{key}=\meta{value} list. These commands also don't
+use \ics{glsentryfmt} or the equivalent definition provided by
+\ics{defglsentryfmt} (see \sectionref{sec:glsdisplay}).
+Additional commands for abbreviations are described in
+\sectionref{sec:acronyms}.
+
+Apart from \ics{glslink}, the commands described in this section
+also have a \emph{final} optional argument \meta{insert} which may
+be used to insert material into the automatically generated text.
+See the caveat above in \sectionref{sec:gls-like}.
+
+\begin{definition}[\DescribeMacro{\glslink}]
+\cs{glslink}\oarg{options}\marg{label}\marg{link text}
+\end{definition}
+This command explicitly sets the \gls{linktext} as given in the
+final argument.
+
+\begin{important}
+Don't use any of the \glslike\ or \glstextlike\ commands in the
+argument of \cs{glslink}. By extension, this means that you can't
+use them in the value of fields that are used to form
+\gls{linktext}.
+\end{important}
+
+\begin{definition}[\DescribeMacro{\glstext}]
+\cs{glstext}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{text} key as the
+\gls{linktext}.
+
+There are also analogous commands:
+\begin{definition}[\DescribeMacro{\Glstext}]
+\cs{Glstext}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLStext}]
+\cs{GLStext}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+These convert the first character or all the characters to
+uppercase, respectively. See the note on \cs{Gls} above for details
+on the limitations of converting the first letter to upper case.
+
+There's no equivalent command for title-casing, but you
+can use the more generic command \ics{glsentrytitlecase}
+in combination with \cs{glslink}. For example:
+\begin{verbatim}
+\glslink{sample}{\glsentrytitlecase{sample}{text}}
+\end{verbatim}
+(See \sectionref{sec:glsnolink}.)
+
+\begin{definition}[\DescribeMacro{\glsfirst}]
+\cs{glsfirst}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{first} key as the
+\gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsfirst}]
+\cs{Glsfirst}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSfirst}]
+\cs{GLSfirst}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{important}
+The value of the \gloskey{first} key (and \gloskey{firstplural} key)
+doesn't necessarily match the text produced by \ics{gls} (or \ics{glspl}) on
+\firstuse\ as the \gls{linktext} used by \ics{gls} may be modified
+through commands like \ics{defglsentry}. (Similarly, the value of the
+\gloskey{text} and \gloskey{plural} keys don't necessarily match
+the \gls*{linktext} used by \cs{gls} or \cs{glspl} on subsequent
+use.)
+\end{important}
+
+\begin{definition}[\DescribeMacro{\glsplural}]
+\cs{glsplural}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{plural} key as the
+\gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsplural}]
+\cs{Glsplural}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSplural}]
+\cs{GLSplural}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsfirstplural}]
+\cs{glsfirstplural}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{firstplural} key as the
+\gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsfirstplural}]
+\cs{Glsfirstplural}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSfirstplural}]
+\cs{GLSfirstplural}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsname}]
+\cs{glsname}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{name} key as the
+\gls{linktext}. Note that this may be different from the values of
+the \gloskey{text} or \gloskey{first} keys. In general it's better
+to use \cs{glstext} or \cs{glsfirst} instead of \cs{glsname}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsname}]
+\cs{Glsname}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSname}]
+\cs{GLSname}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{important}
+In general it's best to avoid \cs{Glsname} with acronyms. Instead,
+consider using \cs{Acrlong}, \cs{Acrshort} or \cs{Acrfull}.
+\end{important}
+
+\begin{definition}[\DescribeMacro{\glssymbol}]
+\cs{glssymbol}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{symbol} key as the
+\gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glssymbol}]
+\cs{Glssymbol}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSsymbol}]
+\cs{GLSsymbol}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsdesc}]
+\cs{glsdesc}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the \gloskey{description} key as the
+\gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsdesc}]
+\cs{Glsdesc}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSdesc}]
+\cs{GLSdesc}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+If you want the title case version you can use
+\begin{verbatim}
+\glslink{sample}{\glsentrytitlecase{sample}{desc}}
+\end{verbatim}
+
+\begin{definition}[\DescribeMacro{\glsuseri}]
+\cs{glsuseri}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This command always uses the value of the
+\gloskey{user1} key as the \gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsuseri}]
+\cs{Glsuseri}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSuseri}]
+\cs{GLSuseri}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsuserii}]
+\cs{glsuserii}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+This command always uses the value of the
+\gloskey{user2} key as the \gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsuserii}]
+\cs{Glsuserii}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSuserii}]
+\cs{GLSuserii}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsuseriii}]
+\cs{glsuseriii}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+This command always uses the value of the
+\gloskey{user3} key as the \gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsuseriii}]
+\cs{Glsuseriii}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSuseriii}]
+\cs{GLSuseriii}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsuseriv}]
+\cs{glsuseriv}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+This command always uses the value of the
+\gloskey{user4} key as the \gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsuseriv}]
+\cs{Glsuseriv}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSuseriv}]
+\cs{GLSuseriv}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsuserv}]
+\cs{glsuserv}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+This command always uses the value of the
+\gloskey{user5} key as the \gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsuserv}]
+\cs{Glsuserv}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSuserv}]
+\cs{GLSuserv}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\begin{definition}[\DescribeMacro{\glsuservi}]
+\cs{glsuservi}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+This command always uses the value of the
+\gloskey{user6} key as the \gls{linktext}.
+
+There are also analogous uppercasing commands:
+\begin{definition}[\DescribeMacro{\Glsuservi}]
+\cs{Glsuservi}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\GLSuservi}]
+\cs{GLSuservi}\oarg{options}\marg{text}\oarg{insert}
+\end{definition}
+
+\section{Changing the format of the link text}
+\label{sec:glsdisplay}
+
+The default format of the \gls{linktext} for the \glslike\ commands
+is governed by\footnote{\ics{glsdisplayfirst} and \ics{glsdisplay} are now
+deprecated. Backwards compatibility should be preserved but
+you may need to use the \pkgopt{compatible-3.07} option}:
+\begin{definition}[\DescribeMacro{\glsentryfmt}]
+\cs{glsentryfmt}
+\end{definition}
+This may be redefined but if you only want the change the display style
+for a given glossary, then you need to use
+\begin{definition}[\DescribeMacro{\defglsentryfmt}]
+\cs{defglsentryfmt}\oarg{type}\marg{definition}
+\end{definition}
+instead of redefining \cs{glsentryfmt}. The optional first argument
+\meta{type} is the glossary type. This defaults to
+\ics{glsdefaulttype} if omitted. The second argument is the
+entry format definition.
+
+\begin{important}
+Note that \cs{glsentryfmt} is the default display format for
+entries. Once the display format has been changed for an individual
+glossary using \ics{defglsentryfmt}, redefining \cs{glsentryfmt}
+won't have an effect on that glossary, you must instead use
+\cs{defglsentryfmt} again. Note that glossaries that have
+been identified as lists of acronyms (via the package option
+\pkgopt{acronymlists} or the command \ics{DeclareAcronymList},
+see \sectionref{sec:pkgopts-acronym}) use
+\cs{defglsentryfmt} to set their display style.
+\end{important}
+
+Within the \meta{definition} argument of \cs{defglsentryfmt}, or if you
+want to redefine \cs{glsentryfmt}, you may use the following
+commands:
+
+\begin{definition}[\DescribeMacro{\glslabel}]
+\cs{glslabel}
+\end{definition}
+This is the label of the entry being referenced. As from version
+4.08, you can also access the glossary entry type using:
+\begin{definition}[\DescribeMacro{\glstype}]
+\cs{glstype}
+\end{definition}
+This is defined using \ics{edef} so the replacement text is the
+actual glossary type rather than \verb|\glsentrytype{\glslabel}|.
+
+\begin{definition}[\DescribeMacro{\glscustomtext}]
+\cs{glscustomtext}
+\end{definition}
+This is the custom text supplied in \cs{glsdisp}. It's always empty
+for \ics{gls}, \ics{glspl} and their upper case variants. (You can
+use \sty{etoolbox}'s \cs{ifdefempty} to determine if
+\cs{glscustomtext} is empty.)
+
+\begin{definition}[\DescribeMacro{\glsinsert}]
+\cs{glsinsert}
+\end{definition}
+The custom text supplied in the final optional argument to \cs{gls},
+\cs{glspl} and their upper case variants.
+
+\begin{definition}[\DescribeMacro{\glsifplural}]
+\cs{glsifplural}\marg{true text}\marg{false text}
+\end{definition}
+If \cs{glspl}, \cs{Glspl} or \cs{GLSpl} was used, this command does
+\meta{true text} otherwise it does \meta{false text}.
+
+\begin{definition}[\DescribeMacro{\glscapscase}]
+\cs{glscapscase}\marg{no case}\marg{first uc}\marg{all caps}
+\end{definition}
+If \cs{gls}, \cs{glspl} or \cs{glsdisp} were used, this does \meta{no
+case}. If \cs{Gls} or \cs{Glspl} were used, this does \meta{first
+uc}. If \cs{GLS} or \cs{GLSpl} were used, this does \meta{all caps}.
+
+\begin{definition}[\DescribeMacro\glsifhyperon]
+\cs{glsifhyperon}\marg{hyper true}\marg{hyper false}
+\end{definition}
+This will do \meta{hyper true} if the hyperlinks are on for the
+current reference, otherwise it will do \meta{hyper false}. The
+hyperlink may be off even if it wasn't explicitly switched off with
+the \gloskey[glslink]{hyper} key or the use of a starred command.
+It may be off because the \sty{hyperref} package hasn't been loaded
+or because \ics{glsdisablehyper} has been used or because the entry
+is in a glossary type that's had the hyperlinks switched off (using
+\pkgopt{nohypertypes}) or because it's the \firstuse\ and the
+hyperlinks have been suppressed on first use.
+
+Note that \ics{glsifhyper} is now deprecated.
+If you want to know if the command used to reference
+this entry was used with the star or plus variant, you can use:
+\begin{definition}[\DescribeMacro\glslinkvar]
+\cs{glslinkvar}\marg{unmodified}\marg{star}\marg{plus}
+\end{definition}
+This will do \meta{unmodified} if the unmodified version was used,
+or will do \meta{star} if the starred version was used, or
+will do \meta{plus} if the plus version was used.
+Note that this doesn't take into account if the
+\gloskey[glslink]{hyper} key was used to override the default
+setting, so this command shouldn't be used to guess whether or not
+the hyperlink is on for this reference.
+
+Note that you can also use commands such as \ics{ifglsused} within
+the definition of \cs{glsentryfmt} (see \sectionref{sec:glsunset}).
+
+The commands \ics{glslabel}, \ics{glstype}, \ics{glsifplural},
+\ics{glscapscase}, \ics{glscustomtext} and \ics{glsinsert} are
+typically updated at the start of the \glslike\ and \glstextlike\
+commands so they can usually be accessed in the hook user commands,
+such as \ics{glspostlinkhook} and \ics{glslinkpostsetkeys}.
+
+\begin{important}
+This means that using commands like \ics{gls} within the fields
+that are accessed using the \glslike\ or \glstextlike\ commands
+(such as the \gloskey{first}, \gloskey{text}, \gloskey{long}
+or \gloskey{short} keys) will cause a problem. The entry formatting
+performed by \cs{glsentryfmt} and related commands isn't scoped
+(otherwise if would cause problems for \cs{glspostlinkhook} which
+may need to look ahead as well as look behind).
+This means that any nested commands will, at the very least, change
+the label stored in \cs{glslabel}.
+\end{important}
+
+If you only want to make minor modifications to \cs{glsentryfmt},
+you can use
+\begin{definition}[\DescribeMacro{\glsgenentryfmt}]
+\cs{glsgenentryfmt}
+\end{definition}
+This uses the above commands to display just the \gloskey{first},
+\gloskey{text}, \gloskey{plural} or \gloskey{firstplural} keys
+(or the custom text) with the insert text appended.
+
+Alternatively, if want to change the entry format for abbreviations
+(defined via \ics{newacronym}) you can use:
+\begin{definition}[\DescribeMacro{\glsgenacfmt}]
+\cs{glsgenacfmt}
+\end{definition}
+This uses the values from the \gloskey{long}, \gloskey{short},
+\gloskey{longplural} and \gloskey{shortplural} keys, rather than
+using the \gloskey{text}, \gloskey{plural}, \gloskey{first}
+and \gloskey{firstplural} keys. The first use singular text is obtained via:
+\begin{definition}[\DescribeMacro{\genacrfullformat}]
+\cs{genacrfullformat}\marg{label}\marg{insert}
+\end{definition}
+instead of from the \gloskey{first} key, and the first use plural
+text is obtained via:
+\begin{definition}[\DescribeMacro{\genplacrfullformat}]
+\cs{genplacrfullformat}\marg{label}\marg{insert}
+\end{definition}
+instead of from the \gloskey{firstplural} key.
+In both cases, \meta{label} is the entry's label and \meta{insert}
+is the insert text provided in the final optional argument of
+commands like \ics{gls}. The default behaviour is to do the long
+form (or plural long form) followed by \meta{insert} and a~space and the short form (or plural
+short form) in parentheses, where the short form is in the argument
+of \ics{firstacronymfont}. There are also first letter upper case
+versions:
+\begin{definition}[\DescribeMacro{\Genacrfullformat}]
+\cs{Genacrfullformat}\marg{label}\marg{insert}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro{\Genplacrfullformat}]
+\cs{Genplacrfullformat}\marg{label}\marg{insert}
+\end{definition}
+By default these perform a protected expansion on their no-case-change
+equivalents and then use \ics{makefirstuc} to convert the first
+character to upper case. If there are issues caused by this
+expansion, you will need to redefine those commands to explicitly
+use commands like \ics{Glsentrylong} (which is what the predefined
+acronym styles, such as \acrstyle{long-short}, do). Otherwise, you
+only need to redefine \ics{genacrfullformat} and
+\ics{genplacrfullformat} to change the behaviour of
+\ics{glsgenacfmt}. See \sectionref{sec:acronyms} for further details
+on changing the style of acronyms.
+
+\begin{important}
+Note that \cs{glsentryfmt} (or the formatting given by \cs{defglsentryfmt})
+is not used by the \glstextlike\ commands.
+\end{important}
+
+As from version 4.16, both the \glslike\ and \glstextlike\ commands
+use
+\begin{definition}[\DescribeMacro\glslinkpostsetkeys]
+\cs{glslinkpostsetkeys}
+\end{definition}
+after the \meta{options} are set. This macro does nothing by default
+but can be redefined. (For example, to switch off the hyperlink
+under certain conditions.) This version also introduces
+\begin{definition}[\DescribeMacro\glspostlinkhook]
+\cs{glspostlinkhook}
+\end{definition}
+which is done after the link text has been displayed and also
+\emph{after} the \firstuseflag\ has been unset (see
+example~\ref{ex:dotabbr}).
+
+\begin{example}{Custom Entry Display in Text}{ex:customfmt}
+Suppose you want a glossary of measurements and
+units, you can use the \gloskey{symbol} key to store the unit:
+\begin{verbatim}
+\newglossaryentry{distance}{name=distance,
+description={The length between two points},
+symbol={km}}
+\end{verbatim}
+and now suppose you want \verb|\gls{distance}| to produce
+\qt{distance (km)} on \firstuse, then you can redefine
+\ics{glsentryfmt} as follows:
+\begin{verbatim}
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\space (\glsentrysymbol{\glslabel})}%
+}
+\end{verbatim}
+
+(Note that I've used \ics{glsentrysymbol} rather than \ics{glssymbol}
+to avoid nested hyperlinks.)
+
+Note also that all of the \gls{linktext} will be formatted according
+to \ics{glstextformat} (described earlier). So if you do, say:
+\begin{verbatim}
+\renewcommand{\glstextformat}[1]{\textbf{#1}}
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\space(\glsentrysymbol{\glslabel})}%
+}
+\end{verbatim}
+then \verb|\gls{distance}| will produce \qt{\textbf{distance (km)}}.
+
+For a complete document, see the sample file \samplefile{-entryfmt}.
+\end{example}
+
+\begin{example}{Custom Format for Particular Glossary}{ex:defglsentryfmt}
+Suppose you have created a new glossary called
+\texttt{notation} and you want to change the way the entry is
+displayed on \firstuse\ so that it includes the symbol, you can do:
+\begin{verbatim}
+\defglsentryfmt[notation]{\glsgenentryfmt
+ \ifglsused{\glslabel}{}{\space
+ (denoted \glsentrysymbol{\glslabel})}}
+\end{verbatim}
+Now suppose you have defined an entry as follows:
+\begin{verbatim}
+\newglossaryentry{set}{type=notation,
+ name=set,
+ description={A collection of objects},
+ symbol={$S$}
+}
+\end{verbatim}
+The \glslink{firstuse}{first time} you reference this entry it will be displayed as:
+\qt{set (denoted $S$)} (assuming \ics{gls} was used).
+
+Alternatively, if you expect all the symbols to be set in math mode,
+you can do:
+\begin{verbatim}
+\defglsentryfmt[notation]{\glsgenentryfmt
+ \ifglsused{\glslabel}{}{\space
+ (denoted $\glsentrysymbol{\glslabel}$)}}
+\end{verbatim}
+and define entries like this:
+\begin{verbatim}
+\newglossaryentry{set}{type=notation,
+ name=set,
+ description={A collection of objects},
+ symbol={S}
+}
+\end{verbatim}
+\end{example}
+
+Remember that if you use the \gloskey{symbol} key, you need to use a
+glossary style that displays the symbol, as many of the styles
+ignore it.
+
+\section{Enabling and disabling hyperlinks to glossary entries}
+\label{sec:disablehyperlinks}
+
+If you load the \sty{hyperref} or \sty{html} packages prior to
+loading the \styfmt{glossaries} package, the \glslike\ and
+\glstextlike\ commands will automatically have hyperlinks
+to the relevant glossary entry, unless the \gloskey[glslink]{hyper}
+option has been switched off (either explicitly or through
+implicit means, such as via the \pkgopt{nohypertypes} package option).
+
+You can disable or enable links using:
+\begin{definition}[\DescribeMacro{\glsdisablehyper}]
+\cs{glsdisablehyper}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro{\glsenablehyper}]
+\cs{glsenablehyper}
+\end{definition}
+respectively. The effect can be localised by placing the commands
+within a group. Note that you should only use \cs{glsenablehyper}
+if the commands \ics{hyperlink} and \ics{hypertarget} have been
+defined (for example, by the \sty{hyperref} package).
+
+You can disable just the \gls{firstuse} links using the package
+option \pkgopt[false]{hyperfirst}. Note that this option only
+affects the \glslike\ commands that recognise the \firstuseflag.
+
+\begin{example}{First Use With Hyperlinked Footnote Description}{ex:hyperdesc}
+Suppose I want the \gls*{firstuse} to have a hyperlink to the
+description in a footnote instead of hyperlinking to the relevant
+place in the glossary. First I need to disable the hyperlinks on
+first use via the package option \pkgopt[false]{hyperfirst}:
+\begin{verbatim}
+\usepackage[hyperfirst=false]{glossaries}
+\end{verbatim}
+Now I need to redefine \ics{glsentryfmt} (see
+\sectionref{sec:glsdisplay}):
+\begin{verbatim}
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\footnote{\glsentrydesc{\glslabel}}}%
+}
+\end{verbatim}
+
+Now the first use won't have hyperlinked text, but will be followed
+by a footnote.
+See the sample file \samplefile{-FnDesc} for a complete document.
+\end{example}
+
+Note that the \pkgopt{hyperfirst} option applies to all defined glossaries. It
+may be that you only want to disable the hyperlinks on
+\gls{firstuse} for glossaries that have a different form on
+\gls*{firstuse}. This can be achieved by noting that since the
+entries that require hyperlinking for all instances have identical
+first and subsequent text, they can be unset via \ics{glsunsetall}
+(see \sectionref{sec:glsunset}) so that the \pkgopt{hyperfirst}
+option doesn't get applied.
+
+\begin{example}{Suppressing Hyperlinks on First Use Just For
+Acronyms}{ex:hyperfirst}
+Suppose I want to suppress the hyperlink on \gls{firstuse} for
+acronyms but not for entries in the main glossary. I~can load
+the \styfmt{glossaries} package using:
+\begin{verbatim}
+\usepackage[hyperfirst=false,acronym]{glossaries}
+\end{verbatim}
+Once all glossary entries have been defined I~then do:
+\begin{verbatim}
+\glsunsetall[main]
+\end{verbatim}
+
+\end{example}
+
+For more complex requirements, you might find it easier to switch
+off all hyperlinks via \ics{glsdisablehyper} and put the hyperlinks
+(where required) within the definition of \ics{glsentryfmt} (see
+\sectionref{sec:glsdisplay}) via \ics{glshyperlink} (see
+\sectionref{sec:glsnolink}).
+
+\begin{example}{Only Hyperlink in Text Mode Not Math
+Mode}{ex:nomathhyper}
+This is a bit of a contrived example, but suppose, for some reason,
+I only want the \glslike\ commands to have
+hyperlinks when used in text mode, but not in math mode. I~can do
+this by adding the glossary to the list of nohypertypes and redefining
+\ics{glsentryfmt}:
+\begin{verbatim}
+\GlsDeclareNoHyperList{main}
+
+\renewcommand*{\glsentryfmt}{%
+ \ifmmode
+ \glsgenentryfmt
+ \else
+ \glsifhyperon
+ {\glsgenentryfmt}% hyperlink already on
+ {\glshyperlink[\glsgenentryfmt]{\glslabel}}%
+ \fi
+}
+\end{verbatim}
+Note that this doesn't affect the \glstextlike\ commands, which will
+have the hyperlinks off unless they're forced on using the plus
+variant.
+
+See the sample file \samplefile{-nomathhyper} for a complete
+document.
+\end{example}
+
+\begin{example}{One Hyper Link Per Entry Per Chapter}{ex:chap-hyperfirst}
+Here's a more complicated example that will only have the hyperlink
+on the first time an entry is used per chapter. This doesn't involve
+resetting the \firstuseflag. Instead it adds a~new key using
+\ics{glsaddstoragekey} (see \sectionref{sec:glsaddstoragekey}) that
+keeps track of the chapter number that the entry was last used in:
+\begin{verbatim}
+\glsaddstoragekey{chapter}{0}{\glschapnum}
+\end{verbatim}
+This creates a new user command called \cs{glschapnum} that's
+analogous to \cs{glsentrytext}. The default value for this key is~0.
+I~then define my glossary entries as usual.
+
+Next I redefine the hook \ics{glslinkpostsetkeys}
+(see \sectionref{sec:glsdisplay}) so that it determines the current
+chapter number (which is stored in \cs{currentchap} using
+\cs{edef}). This value is then compared with the value of the
+entry's \texttt{chapter} key that I defined earlier. If they're the
+same, this entry has already been used in this chapter so the
+hyperlink is switched off using \sty{xkeyval}'s \cs{setkeys}
+command. If the chapter number isn't the same, then this entry
+hasn't been used in the current chapter. The \texttt{chapter} field
+is updated using \ics{glsfieldxdef} (\sectionref{sec:fetchset})
+provided the user hasn't switched off the hyperlink.
+(This test is performed using \cs{glsifhyperon}.
+\begin{verbatim}
+\renewcommand*{\glslinkpostsetkeys}{%
+ \edef\currentchap{\arabic{chapter}}%
+ \ifnum\currentchap=\glschapnum{\glslabel}\relax
+ \setkeys{glslink}{hyper=false}%
+ \else
+ \glsifhyperon{\glsfieldxdef{\glslabel}{chapter}{\currentchap}}{}%
+ \fi
+}
+\end{verbatim}
+Note that this will be confused if you use \cs{gls} etc when the
+chapter counter is~0. (That is, before the first \cs{chapter}.)
+
+See the sample file \samplefile{-chap-hyperfirst} for a complete
+document.
+\end{example}
+
+\chapter{Adding an Entry to the Glossary Without Generating Text}
+\label{sec:glsadd}
+
+It is possible to add a line to the glossary file without
+generating any text at that point in the document using:
+\begin{definition}[\DescribeMacro{\glsadd}]
+\cs{glsadd}\oarg{options}\marg{label}
+\end{definition}
+This is similar to the \glstextlike\ commands, only it doesn't produce
+any text (so therefore, there is no \gloskey[glslink]{hyper} key
+available in \meta{options} but all the other options that can
+be used with \glstextlike\ commands can be passed to \cs{glsadd}).
+For example, to add a page range to the glossary number list for the
+entry whose label is given by \texttt{set}:
+\begin{verbatim}
+\glsadd[format=(]{set}
+Lots of text about sets spanning many pages.
+\glsadd[format=)]{set}
+\end{verbatim}
+
+To add all entries that have been defined, use:
+\begin{definition}[\DescribeMacro{\glsaddall}]
+\cs{glsaddall}\oarg{options}
+\end{definition}
+The optional argument is the same as for \cs{glsadd}, except
+there is also a key \gloskey[glsaddall]{types} which can be
+used to specify which glossaries to use. This should be a
+comma separated list. For example, if you only want to add
+all the entries belonging to the list of acronyms (specified by
+the glossary type \ics{acronymtype}) and a list of
+notation (specified by the glossary type \texttt{notation}) then you can
+do:
+\begin{verbatim}
+\glsaddall[types={\acronymtype,notation}]
+\end{verbatim}
+
+\begin{important}
+Note that \cs{glsadd} and \cs{glsaddall} add the current location to
+the \gls{numberlist}. In the case of \cs{glsaddall}, all entries in the
+glossary will have the same location in the number list. If you want
+to use \cs{glsaddall}, it's best to suppress the number list with
+the \pkgopt{nonumberlist} package option. (See
+sections~\ref{sec:pkgopts-printglos} and~\ref{sec:numberlists}.)
+\end{important}
+
+There is now a variation of \cs{glsaddall} that skips any entries
+that have already been used:
+\begin{definition}[\DescribeMacro\glsaddallunused]
+\cs{glsaddallunused}\oarg{list}
+\end{definition}
+This command uses \cs{glsadd}\texttt{[format=@gobble]} which will
+ignore this location in the number list. The optional argument
+\meta{list} is a comma-separated list of glossary types. If omitted,
+it defaults to the list of all defined glossaries.
+
+If you want to use \cs{glsaddallunused}, it's best to place the
+command at the end of the document to ensure that all the commands
+you intend to use have already been used. Otherwise you could end up
+with a spurious comma or dash in the location list.
+
+\begin{example}{Dual Entries}{ex:dual}
+The example file \samplefile{-dual} makes use of \cs{glsadd} to
+allow for an entry that should appear both in the main glossary and
+in the list of acronyms. This example sets up the list of acronyms
+using the \pkgopt{acronym} package option:
+\begin{verbatim}
+\usepackage[acronym]{glossaries}
+\end{verbatim}
+A new command is then defined to make it easier to define dual
+entries:
+\begin{verbatim}
+\newcommand*{\newdualentry}[5][]{%
+ \newglossaryentry{main-#2}{name={#4},%
+ text={#3\glsadd{#2}},%
+ description={#5},%
+ #1
+ }%
+ \newacronym{#2}{#3\glsadd{main-#2}}{#4}%
+}
+\end{verbatim}
+This has the following syntax:
+\begin{alltt}
+\ics{newdualentry}\oarg{options}\marg{label}\marg{abbrv}\marg{long}\marg{description}
+\end{alltt}
+You can then define a new dual entry:
+\begin{verbatim}
+\newdualentry{svm}% label
+ {SVM}% abbreviation
+ {support vector machine}% long form
+ {Statistical pattern recognition technique}% description
+\end{verbatim}
+Now you can reference the acronym with \verb|\gls{svm}| or you can
+reference the entry in the main glossary with \verb|\gls{main-svm}|.
+\end{example}
+
+\chapter{Cross-Referencing Entries}
+\label{sec:crossref}
+
+\begin{important}
+You must use \ics{makeglossaries} (\optsor23) or
+\ics{makenoidxglossaries} (\opt1) \emph{before} defining any
+terms that cross-reference entries. If any of the terms that you have
+cross-referenced don't appear in the glossary, check that you have
+put \cs{makeglossaries}\slash\cs{makenoidxglossaries} before all
+entry definitions. The \gls{glossaries-extra} package provides
+better cross-reference handling.
+\end{important}
+
+There are several ways of cross-referencing entries in the
+glossary:
+
+\begin{enumerate}
+\item You can use commands such as \ics{gls} in the
+entries description. For example:
+\begin{verbatim}
+\newglossaryentry{apple}{name=apple,
+description={firm, round fruit. See also \gls{pear}}}
+\end{verbatim}
+Note that with this method, if you don't use the cross-referenced term
+in the main part of the document, you will need two runs of
+\gls{makeglossaries}:
+\begin{verbatim}
+latex filename
+makeglossaries filename
+latex filename
+makeglossaries filename
+latex filename
+\end{verbatim}
+
+\item As described in \sectionref{sec:newglosentry}, you can use the
+\gloskey{see} key when you define the entry. For example:
+\begin{verbatim}
+\newglossaryentry{MaclaurinSeries}{name={Maclaurin
+series},
+description={Series expansion},
+see={TaylorsTheorem}}
+\end{verbatim}
+Note that in this case, the entry with the \gloskey{see} key will
+automatically be added to the glossary, but the cross-referenced
+entry won't. You therefore need to ensure that you use the
+cross-referenced term with the commands described in
+\sectionref{sec:glslink} or \sectionref{sec:glsadd}.
+
+The \qt{see} tag is produce using \ics{seename}, but can be
+overridden in specific instances using square brackets
+at the start of the \gloskey{see} value. For example:
+\begin{verbatim}
+\newglossaryentry{MaclaurinSeries}{name={Maclaurin
+series},
+description={Series expansion},
+see=[see also]{TaylorsTheorem}}
+\end{verbatim}
+Take care if you want to use the optional argument of commands such
+as \ics{newacronym} or \ics{newterm} as the value will need to be
+grouped. For example:
+\begin{verbatim}
+\newterm{seal}
+\newterm[see={[see also]seal}]{sea lion}
+\end{verbatim}
+Similarly if the value contains a list. For example:
+\begin{verbatim}
+\glossaryentry{lemon}{
+ name={lemon},
+ description={Yellow citrus fruit}
+}
+\glossaryentry{lime}
+{
+ name={lime},
+ description={Green citrus fruit}
+}
+\glossaryentry{citrus}
+{
+ name={citrus},
+ description={Plant in the Rutaceae family},
+ see={lemon,lime}
+}
+\end{verbatim}
+
+\item After you have defined the entry, use
+\begin{definition}[\DescribeMacro{\glssee}]
+\cs{glssee}\oarg{tag}\marg{label}\marg{xr label list}
+\end{definition}
+where \meta{xr label list} is a comma-separated list of entry
+labels to be cross-referenced, \meta{label} is the label of the
+entry doing the cross-referencing and \meta{tag} is the \qt{see} tag.
+(The default value of \meta{tag} is \ics{seename}.)
+For example:
+\begin{verbatim}
+\glssee[see also]{series}{FourierSeries,TaylorsTheorem}
+\end{verbatim}
+Note that this automatically adds the entry given by \meta{label} to
+the glossary but doesn't add the cross-referenced entries (specified
+by \meta{xr label list}) to the glossary.
+\end{enumerate}
+
+In both cases~2 and 3 above, the cross-referenced information
+appears in the \gls{numberlist}, whereas in case~1, the
+cross-referenced information appears in the description. (See the
+\samplefile{-crossref} example file that comes with this package.)
+This means that in cases~2 and~3, the cross-referencing information
+won't appear if you have suppressed the \gls*{numberlist}. In this
+case, you will need to activate the \gls*{numberlist} for the given
+entries using \gloskey{nonumberlist=false}. Alternatively, if you
+just use the \gloskey{see} key instead of \ics{glssee}, you can
+automatically activate the \gls*{numberlist} using the
+\pkgopt{seeautonumberlist} package option.
+
+\section{Customising Cross-reference Text}
+\label{sec:customxr}
+
+When you use either the \gloskey{see} key or the command
+\cs{glssee}, the cross-referencing information will be typeset in the
+glossary according to:
+\begin{definition}[\DescribeMacro{\glsseeformat}]
+\cs{glsseeformat}\oarg{tag}\marg{label-list}\marg{location}
+\end{definition}
+The default definition of \cs{glsseeformat} is:
+\begin{display}
+\cs{emph}\marg{tag} \cs{glsseelist}\marg{label-list}
+\end{display}
+Note that the location is always ignored.\footnote{\gls{makeindex}
+will always assign a location number, even if it's not needed, so it
+needs to be discarded.} For example, if you want the tag to appear
+in bold, you can do:\footnote{If you redefine \cs{glsseeformat},
+keep the default value of the optional argument as \ics{seename} as
+both \gloskey{see} and \cs{glssee} explicitly write
+\texttt[\cs{seename}\texttt] in the output file if no optional
+argument is given.}
+\begin{verbatim}
+\renewcommand*{\glsseeformat}[3][\seename]{\textbf{#1}
+ \glsseelist{#2}}
+\end{verbatim}
+
+
+The list of labels is dealt with by \cs{glsseelist}, which iterates
+through the list and typesets each entry in the label. The entries
+are separated by
+\begin{definition}[\DescribeMacro{\glsseesep}]
+\cs{glsseesep}
+\end{definition}
+or (for the last pair)
+\begin{definition}[\DescribeMacro{\glsseelastsep}]
+\cs{glsseelastsep}
+\end{definition}
+These default to ``",\space"'' and
+\qt{\cs{space}\ics{andname}\cs{space}} respectively. The list entry text
+is displayed using:
+\begin{definition}[\DescribeMacro{\glsseeitemformat}]
+\cs{glsseeitemformat}\marg{label}
+\end{definition}
+This defaults to \ics{glsentrytext}\marg{label}.\footnote{In
+versions before 3.0, \cs{glsentryname} was used, but this could cause
+problems when the \gloskey{name} key was \glsd{sanitize}.} For example, to
+make the cross-referenced list use small caps:
+\begin{verbatim}
+\renewcommand{\glsseeitemformat}[1]{%
+ \textsc{\glsentrytext{#1}}}
+\end{verbatim}
+
+\begin{important}
+You can use \ics{glsseeformat} and \ics{glsseelist} in the main body
+of the text, but they won't automatically add the cross-referenced
+entries to the glossary. If you want them added with that location,
+you can do:
+\begin{verbatim}
+Some information (see also
+\glsseelist{FourierSeries,TaylorsTheorem}%
+\glsadd{FourierSeries}\glsadd{TaylorsTheorem}).
+\end{verbatim}
+\end{important}
+
+\chapter{Using Glossary Terms Without Links}
+\label{sec:glsnolink}
+
+The commands described in this section display entry details without
+adding any information to the glossary. They don't use
+\ics{glstextformat}, they don't have any optional arguments, they
+don't affect the \firstuseflag\ and, apart from \ics{glshyperlink},
+they don't produce hyperlinks.
+
+\begin{important}
+Commands that aren't expandable will be ignored by PDF bookmarks, so
+you will need to provide an alternative via \sty{hyperref}'s
+\cs{texorpdfstring} if you want to use them in sectioning commands.
+(This isn't specific to the \styfmt{glossaries} package.) See the
+\sty{hyperref} documentation for further details. All the commands
+that convert the first letter to upper case aren't expandable.
+The other commands depend on whether their corresponding keys were
+assigned non-expandable values.
+\end{important}
+
+If you want to title case a field, you can use:
+\begin{definition}[\DescribeMacro\glsentrytitlecase]
+\cs{glsentrytitlecase}\marg{label}\marg{field}
+\end{definition}
+where \meta{label} is the label identifying the glossary entry,
+\meta{field} is the field label (see \tableref{tab:fieldmap}).
+For example:
+\begin{verbatim}
+\glsentrytitlecase{sample}{desc}
+\end{verbatim}
+(If you want title-casing in your glossary style, you might want to
+investigate the \sty{glossaries-extra} package.)
+
+Note that this command has the same limitations as \cs{makefirstuc} which is
+used by commands like \cs{Gls} and \cs{Glsentryname} to upper-case
+the first letter (see the notes about \cs{Gls} in \sectionref{sec:gls-like}).
+
+\begin{definition}[\DescribeMacro{\glsentryname}]
+\cs{glsentryname}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryname}]
+\cs{Glsentryname}\marg{label}
+\end{definition}
+These commands display the name of the glossary entry given by
+\meta{label}, as specified by the \gloskey{name} key.
+\cs{Glsentryname} makes the first letter upper case.
+Neither of these commands check for the existence of \meta{label}.
+The first form \cs{glsentryname} is expandable (unless the name
+contains unexpandable commands). Note that this may be different from the values of
+the \gloskey{text} or \gloskey{first} keys. In general it's better
+to use \cs{glsentrytext} or \cs{glsentryfirst} instead of
+\cs{glsentryname}.
+
+\begin{important}
+In general it's best to avoid \cs{Glsentryname} with abbreviations. Instead,
+consider using \cs{Glsentrylong}, \cs{Glsentryshort} or \cs{Glsentryfull}.
+\end{important}
+
+\begin{definition}[\DescribeMacro{\glossentryname}]
+\cs{glossentryname}\marg{label}
+\end{definition}
+This is like \cs{glsnamefont}\{\cs{glsentryname\marg{label}}\}
+but also checks for the existence of \meta{label}. This command is
+not expandable. It's used in the predefined glossary styles, so if
+you want to change the way the name is formatted in the glossary,
+you can redefine \cs{glsnamefont} to use the required fonts. For
+example:
+\begin{verbatim}
+\renewcommand*{\glsnamefont}[1]{\textmd{\sffamily #1}}
+\end{verbatim}
+\begin{definition}[\DescribeMacro{\Glossentryname}]
+\cs{Glossentryname}\marg{label}
+\end{definition}
+This is like \cs{glossentryname} but makes the first letter of the
+name upper case.
+
+\begin{definition}[\DescribeMacro{\glsentrytext}]
+\cs{glsentrytext}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentrytext}]
+\cs{Glsentrytext}\marg{label}
+\end{definition}
+These commands display the subsequent use text for the glossary
+entry given by \meta{label}, as specified by the \gloskey{text} key.
+\cs{Glsentrytext} makes the first letter upper case.
+The first form is expandable (unless the text contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glsentryplural}]
+\cs{glsentryplural}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryplural}]
+\cs{Glsentryplural}\marg{label}
+\end{definition}
+These commands display the subsequent use plural text for the
+glossary entry given by \meta{label}, as specified by the
+\gloskey{plural} key. \cs{Glsentryplural} makes the first letter
+upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glsentryfirst}]
+\cs{glsentryfirst}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryfirst}]
+\cs{Glsentryfirst}\marg{label}
+\end{definition}
+These commands display the \firstusetext\ for the glossary entry
+given by \meta{label}, as specified by the \gloskey{first} key.
+\cs{Glsentryfirst} makes the first letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glsentryfirstplural}]
+\cs{glsentryfirstplural}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryfirstplural}]
+\cs{Glsentryfirstplural}\marg{label}
+\end{definition}
+These commands display the plural form of the \firstusetext\ for the
+glossary entry given by \meta{label}, as specified by the
+\gloskey{firstplural} key. \cs{Glsentryfirstplural} makes the first
+letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glsentrydesc}]
+\cs{glsentrydesc}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentrydesc}]
+\cs{Glsentrydesc}\marg{label}
+\end{definition}
+These commands display the description for the glossary entry given
+by \meta{label}. \cs{Glsentrydesc} makes the first letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glossentrydesc}]
+\cs{glossentrydesc}\marg{label}
+\end{definition}
+This is like \cs{glsentrydesc}\marg{label}
+but also checks for the existence of \meta{label}. This command is
+not expandable. It's used in the predefined glossary styles to
+display the description.
+\begin{definition}[\DescribeMacro{\Glossentrydesc}]
+\cs{Glossentrydesc}\marg{label}
+\end{definition}
+This is like \cs{glossentrydesc} but converts the first letter to
+upper case. This command is not expandable.
+
+\begin{definition}[\DescribeMacro{\glsentrydescplural}]
+\cs{glsentrydescplural}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentrydescplural}]
+\cs{Glsentrydescplural}\marg{label}
+\end{definition}
+These commands display the plural description for the glossary entry
+given by \meta{label}. \cs{Glsentrydescplural} makes the first
+letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+
+\begin{definition}[\DescribeMacro{\glsentrysymbol}]
+\cs{glsentrysymbol}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentrysymbol}]
+\cs{Glsentrysymbol}\marg{label}
+\end{definition}
+These commands display the symbol for the glossary entry given by
+\meta{label}. \cs{Glsentrysymbol} makes the first letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+
+\begin{definition}[\DescribeMacro\glsletentryfield]
+\cs{glsletentryfield}\marg{cs}\marg{label}\marg{field}
+\end{definition}
+This command doesn't display anything. It merely fetches the
+value associated with the given field (where the available field names
+are listed in \tableref{tab:fieldmap}) and stores the result
+in the control sequence \meta{cs}. For example, to store
+the description for the entry whose label is \qt{apple} in the
+control sequence \verb|\tmp|:
+\begin{verbatim}
+\glsletentryfield{\tmp}{apple}{desc}
+\end{verbatim}
+
+\begin{definition}[\DescribeMacro{\glossentrysymbol}]
+\cs{glossentrysymbol}\marg{label}
+\end{definition}
+This is like \cs{glsentrysymbol}\marg{label}
+but also checks for the existence of \meta{label}. This command is
+not expandable. It's used in some of the predefined glossary styles to
+display the symbol.
+\begin{definition}[\DescribeMacro{\Glossentrysymbol}]
+\cs{Glossentrysymbol}\marg{label}
+\end{definition}
+This is like \cs{glossentrysymbol} but converts the first letter to
+upper case. This command is not expandable.
+
+\begin{definition}[\DescribeMacro{\glsentrysymbolplural}]
+\cs{glsentrysymbolplural}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentrysymbolplural}]
+\cs{Glsentrysymbolplural}\marg{label}
+\end{definition}
+These commands display the plural symbol for the glossary entry
+given by \meta{label}. \cs{Glsentrysymbolplural} makes the first
+letter upper case.
+The first form is expandable (unless the value of that key contains unexpandable
+commands). The second form is not expandable. Neither checks for the
+existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glsentryuseri}]
+\cs{glsentryuseri}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryuseri}]
+\cs{Glsentryuseri}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsentryuserii}]
+\cs{glsentryuserii}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryuserii}]
+\cs{Glsentryuserii}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsentryuseriii}]
+\cs{glsentryuseriii}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryuseriii}]
+\cs{Glsentryuseriii}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsentryuseriv}]
+\cs{glsentryuseriv}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryuseriv}]
+\cs{Glsentryuseriv}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsentryuserv}]
+\cs{glsentryuserv}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryuserv}]
+\cs{Glsentryuserv}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsentryuservi}]
+\cs{glsentryuservi}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryuservi}]
+\cs{Glsentryuservi}\marg{label}
+\end{definition}
+These commands display the value of the user keys for the glossary
+entry given by \meta{label}.
+The lower case forms are expandable (unless the value of the key
+contains unexpandable commands). The commands beginning with an
+upper case letter convert the first letter of the required value to
+upper case and are not expandable. None of these commands check for
+the existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\glshyperlink}]
+\cs{glshyperlink}\oarg{link text}\marg{label}
+\end{definition}
+This command provides a hyperlink to the glossary entry given by
+\meta{label} \textbf{but does not add any information to the
+glossary file}. The link text is given by
+\ics{glsentrytext}\marg{label} by default\footnote{versions before
+3.0 used \ics{glsentryname} as the default, but this could cause
+problems when \gloskey{name} had been \glsd{sanitize}.}, but can be
+overridden using the optional argument. Note that the hyperlink will
+be suppressed if you have used \ics{glsdisablehyper} or if you
+haven't loaded the \sty{hyperref} package.
+
+\begin{important}
+If you use \cs{glshyperlink}, you need to ensure that the relevant
+entry has been added to the glossary using any of the commands
+described in \sectionref{sec:glslink} or \sectionref{sec:glsadd}
+otherwise you will end up with an undefined link.
+\end{important}
+
+The next two commands are only available with \opt1 or with the
+\pkgopt{savenumberlist} package option:
+\begin{definition}[\DescribeMacro{\glsentrynumberlist}]
+\cs{glsentrynumberlist}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsdisplaynumberlist}]
+\cs{glsdisplaynumberlist}\marg{label}
+\end{definition}
+Both display the \gls{numberlist} for the entry given by
+\meta{label}. When used with \opt1 a~rerun is required to ensure
+this list is up-to-date, when used with \optsor23
+a run of \gls{makeglossaries} (or \gls{makeindex}\slash\gls{xindy})
+followed by one or two runs of \LaTeX\ is required.
+
+The first command, \cs{glsentrynumberlist}, simply displays
+the number list as is. The second command,
+\cs{glsdisplaynumberlist}, formats the list using:
+\begin{definition}[\DescribeMacro{\glsnumlistsep}]
+\cs{glsnumlistsep}
+\end{definition}
+as the separator between all but the last two elements and
+\begin{definition}[\DescribeMacro{\glsnumlistlastsep}]
+\cs{glsnumlistlastsep}
+\end{definition}
+between the final two elements. The defaults are
+\verb*|, | and \verb*| \& |, respectively.
+
+\begin{important}
+\cs{glsdisplaynumberlist} is fairly experimental. It works with
+\opt1, but for \optsor23 it only works when the default counter
+format is used (that is, when the \gloskey[glslink]{format} key is
+set to \texttt{glsnumberformat}). This command will only work with
+\sty{hyperref} if you choose \opt1. If you try using this command
+with \optsor23 and \sty{hyperref}, \cs{glsentrynumberlist} will be
+used instead.
+\end{important}
+
+For further information see \ifpdf section~\ref*{sec:code:glsnolink}
+\fi \qt{Displaying entry details without adding information to the
+glossary} in the documented code (\texttt{glossaries-code.pdf}).
+
+\chapter{Displaying a glossary}
+\label{sec:printglossary}
+
+All defined glossaries may be displayed using:
+\begin{description}
+\itempar{\opt1:}
+\begin{definition}[\DescribeMacro{\printnoidxglossaries}]
+\cs{printnoidxglossaries}
+\end{definition}
+(Must be used with \ics{makenoidxglossaries} in the preamble.)
+
+\itempar{\optsand23:}
+\begin{definition}[\DescribeMacro{\printglossaries}]
+\cs{printglossaries}
+\end{definition}
+(Must be used with \ics{makeglossaries} in the preamble.)
+\end{description}
+
+These commands will display all the glossaries in the order in which
+they were defined. Note that, in the case of \optsand23, no
+glossaries will appear until you have either used the Perl script
+\gls{makeglossaries} or Lua script \gls{makeglossaries-lite.lua} or
+have directly used \gls{makeindex} or \gls{xindy} (as described in
+\sectionref{sec:makeglossaries}). (While the external files are
+missing, these commands will just do \cs{null} for each missing
+glossary to assist dictionary style documents that just use
+\cs{glsaddall} without inserting any text. If you use
+\gls{glossaries-extra}, it will insert a heading and boilerplate text when the
+external files are missing. The extension package also provides
+\cs{printunsrtglossaries} as an alternative. See the
+\gls{glossaries-extra} manual for further details.)
+
+If the glossary still does not appear after you re-\LaTeX\ your
+document, check the \gls*{makeindex}\slash\gls*{xindy} log files to
+see if there is a problem. With \opt1, you just need two \LaTeX\
+runs to make the glossaries appear, but you may need further runs to
+make the \glspl{numberlist} up-to-date.
+
+An individual glossary can be displayed using:
+\begin{description}
+\itempar{\opt1:}
+\begin{definition}[\DescribeMacro{\printnoidxglossary}]
+\cs{printnoidxglossary}\oarg{options}
+\end{definition}
+(Must be used with \ics{makenoidxglossaries} in the preamble.)
+
+\itempar{\optsand23:}
+\begin{definition}[\DescribeMacro{\printglossary}]
+\cs{printglossary}\oarg{options}
+\end{definition}
+(Must be used with \ics{makeglossaries} in the preamble.)
+\end{description}
+where \meta{options} is a \meta{key}=\meta{value} list of options.
+(Again, when the associated external file is missing, \cs{null} is
+inserted into the document.)
+
+The following keys are available:
+\begin{description}
+\item[{\gloskey[printglossary]{type}}] The value of this key
+specifies which glossary to print. If omitted, the default
+glossary is assumed. For example, to print the list of acronyms:
+\begin{verbatim}
+\printglossary[type=\acronymtype]
+\end{verbatim}
+Note that you can't display an ignored glossary, so don't try
+setting \gloskey[printglossary]{type} to the name of a glossary that
+was defined using \ics{newignoredglossary}, described in
+\sectionref{sec:newglossary}. (You can display an ignored glossary
+with \cs{printunsrtglossary} provided by \gls{glossaries-extra}.)
+
+\item[{\gloskey[printglossary]{title}}] This is the glossary's
+title (overriding the title specified when the glossary was
+defined).
+
+\item[{\gloskey[printglossary]{toctitle}}] This is the title
+to use for the table of contents (if the \pkgopt{toc} package
+option has been used). It may also be used for the page header,
+depending on the page style. If omitted, the value of
+\gloskey[printglossary]{title} is used.
+
+\item[{\gloskey[printglossary]{style}}] This specifies which
+glossary style to use for this glossary, overriding the effect
+of the \pkgopt{style} package option or \ics{glossarystyle}.
+
+\item[{\gloskey[printglossary]{numberedsection}}] This specifies
+whether to use a numbered section for this glossary, overriding
+the effect of the \pkgopt{numberedsection} package option. This
+key has the same syntax as the \pkgopt{numberedsection} package
+option, described in \sectionref{sec:pkgopts-sec}.
+
+\item[{\gloskey[printglossary]{nonumberlist}}] This is a boolean
+key. If true (\verb|nonumberlist=true|) the numberlist is suppressed
+for this glossary. If false (\verb|nonumberlist=false|) the
+numberlist is displayed for this glossary.
+
+\item[{\gloskey[printglossary]{nogroupskip}}] This is a boolean
+key. If true the vertical gap between groups
+is suppressed for this glossary.
+
+\item[{\gloskey[printglossary]{nopostdot}}] This is a boolean
+key. If true the full stop after the description
+is suppressed for this glossary.
+
+\item[{\gloskey[printglossary]{entrycounter}}] This is a boolean
+key. Behaves similar to the package option of the same name.
+The corresponding package option must be used to make \ics{glsrefentry}
+work correctly.
+
+\item[{\gloskey[printglossary]{subentrycounter}}] This is a boolean
+key. Behaves similar to the package option of the same name. If you
+want to set both \gloskey{entrycounter} and
+\gloskey{subentrycounter}, make sure you specify
+\gloskey{entrycounter} first. The corresponding package option must
+be used to make \ics{glsrefentry} work correctly.
+
+\item[{\gloskey[printnoidxglossary]{sort}}] This key is only
+available for \opt1. Possible values are: \texttt{word} (word
+order), \texttt{letter} (letter order), \texttt{standard} (word or
+letter ordering taken from the \pkgopt{order} package option),
+\texttt{use} (order of use), \texttt{def} (order of definition)
+\texttt{nocase} (case-insensitive) or \texttt{case} (case-sensitive).
+Note that the word and letter comparisons (that is, everything other
+than \texttt{sort=use} and \texttt{sort=def}) just use a simple
+character code comparison. For a locale-sensitive sort, you must use
+either \gls{xindy} (\opt3) or \gls{bib2gls} (\opt4). Note that \gls{bib2gls}
+provides many other sort options.
+
+\begin{important}
+If you use the \texttt{use} or \texttt{def} values make sure
+that you select a glossary style that doesn't have a visual
+indicator between groups, as the grouping no longer makes sense.
+Consider using the \pkgopt{nogroupskip} option.
+\end{important}
+
+{\raggedright
+The word and letter order sort methods use
+\sty{datatool}'s
+\ics{dtlwordindexcompare} and \ics{dtlletterindexcompare} handlers.
+The case-insensitive sort method uses \sty{datatool}'s
+\ics{dtlicompare} handler. The case-sensitive sort method uses
+\sty{datatool}'s \ics{dtlcompare} handler. See the \sty{datatool}
+documentation for further details.
+\par}
+
+If you don't get an error with \texttt{sort=use} and
+\texttt{sort=def} but you do get an error with one of the other sort
+options, then you probably need to use the
+\pkgopt[true]{sanitizesort} package option or make sure none of the
+entries have fragile commands in their \gloskey{sort} field.
+\end{description}
+
+By default, the glossary is started either by \ics{chapter*} or by
+\ics{section*}, depending on whether or not \ics{chapter} is defined.
+This can be overridden by the \pkgopt{section} package option or the
+\ics{setglossarysection} command. Numbered sectional units can be
+obtained using the \pkgopt{numberedsection} package option. Each
+glossary sets the page header via the command
+\begin{definition}[\DescribeMacro\glsglossarymark]
+\ics{glsglossarymark}\marg{title}
+\end{definition}
+If this mechanism is unsuitable for your chosen class file or page
+style package, you will need to redefine \ics{glsglossarymark}. Further
+information about these options and commands is given in
+\sectionref{sec:pkgopts-sec}.
+
+Information can be added to the start of the glossary (after the
+title and before the main body of the glossary) by redefining
+\begin{definition}[\DescribeMacro{\glossarypreamble}]
+\cs{glossarypreamble}
+\end{definition}
+For example:
+\begin{verbatim}
+\renewcommand{\glossarypreamble}{Numbers in italic
+indicate primary definitions.}
+\end{verbatim}
+This needs to be done before the glossary is displayed.
+
+If you want a different preamble per glossary you can use
+\begin{definition}[\DescribeMacro{\setglossarypreamble}]
+\cs{setglossarypreamble}\oarg{type}\marg{preamble text}
+\end{definition}
+If \meta{type} is omitted, \cs{glsdefaulttype} is used.
+
+For example:
+\begin{verbatim}
+\setglossarypreamble{Numbers in italic
+indicate primary definitions.}
+\end{verbatim}
+This will print the given preamble text for the main glossary,
+but not have any preamble text for any other glossaries.
+
+There is an analogous command to \cs{glossarypreamble} called
+\begin{definition}[\DescribeMacro{\glossarypostamble}]
+\cs{glossarypostamble}
+\end{definition}
+which is placed at the end of each glossary.
+
+\begin{example}{Switch to Two Column Mode for Glossary}{ex:twocolumn}
+Suppose you are using the \glostyle{superheaderborder}
+style\footnote{you can't use the \glostyle{longheaderborder} style
+for this example as you can't use the \env{longtable} environment in
+two column mode.}, and you want the glossary to be in two columns,
+but after the glossary you want to switch back to one column mode,
+you could do:
+\begin{verbatim}
+\renewcommand*{\glossarysection}[2][]{%
+ \twocolumn[{\chapter*{#2}}]%
+ \setlength\glsdescwidth{0.6\linewidth}%
+ \glsglossarymark{\glossarytoctitle}%
+}
+
+\renewcommand*{\glossarypostamble}{\onecolumn}
+\end{verbatim}
+
+\end{example}
+
+Within each glossary, each entry name is formatted according to
+\begin{definition}[\DescribeMacro{\glsnamefont}]
+\cs{glsnamefont}\marg{name}
+\end{definition}
+which takes one argument: the entry name. This command is always
+used regardless of the glossary style. By default, \cs{glsnamefont}
+simply displays its argument in whatever the surrounding font
+happens to be. This means that in the list-like glossary styles
+(defined in the \sty{glossary-list} style file) the name will appear
+in bold, since the name is placed in the optional argument of
+\cs{item}, whereas in the tabular styles (defined in the
+\sty{glossary-long} and \sty{glossary-super} style files) the name
+will appear in the normal font. The hierarchical glossary styles
+(defined in the \sty{glossary-tree} style file) also set the name in
+bold.
+
+If you want to change the font for the description, or if you
+only want to change the name font for some types of entries
+but not others, you might want to consider using the
+\sty{glossaries-extra} package.
+
+\begin{example}{Changing the Font Used to Display Entry Names in the
+Glossary}{ex:glsnamefont}
+Suppose you want all the entry names to appear in
+medium weight small caps in your glossaries, then you can do:
+\begin{verbatim}
+\renewcommand{\glsnamefont}[1]{\textsc{\mdseries #1}}
+\end{verbatim}
+\end{example}
+
+\chapter[Xindy (Option 3)]{Xindy (\ifpdf\opt3\else Option 3\fi)}
+\label{sec:xindy}
+
+If you want to use \gls{xindy} to sort the glossary, you
+must use the package option \pkgopt{xindy}:
+\begin{verbatim}
+\usepackage[xindy]{glossaries}
+\end{verbatim}
+This ensures that the glossary information is written in
+\gls*{xindy} syntax.
+
+\sectionref{sec:makeglossaries} covers how to use the external
+\gls{indexingapp}, and \sectionref{sec:locationsyntax} covers the
+issues involved in the location syntax. This section covers the
+commands provided by the \styfmt{glossaries} package that allow you
+to adjust the \gls{xindy} style file (\filetype{.xdy}) and
+parameters.
+
+To assist writing information to the \gls{xindy} style
+file, the \styfmt{glossaries} package provides the following
+commands:
+\begin{definition}[\DescribeMacro{\glsopenbrace}]
+\cs{glsopenbrace}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsclosebrace}]
+\cs{glsclosebrace}
+\end{definition}
+which produce an open and closing brace. (This is needed because
+\verb|\{| and \verb|\}| don't expand to a simple brace character
+when written to a file.) Similarly, you can write a percent
+character using:
+\begin{definition}[\DescribeMacro{\glspercentchar}]
+\cs{glspercentchar}
+\end{definition}
+and a tilde character using:
+\begin{definition}[\DescribeMacro{\glstildechar}]
+\cs{glstildechar}
+\end{definition}
+For example, a newline character is specified in a \gls{xindy} style
+file using \verb|~n| so you can use \texttt{\cs{glstildechar} n}
+to write this correctly (or you can do \verb|\string~n|).
+A backslash can be written to a file using
+\begin{definition}[\DescribeMacro{\glsbackslash}]
+\cs{glsbackslash}
+\end{definition}
+
+In addition, if you are using a package that makes the double
+quote character active (e.g. \sty{ngerman}) you can use:
+\begin{definition}[\DescribeMacro{\glsquote}]
+\cs{glsquote}\marg{text}
+\end{definition}
+which will produce \verb|"|\meta{text}\verb|"|. Alternatively,
+you can use \verb|\string"| to write the double-quote character.
+This document assumes that the double quote character has not been
+made active, so the examples just use \verb|"| for clarity.
+
+If you want greater control over the \gls{xindy} style file than is
+available through the \LaTeX\ commands provided by the
+\styfmt{glossaries} package, you will need to edit the \gls*{xindy}
+style file. In which case, you must use \ics{noist} to prevent the
+style file from being overwritten by the \styfmt{glossaries}
+package. For additional information about \gls*{xindy}, read the
+\gls*{xindy} documentation. I'm sorry I can't provide any assistance
+with writing \gls*{xindy} style files. If you need help, I recommend
+you ask on the \gls*{xindy} mailing list
+(\url{http://xindy.sourceforge.net/mailing-list.html}).
+
+\section{Language and Encodings}
+\label{sec:langenc}
+
+When you use \gls{xindy}, you need to specify the language
+and encoding used (unless you have written your own custom
+\gls*{xindy} style file that defines the relevant alphabet
+and sort rules). If you use \gls{makeglossaries},
+this information is obtained from the document's auxiliary
+(\filetype{.aux}) file. The \gls{makeglossaries} script attempts to
+find the root language given your document settings, but in the
+event that it gets it wrong or if \gls*{xindy} doesn't support
+that language, then you can specify the required language using:
+\begin{definition}[\DescribeMacro{\GlsSetXdyLanguage}]
+\cs{GlsSetXdyLanguage}\oarg{glossary type}\marg{language}
+\end{definition}
+where \meta{language} is the name of the language. The
+optional argument can be used if you have multiple glossaries
+in different languages. If \meta{glossary type} is omitted, it
+will be applied to all glossaries, otherwise the language
+setting will only be applied to the glossary given by
+\meta{glossary type}.
+
+If the \sty{inputenc} package is used, the encoding will be
+obtained from the value of \ics{inputencodingname}.
+Alternatively, you can specify the encoding using:
+\begin{definition}[\DescribeMacro{\GlsSetXdyCodePage}]
+\cs{GlsSetXdyCodePage}\marg{code}
+\end{definition}
+where \meta{code} is the name of the encoding. For example:
+\begin{verbatim}
+\GlsSetXdyCodePage{utf8}
+\end{verbatim}
+
+Note that you can also specify the language and encoding using
+the package option
+\verb|xindy={language=|\meta{lang}\verb|,codepage=|\meta{code}\verb|}|.
+For example:
+\begin{verbatim}
+\usepackage[xindy={language=english,codepage=utf8}]{glossaries}
+\end{verbatim}
+
+If you write your own custom \gls{xindy} style file that
+includes the language settings, you need to set the language
+to nothing:
+\begin{verbatim}
+\GlsSetXdyLanguage{}
+\end{verbatim}
+(and remember to use \ics{noist} to prevent the style file from
+being overwritten).
+
+\begin{important}
+The commands \cs{GlsSetXdyLanguage} and \cs{GlsSetXdyCodePage}
+have no effect if you don't use \gls{makeglossaries}. If
+you call \gls{xindy} without \gls*{makeglossaries} you
+need to remember to set the language and encoding using the
+\xdyopt{L} and \xdyopt{C} switches.
+\end{important}
+
+\section{Locations and Number lists}
+\label{sec:xindyloc}
+
+If you use \pkgopt{xindy}, the \styfmt{glossaries} package needs to
+know which counters you will be using in the \gls{numberlist} in order to correctly format the \gls{xindy} style
+file. Counters specified using the \pkgopt{counter} package option
+or the \meta{counter} option of \ics{newglossary} are
+automatically taken care of, but if you plan to use a different
+counter in the \gloskey[glslink]{counter} key for commands like
+\ics{glslink}, then you need to identify these counters \emph{before}
+\ics{makeglossaries} using:
+\begin{definition}[\DescribeMacro{\GlsAddXdyCounters}]
+\cs{GlsAddXdyCounters}\marg{counter list}
+\end{definition}
+where \meta{counter list} is a comma-separated list of counter names.
+
+The most likely attributes used in the \gloskey[glslink]{format}
+key (\locfmt{textrm}, \locfmt{hyperrm} etc) are automatically added
+to the \gls{xindy} style file, but if you want to use another
+attribute, you need to add it using:
+\begin{definition}[\DescribeMacro{\GlsAddXdyAttribute}]
+\cs{GlsAddXdyAttribute}\marg{name}
+\end{definition}
+where \meta{name} is the name of the attribute, as used in
+the \gloskey[glslink]{format} key.
+
+Take care if you have multiple instances of the same location with
+different formats. The duplicate locations will be discarded
+according to the order in which the attributes are listed. Consider
+defining semantic commands to use for primary references. For
+example:
+\begin{verbatim}
+\newcommand*{\primary}[1]{\textbf{#1}}
+\GlsAddXdyAttribute{primary}
+\end{verbatim}
+Then in the document:
+\begin{verbatim}
+A \gls[format=primary]{duck} is an aquatic bird.
+There are lots of different types of \gls{duck}.
+\end{verbatim}
+This will give the \verb|format=primary| instance preference over
+the next use that doesn't use the \gloskey[glslink]{format} key.
+
+\begin{example}{Custom Font for Displaying a Location}{ex:hyperbfit}
+Suppose I want a bold, italic, hyperlinked location. I first need to define a
+command that will do this:
+\begin{verbatim}
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+\end{verbatim}
+but with \gls{xindy}, I also need to add this as an allowed
+attribute:
+\begin{verbatim}
+\GlsAddXdyAttribute{hyperbfit}
+\end{verbatim}
+Now I can use it in the optional argument of commands like
+\ics{gls}:
+\begin{verbatim}
+Here is a \gls[format=hyperbfit]{sample} entry.
+\end{verbatim}
+(where \texttt{sample} is the label of the required entry).
+\end{example}
+
+\begin{important}
+Note that \cs{GlsAddXdyAttribute} has no effect if \ics{noist} is
+used or if \ics{makeglossaries} is omitted.
+\cs{GlsAddXdyAttribute} must be used before \ics{makeglossaries}.
+Additionally, \cs{GlsAddXdyCounters} must come before
+\cs{GlsAddXdyAttribute}.
+\end{important}
+
+If the location numbers include formatting commands, then
+you need to add a location style in the appropriate format using
+\begin{definition}[\DescribeMacro{\GlsAddXdyLocation}]
+\cs{GlsAddXdyLocation}\oarg{prefix-location}\marg{name}\marg{definition}
+\end{definition}
+where \meta{name} is the name of the format and \meta{definition} is
+the \gls{xindy} definition. The optional argument \meta{prefix-location}
+is needed if \cs{theH}\meta{counter} either isn't defined or is
+different from \cs{the}\meta{counter}.
+Be sure to also read \sectionref{sec:locationsyntax} for some issues
+that you may encounter.
+
+\begin{important}
+Note that \cs{GlsAddXdyLocation} has no effect if \ics{noist} is
+used or if \ics{makeglossaries} is omitted.
+\cs{GlsAddXdyLocation} must be used before \ics{makeglossaries}.
+\end{important}
+
+\begin{example}{Custom Numbering System for Locations}{ex:customloc}
+Suppose I decide to use a somewhat eccentric numbering
+system for sections where I redefine \cs{thesection} as follows:
+\begin{verbatim}
+\renewcommand*{\thesection}{[\thechapter]\arabic{section}}
+\end{verbatim}
+If I haven't done "counter=section" in the package
+option, I need to specify that the counter will be used as a
+location number:
+\begin{verbatim}
+\GlsAddXdyCounters{section}
+\end{verbatim}
+Next I need to add the location style (\cs{thechapter} is assumed to
+be the standard \verb"\arabic{chapter}"):
+\begin{verbatim}
+\GlsAddXdyLocation{section}{:sep "[" "arabic-numbers" :sep "]"
+ "arabic-numbers"
+}
+\end{verbatim}
+Note that if I have further decided to use the \sty{hyperref}
+package and want to redefine \cs{theHsection} as:
+\begin{verbatim}
+\renewcommand*{\theHsection}{\thepart.\thesection}
+\renewcommand*{\thepart}{\Roman{part}}
+\end{verbatim}
+then I need to modify the \cs{GlsAddXdyLocation} code above to:
+\begin{verbatim}
+\GlsAddXdyLocation["roman-numbers-uppercase"]{section}{:sep "["
+ "arabic-numbers" :sep "]" "arabic-numbers"
+}
+\end{verbatim}
+Since \ics{Roman} will result in an empty string if the counter is
+zero, it's a good idea to add an extra location to catch this:
+\begin{verbatim}
+\GlsAddXdyLocation{zero.section}{:sep "["
+ "arabic-numbers" :sep "]" "arabic-numbers"
+}
+\end{verbatim}
+This example is illustrated in the sample file
+\samplefile{xdy2}.
+\end{example}
+
+\begin{example}{Locations as Dice}{ex:dice}
+Suppose I want a rather eccentric page numbering system that's
+represented by the number of dots on dice. The \sty{stix} package
+provides \cs{dicei}, \ldots, \cs{dicevi} that represent the six
+sides of a die. I can define a command that takes a number as its
+argument. If the number is less than seven, the appropriate
+\cs{dice}\meta{n} command is used otherwise it does \cs{dicevi} the
+required number of times with the leftover in a final
+\cs{dice}\meta{n}. For example, the number 16 is represented by
+\verb|\dicevi\dicevi\diceiv| ($6+6+4=16$). I've called this command
+\cs{tallynum} to match the example given earlier in
+\sectionref{sec:locationsyntax}:
+\begin{verbatim}
+\newrobustcmd{\tallynum}[1]{%
+ \ifnum\number#1<7
+ $\csname dice\romannumeral#1\endcsname$%
+ \else
+ $\dicevi$%
+ \expandafter\tallynum\expandafter{\numexpr#1-6}%
+ \fi
+}
+\end{verbatim}
+Here's the counter command:
+\begin{verbatim}
+newcommand{\tally}[1]{\tallynum{\arabic{#1}}}
+\end{verbatim}
+The \ctr{page} counter representation (\cs{thepage}) needs to be
+changed to use this command:
+\begin{verbatim}
+\renewcommand*{\thepage}{\tally{page}}
+\end{verbatim}
+The \cs{tally} command expands to \cs{tallynum} \marg{number} so
+this needs a location class that matches this format:
+\begin{verbatim}
+\GlsAddXdyLocation{tally}{%
+ :sep "\string\tallynum\space\glsopenbrace"
+ "arabic-numbers"
+ :sep "\glsclosebrace"
+}
+\end{verbatim}
+The space between \cs{tallynum} and \marg{number} is
+significant to \gls{xindy} so \cs{space} is required.
+
+Note that \cs{GlsAddXdyLocation}\marg{name}\marg{definition} will define
+commands in the form:
+\begin{definition}
+\cs{glsX}\meta{counter}"X"\meta{name}\marg{Hprefix}\marg{location}
+\end{definition}
+for each counter that has been identified either by the
+\pkgopt{counter} package option, the \meta{counter} option for
+\ics{newglossary} or in the argument of \ics{GlsAddXdyCounters}.
+The first argument \meta{Hprefix} is only relevant when used with
+the \sty{hyperref} package and indicates that \cs{theH}\meta{counter}
+is given by \cs{Hprefix}"."\cs{the}\meta{counter}.
+
+The sample file \samplefile{xdy}, which comes with the \styfmt{glossaries}
+package, uses the default \ctr{page} counter for locations, and it
+uses the default \ics{glsnumberformat} and a custom \cs{hyperbfit}
+format. A new \gls{xindy} location called \texttt{tallynum}, as
+illustrated above, is defined to make the page numbers appear as
+dice. In order for the location numbers to
+hyperlink to the relevant pages, I~need to redefine the necessary
+\cs{glsX}\meta{counter}"X"\meta{format} commands:
+\begin{verbatim}
+\renewcommand{\glsXpageXglsnumberformat}[2]{%
+ \linkpagenumber#2%
+}
+
+\renewcommand{\glsXpageXhyperbfit}[2]{%
+ \textbf{\em\linkpagenumber#2}%
+}
+
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+\end{verbatim}
+Note that the second argument of \cs{glsXpageXglsnumberformat} is
+in the format \cs{tallynum}\marg{n} so the line
+\begin{verbatim}
+ \linkpagenumber#2%
+\end{verbatim}
+does
+\begin{alltt}
+ \cs{linkpagenumber}\cs{tallynum}\marg{number}
+\end{alltt}
+so \cs{tallynum} is the first argument of \cs{linkpagenumber}
+and \meta{number} is the second argument.
+\end{example}
+
+\begin{important}
+This method is very sensitive to the internal definition of the
+location command.
+\end{important}
+
+\begin{example}{Locations as Words not Digits}{ex:fmtcount}
+Suppose I want the page numbers written as words
+rather than digits and I~use the \sty{fmtcount} package to
+do this. I~can redefine \ics{thepage} as follows:
+\begin{verbatim}
+\renewcommand*{\thepage}{\Numberstring{page}}
+\end{verbatim}
+This \emph{used} to get expanded to \verb|\protect \Numberstringnum |\marg{n}
+where \meta{n} is the Arabic page number. This means that I~needed to
+define a new location with the form:
+\begin{verbatim}
+\GlsAddXdyLocation{Numberstring}{:sep "\string\protect\space
+ \string\Numberstringnum\space\glsopenbrace"
+ "arabic-numbers" :sep "\glsclosebrace"}
+\end{verbatim}
+and if I'd used the \cs{linkpagenumber} command from the previous
+example, it would need \emph{three} arguments (the first being
+\cs{protect}):
+\begin{verbatim}
+\newcommand{\linkpagenumber}[3]{\hyperlink{page.#3}{#1#2{#3}}}
+\end{verbatim}
+
+The internal definition of \cs{Numberstring} has since changed
+so that it now expands to \verb|\Numberstringnum |\marg{n}
+(no \cs{protect}). This means that the location class definition
+must be changed to:
+\begin{verbatim}
+\GlsAddXdyLocation{Numberstring}{% no \protect now!
+ :sep "\string\Numberstringnum\space\glsopenbrace"
+ "arabic-numbers" :sep "\glsclosebrace"}
+\end{verbatim}
+and \cs{linkpagenumber} goes back to only two arguments:
+\begin{verbatim}
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+\end{verbatim}
+The other change is that \cs{Numberstring} uses
+\begin{alltt}
+\cs{the}\cs{value}\marg{counter}
+\end{alltt}
+instead of
+\begin{alltt}
+\cs{expandafter}\cs{the}\cs{csname} c@\meta{counter}\cs{endcsname}
+\end{alltt}
+so it hides \cs{c@page} from the location escaping mechanism
+(see \sectionref{sec:locationsyntax}). This means that the page
+number may be incorrect if the indexing occurs during the output
+routine.
+
+A more recent change to \sty{fmtcount} (v3.03) now puts three
+instances of \cs{expandafter} before \verb|\the\value| which
+no longer hides \cs{c@page} from the location escaping mechanism, so
+the page numbers should once more be correct. Further changes
+to the \sty{fmtcount} package may cause a problem again.
+
+\begin{important}
+When dealing with custom formats where the internal definitions
+are outside of your control and liable to change, it's best
+to provide a wrapper command.
+\end{important}
+
+Instead of directly using \cs{Numberstring} in the definition of
+\cs{thepage}, I can provide a custom command in the same form
+as the earlier \cs{tally} command:
+\begin{verbatim}
+\newcommand{\customfmt}[1]{\customfmtnum{\arabic{#1}}}
+\newrobustcmd{\customfmtnum}[1]{\Numberstringnum{#1}}
+\end{verbatim}
+This ensures that the location will always be written to
+the indexing file in the form:
+\begin{alltt}
+:locref "\glsopenbrace\glsclosebrace\glsopenbrace\string\\customfmtnum \marg{n}\glsclosebrace"
+\end{alltt}
+So the location class can be defined as:
+\begin{verbatim}
+\GlsAddXdyLocation{customfmt}{
+ :sep "\string\customfmtnum\space\glsopenbrace"
+ "arabic-numbers"
+ :sep "\glsclosebrace"}
+\end{verbatim}
+
+The sample file
+\samplefile{xdy3} illustrates this.
+\end{example}
+
+In the \gls{numberlist}, the locations are sorted according to the list
+of provided location classes. The default ordering is:
+\texttt{roman-page-numbers} (i, ii, \ldots), \texttt{arabic-page-numbers}
+(1, 2, \ldots), \texttt{arabic-section-numbers} (for example, 1.1 if the
+compositor is a full stop or 1-1 if the compositor is a
+hyphen\footnote{see \ics{glsSetCompositor} described in
+\sectionref{sec:setup}}), \texttt{alpha-page-numbers} (a, b, \ldots),
+\texttt{Roman-page-numbers} (I, II, \ldots), \texttt{Alpha-page-numbers}
+(A, B, \ldots), \texttt{Appendix-page-numbers} (for example, A.1 if the Alpha
+compositor is a full stop or A-1 if the Alpha compositor is a
+hyphen\footnote{see \ics{glsSetAlphaCompositor} described in
+\sectionref{sec:setup}}), user defined location names (as specified
+by \ics{GlsAddXdyLocation} in the order in which they were defined),
+and finally \texttt{see} (cross-referenced entries).\footnote{With
+\gls{glossaries-extra} \texttt{seealso} is appended to the end of
+the list.} This ordering can be changed using:
+
+\begin{definition}[\DescribeMacro\GlsSetXdyLocationClassOrder]
+\cs{GlsSetXdyLocationClassOrder}\marg{location names}
+\end{definition}
+where each location name is delimited by double quote marks and
+separated by white space. For example:
+\begin{verbatim}
+\GlsSetXdyLocationClassOrder{
+ "arabic-page-numbers"
+ "arabic-section-numbers"
+ "roman-page-numbers"
+ "Roman-page-numbers"
+ "alpha-page-numbers"
+ "Alpha-page-numbers"
+ "Appendix-page-numbers"
+ "see"
+}
+\end{verbatim}
+(Remember to add \verb|"seealso"| if you're using
+\gls{glossaries-extra}.)
+
+\begin{important}
+Note that \cs{GlsSetXdyLocationClassOrder} has no effect if
+\ics{noist} is used or if \ics{makeglossaries} is omitted.
+\cs{GlsSetXdyLocationClassOrder} must be used before
+\ics{makeglossaries}.
+\end{important}
+
+If a \gls{numberlist} consists of a sequence of consecutive
+numbers, the range will be concatenated. The
+number of consecutive locations that causes a range formation
+defaults to 2, but can be changed using:
+
+\begin{definition}[\DescribeMacro\GlsSetXdyMinRangeLength]
+\cs{GlsSetXdyMinRangeLength}\marg{n}
+\end{definition}
+For example:
+\begin{verbatim}
+\GlsSetXdyMinRangeLength{3}
+\end{verbatim}
+The argument may also be the keyword \texttt{none}, to indicate that
+there should be no range formations. See the \gls{xindy}
+manual for further details on range formations.
+
+\begin{important}
+Note that \cs{GlsSetXdyMinRangeLength} has no effect if \ics{noist}
+is used or if \ics{makeglossaries} is omitted.
+\cs{GlsSetXdyMinRangeLength} must be used before
+\ics{makeglossaries}.
+\end{important}
+See also \sectionref{sec:ranges}.
+
+\section{Glossary Groups}
+\label{sec:groups}
+
+The glossary is divided into groups according to the first
+letter of the sort key. The \styfmt{glossaries} package also adds
+a number group by default, unless you suppress it in the
+\pkgopt{xindy} package option. For example:
+\begin{verbatim}
+\usepackage[xindy={glsnumbers=false}]{glossaries}
+\end{verbatim}
+Any entry that doesn't go in one of the letter groups or the
+number group is placed in the default group. If you want \gls{xindy}
+to sort the number group numerically (rather than by a string sort)
+then you need to use \gls{xindy}['s] \texttt{numeric-sort} module:
+\begin{verbatim}
+\GlsAddXdyStyle{numeric-sort}
+\end{verbatim}
+
+If you don't use \texttt{glsnumbers=false}, the default behaviour is to locate
+the number group before the \qt{A} letter group. If you are not using a
+Roman alphabet, you need to change this using:
+
+
+\begin{definition}[\DescribeMacro\GlsSetXdyFirstLetterAfterDigits]
+\cs{GlsSetXdyFirstLetterAfterDigits}\marg{letter}
+\end{definition}
+where \meta{letter} is the first letter of your alphabet. Take care
+if you're using \sty{inputenc} as non-ASCII characters are actually
+active characters that expand. (This isn't a problem with the native
+UTF-8 engines and \sty{fontspec}.) The starred form will sanitize
+the argument to prevent expansion.
+Alternatively you can use:
+
+
+\begin{definition}[\DescribeMacro\GlsSetXdyNumberGroupOrder]
+\cs{GlsSetXdyNumberGroupOrder}\marg{relative location}
+\end{definition}
+to change the default
+\begin{alltt}
+:before \cs{string}"\meta{letter}\cs{string}"
+\end{alltt}
+to \meta{relative location}. For example:
+\begin{verbatim}
+\GlsSetXdyNumberGroupOrder{:after \string"Z\string"}
+\end{verbatim}
+will put the number group after the \qt{Z} letter group.
+Again take care of active characters. There's a starred version
+that sanitizes the argument (so don't use \cs{string} in it).
+\begin{alltt}
+\cs{GlsSetXdyNumberGroupOrder}*\{:after "\"O"\}
+\end{alltt}
+
+\begin{important}
+Note that these commands have no effect if
+\ics{noist} is used or if \ics{makeglossaries} is omitted.
+\cs{GlsSetXdyFirstLetterAfterDigits} must be used before
+\ics{makeglossaries}.\par
+\end{important}
+
+
+\chapter{Defining New Glossaries}
+\label{sec:newglossary}
+
+A new glossary can be defined using:
+\begin{definition}[\DescribeMacro{\newglossary}]
+\cs{newglossary}\oarg{log-ext}\marg{name}\marg{in-ext}\marg{out-ext}\linebreak\marg{title}\oarg{counter}
+\end{definition}
+where \meta{name} is the label to assign to this glossary.
+The arguments \meta{in-ext} and \meta{out-ext} specify the extensions to
+give to the input and output files for that glossary, \meta{title}
+is the default title for this new glossary and the final optional
+argument \meta{counter} specifies which counter to use for the
+associated \glspl{numberlist} (see also
+\sectionref{sec:numberlists}). The first optional argument specifies
+the extension for the \gls{makeindex} (\opt2) or \gls{xindy} (\opt3)
+transcript file (this information is only used by
+\gls{makeglossaries} which picks up the information from the
+auxiliary file). If you use \opt1, the \meta{log-ext},
+\meta{in-ext} and \meta{out-ext} arguments are ignored.
+
+\begin{important}
+The glossary label \meta{name} must not contain any active
+characters. It's generally best to stick with just characters that
+have category code~11 (typically the non-extended \glspl{latinchar}
+for standard \LaTeX).
+\end{important}
+
+There is also a starred version (new to v4.08):
+\begin{definition}[\DescribeMacro{\newglossary*}]
+\cs{newglossary*}\marg{name}\marg{title}\oarg{counter}
+\end{definition}
+which is equivalent to
+\begin{alltt}
+\cs{newglossary}[\meta{name}-glg]\marg{name}\{\meta{name}-gls\}\{\meta{name}-glo\}\ifpdf\linebreak\fi\marg{title}\oarg{counter}
+\end{alltt}
+or you can also use:
+\begin{definition}[\DescribeMacro{\altnewglossary}]
+\cs{altnewglossary}\marg{name}\marg{tag}\marg{title}\oarg{counter}
+\end{definition}
+which is equivalent to
+\begin{alltt}
+\cs{newglossary}[\meta{tag}-glg]\marg{name}\{\meta{tag}-gls\}\{\meta{tag}-glo\}\marg{title}\oarg{counter}
+\end{alltt}
+
+It may be that you have some terms that are so common
+that they don't need to be listed. In this case, you can define
+a~special type of glossary that doesn't create any associated files.
+This is referred to as an \qt{ignored glossary} and it's ignored by
+commands that iterate over all the glossaries, such as
+\ics{printglossaries}. To define an ignored glossary, use
+\begin{definition}[\DescribeMacro\newignoredglossary]
+\cs{newignoredglossary}\marg{name}
+\end{definition}
+where \meta{name} is the name of the glossary (as above). This
+glossary type will automatically be added to the
+\pkgopt{nohypertypes} list, since there are no hypertargets for
+the entries in an ignored glossary.
+(The sample file \samplefile{-entryfmt} defines an ignored glossary.)
+
+You can test if a glossary is an ignored one using:
+\begin{definition}[\DescribeMacro\ifignoredglossary]
+\cs{ifignoredglossary}\marg{name}\marg{true}\marg{false}
+\end{definition}
+This does \meta{true} if \meta{name} was defined as an ignored
+glossary, otherwise it does \meta{false}.
+
+Note that the main (default) glossary is automatically created as:
+\begin{verbatim}
+\newglossary{main}{gls}{glo}{\glossaryname}
+\end{verbatim}
+so it can be identified by the label \texttt{main} (unless the
+\pkgopt{nomain} package option is used). Using the
+\pkgopt{acronym} package option is equivalent to:
+\begin{verbatim}
+\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+\end{verbatim}
+so it can be identified by the label \texttt{acronym}. If you are
+not sure whether the \pkgopt{acronym} option has been used, you
+can identify the list of acronyms by the command
+\DescribeMacro{\acronymtype}\cs{acronymtype} which is set to
+\texttt{acronym}, if the \pkgopt{acronym} option has been used,
+otherwise it is set to \texttt{main}. Note that if you are using
+the main glossary as your list of acronyms, you need to declare
+it as a list of acronyms using the package option
+\pkgopt{acronymlists}.
+
+The \pkgopt{symbols} package option creates a new glossary with the
+label \texttt{symbols} using:
+\begin{verbatim}
+\newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}
+\end{verbatim}
+The \pkgopt{numbers} package option creates a new glossary with
+the label \texttt{numbers} using:
+\begin{verbatim}
+\newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}
+\end{verbatim}
+The \pkgopt{index} package option creates a new glossary with
+the label \texttt{index} using:
+\begin{verbatim}
+\newglossary[ilg]{index}{ind}{idx}{\indexname}
+\end{verbatim}
+
+\begin{important}
+\optsand23: all glossaries must be defined before \ics{makeglossaries} to
+ensure that the relevant output files are opened.
+
+See \sectionref{sec:fixednames} if you want to redefine \cs{glossaryname},
+especially if you are using \sty{babel} or \sty{translator}.
+(Similarly for \cs{glssymbolsgroupname} and
+\cs{glsnumbersgroupname}.) If you want to redefine \ics{indexname},
+just follow the advice in
+\href{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=fixnam}{How to
+change LaTeX’s \qt{fixed names}}.
+\end{important}
+
+\chapter{Acronyms and Other Abbreviations}
+\label{sec:acronyms}
+
+The \sty{glossaries-extra} package provides superior
+abbreviation handling. You may want to consider using that
+package instead of the commands described here.
+
+\begin{important}
+Note that although this chapter uses the term \qt{acronym}, you can also
+use the commands described here for initialisms or contractions
+(as in the case of some of the examples given below).
+If the glossary title is no longer applicable (for example, it
+should be \qt{Abbreviations} rather than \qt{Acronyms}) then
+you can change the title either by redefining \ics{acronymname} (see
+\sectionref{sec:languages}) or by using the \gloskey[printglossary]{title}
+in the optional argument of \ics{printglossary} (or
+\ics{printacronym}). Alternatively consider using the
+\sty{glossaries-extra} package's \pkgoptfmt{abbreviations}
+option instead.
+\end{important}
+
+You may have noticed in \sectionref{sec:newglosentry} that when you
+specify a new entry, you can specify alternate text to use when the
+term is \glsd{firstuse} in the document. This provides a
+useful means to define abbreviations. For convenience, the
+\styfmt{glossaries} package defines the command:
+\begin{definition}[\DescribeMacro{\newacronym}]
+\cs{newacronym}\oarg{key-val list}\marg{label}\marg{abbrv}\marg{long}
+\end{definition}
+
+This uses \ics{newglossaryentry} to create an entry with the given
+label in the glossary given by \ics{acronymtype}. You can specify a
+different glossary using the \gloskey{type} key within the optional
+argument. The \cs{newacronym} command also uses the \gloskey{long},
+\gloskey{longplural}, \gloskey{short} and \gloskey{shortplural} keys
+in \cs{newglossaryentry} to store the long and abbreviated forms and
+their plurals.
+
+Note that the same restrictions on the entry \meta{label}
+in \ics{newglossaryentry} also apply to \cs{newacronym}
+(see \sectionref{sec:newglosentry}).
+
+\begin{important}
+If you haven't identified the specified glossary type as a list of
+acronyms (via the package option
+\pkgopt{acronymlists} or the command \ics{DeclareAcronymList},
+see \sectionref{sec:pkgopts-acronym}) \cs{newacronym} will add it to
+the list and \emph{reset the display style} for that glossary via
+\ics{defglsentryfmt}. If you have a mixture of acronyms and regular
+entries within the same glossary, care is needed if you want to
+change the display style: you must first identify that glossary as a
+list of acronyms and then use \ics{defglsentryfmt} (not redefine
+\ics{glsentryfmt}) before defining your entries.
+\end{important}
+
+The optional argument \marg{key-val list} allows you to specify
+additional information. Any key that can be used in the second
+argument of \ics{newglossaryentry} can also be used here in \meta{key-val
+list}.
+For example, \gloskey{description} (when used with one of the styles that
+require a description, described in
+\sectionref{sec:setacronymstyle}) or you can
+override plural forms of \meta{abbrv} or \meta{long} using the
+\gloskey{shortplural} or \gloskey{longplural} keys.
+For example:
+\begin{verbatim}
+\newacronym[longplural={diagonal matrices}]%
+ {dm}{DM}{diagonal matrix}
+\end{verbatim}
+If the \firstuse\ uses the plural form, \verb|\glspl{dm}| will
+display: diagonal matrices (DMs). If you want to use
+the \gloskey{longplural} or \gloskey{shortplural} keys, I recommend
+you use \ics{setacronymstyle} to set the display style rather than
+using one of the pre-version 4.02 acronym styles.
+
+As with \gloskey{plural} and \gloskey{firstplural}, if
+\gloskey{longplural} is missing, it's obtained by appended
+\ics{glspluralsuffix} to the singular form. The short plural
+\gloskey{shortplural} is obtained (is not explicitly set) by appending
+\ics{glsacrpluralsuffix} to the short form. These commands may be
+changed by the associated language files, but they can't be added to
+the usual caption hooks as there's no guarantee when they'll be
+expanded (as \hyperref[pluralsuffix]{discussed earlier}).
+A different approach is used by \styfmt{glossaries-extra}, which has
+category attributes to determine whether or not to append a suffix
+when forming the default value of \gloskey{shortplural}.
+
+Since \ics{newacronym} uses \ics{newglossaryentry}, you can use
+commands like \ics{gls} and \ics{glsreset} as with any other
+glossary entry.
+
+\begin{important}
+Since \cs{newacronym} sets \verb|type=\acronymtype|,
+if you want to load a file containing acronym definitions using
+\ics{loadglsentries}\oarg{type}\marg{filename}, the optional argument
+\meta{type} will not have an effect unless you explicitly set the
+type as \verb|type=\glsdefaulttype| in the optional argument to
+\ics{newacronym}. See \sectionref{sec:loadglsentries}.
+\end{important}
+
+\begin{example}{Defining an Abbreviation}{ex:newacronym}
+The following defines the abbreviation IDN:
+\begin{verbatim}
+\newacronym{idn}{IDN}{identification number}
+\end{verbatim}
+\verb|\gls{idn}| will produce \qt{identification number (IDN)} on
+\firstuse\ and \qt{IDN} on subsequent uses. If you want to use one
+of the smallcaps acronym styles, described in
+\sectionref{sec:setacronymstyle}, you need to use lower case
+characters for the shortened form:
+\begin{verbatim}
+\newacronym{idn}{idn}{identification number}
+\end{verbatim}
+Now \verb|\gls{idn}| will produce \qt{identification number
+(\textsc{idn})} on \firstuse\ and \qt{\textsc{idn}} on subsequent
+uses.
+\end{example}
+
+\begin{important}
+Avoid nested definitions.
+\end{important}
+
+Recall from the warning in
+\sectionref{sec:newglosentry} that you should avoid using
+the \glslike\ and \glstextlike\ commands within the value of
+keys like \gloskey{text} and \gloskey{first} due to complications
+arising from nested links. The same applies to abbreviations
+defined using \cs{newacronym}.
+
+For example, suppose you have defined:
+\begin{verbatim}
+\newacronym{ssi}{SSI}{server side includes}
+\newacronym{html}{HTML}{hypertext markup language}
+\end{verbatim}
+you may be tempted to do:
+\begin{verbatim}
+\newacronym{shtml}{S\gls{html}}{\gls{ssi} enabled \gls{html}}
+\end{verbatim}
+\textbf{Don't!} This will break the case-changing commands, such
+as \ics{Gls}, it will cause inconsistencies on \firstuse, and,
+if hyperlinks are enabled, will cause nested hyperlinks. It will
+also confuse the commands used by the entry formatting (such as
+\ics{glslabel}).
+
+Instead, consider doing:
+\begin{verbatim}
+\newacronym
+ [description={\gls{ssi} enabled \gls{html}}]
+ {shtml}{SHTML}{SSI enabled HTML}
+\end{verbatim}
+or
+\begin{verbatim}
+\newacronym
+ [description={\gls{ssi} enabled \gls{html}}]
+ {shtml}{SHTML}
+ {server side includes enabled hypertext markup language}
+\end{verbatim}
+Similarly for the \glstextlike\ commands.
+
+Other approaches are available with \sty{glossaries-extra}.
+See the section \qt{Nested Links} in the \styfmt{glossaries-extra}
+user manual.
+
+\begin{important}
+The commands described below are similar to the \glstextlike\
+commands in that they don't modify the \firstuseflag.
+However, their display is governed by \ics{defentryfmt} with
+\ics{glscustomtext} set as appropriate. All caveats that apply to
+the \glstextlike\ commands also apply to the following commands.
+(Including the warning immediately above this box.)
+\end{important}
+
+The optional arguments are the same as those for the \glstextlike\
+commands, and there are similar star and plus variants that switch
+off or on the hyperlinks. As with the \glstextlike\ commands, the
+\gls{linktext} is placed in the argument of \ics{glstextformat}.
+
+\begin{definition}[\DescribeMacro{\acrshort}]
+\cs{acrshort}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This sets the \gls{linktext} to the short form (within the argument
+of \ics{acronymfont}) for the entry given by \meta{label}. The short
+form is as supplied by the \gloskey{short} key, which
+\ics{newacronym} implicitly sets.
+
+There are also analogous upper case variants:
+\begin{definition}[\DescribeMacro{\Acrshort}]
+\cs{Acrshort}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\ACRshort}]
+\cs{ACRshort}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+There are also plural versions:
+\begin{definition}[\DescribeMacro\acrshortpl]
+\cs{acrshortpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\Acrshortpl]
+\cs{Acrshortpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\ACRshortpl]
+\cs{ACRshortpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+The short plural form is as supplied
+by the \gloskey{shortplural} key, which \ics{newacronym} implicitly sets.
+
+\begin{definition}[\DescribeMacro{\acrlong}]
+\cs{acrlong}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This sets the \gls{linktext} to the long form for the entry given by
+\meta{label}. The long form is as supplied
+by the \gloskey{long} key, which \ics{newacronym} implicitly sets.
+
+There are also analogous upper case variants:
+\begin{definition}[\DescribeMacro{\Acrlong}]
+\cs{Acrlong}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\ACRlong}]
+\cs{ACRlong}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+Again there are also plural versions:
+\begin{definition}[\DescribeMacro{\acrlongpl}]
+\cs{acrlongpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Acrlongpl}]
+\cs{Acrlongpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\ACRlongpl}]
+\cs{ACRlongpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+The long plural form is as supplied by the \gloskey{longplural} key,
+which \ics{newacronym} implicitly sets.
+
+The commands below display the full form of the acronym, but note
+that this isn't necessarily the same as the form used on \firstuse.
+These full-form commands are shortcuts that use the above commands,
+rather than creating the \gls{linktext} from the complete full form.
+These full-form commands have star and plus variants and optional
+arguments that are passed to the above commands.
+
+\begin{definition}[\DescribeMacro{\acrfull}]
+\cs{acrfull}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This is a shortcut for
+\begin{definition}[\DescribeMacro{\acrfullfmt}]
+\cs{acrfullfmt}\marg{options}\marg{label}\marg{insert}
+\end{definition}
+which by default does
+\begin{alltt}
+\cs{acrfullformat}
+ \{\cs{acrlong}\oarg{options}\marg{label}\marg{insert}\}
+ \{\cs{acrshort}\oarg{options}\marg{label}\}
+\end{alltt}
+where
+\begin{definition}[\DescribeMacro\acrfullformat]
+\cs{acrfullformat}\marg{long}\marg{short}
+\end{definition}
+by default does \meta{long} (\meta{short}). This command is now
+deprecated for new acronym styles but is used by the default for
+backward compatibility if \cs{setacronymstyle}
+(\sectionref{sec:setacronymstyle}) hasn't been used. (For further
+details of these format commands see \ifpdf
+section~\ref*{sec:code:acronym} in \fi the documented code,
+\texttt{glossaries-code.pdf}.)
+
+There are also analogous upper case variants:
+\begin{definition}[\DescribeMacro{\Acrfull}]
+\cs{Acrfull}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro{\ACRfull}]
+\cs{ACRfull}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+and plural versions:
+\begin{definition}[\DescribeMacro\acrfullpl]
+\cs{acrfullpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\Acrfullpl]
+\cs{Acrfullpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\ACRfullpl]
+\cs{ACRfullpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+If you find the above commands too cumbersome to write, you can use
+the \pkgopt{shortcuts} package option to activate the shorter
+command names listed in \tableref{tab:shortcuts}.
+
+\begin{table}[htbp]
+\caption{Synonyms provided by the package option \pkgoptfmt{shortcuts}}
+\label{tab:shortcuts}
+\vskip\baselineskip
+\centering
+\begin{tabular}{ll}
+\bfseries Shortcut Command & \bfseries Equivalent Command\\
+\ics{acs} & \ics{acrshort}\\
+\ics{Acs} & \ics{Acrshort}\\
+\ics{acsp} & \ics{acrshortpl}\\
+\ics{Acsp} & \ics{Acrshortpl}\\
+\ics{acl} & \ics{acrlong}\\
+\ics{Acl} & \ics{Acrlong}\\
+\ics{aclp} & \ics{acrlongpl}\\
+\ics{Aclp} & \ics{Acrlongpl}\\
+\ics{acf} & \ics{acrfull}\\
+\ics{Acf} & \ics{Acrfull}\\
+\ics{acfp} & \ics{acrfullpl}\\
+\ics{Acfp} & \ics{Acrfullpl}\\
+\ics{ac} & \ics{gls}\\
+\ics{Ac} & \ics{Gls}\\
+\ics{acp} & \ics{glspl}\\
+\ics{Acp} & \ics{Glspl}
+\end{tabular}
+\end{table}
+
+It is also possible to access the long and short forms without
+adding information to the glossary using commands analogous to
+\ics{glsentrytext} (described in \sectionref{sec:glsnolink}).
+
+\begin{important}
+The commands that convert the first letter to upper case come with
+the same caveats as those for analogous commands like
+\ics{Glsentrytext} (non-expandable, can't be used in PDF bookmarks,
+care needs to be taken if the first letter is an accented character
+etc). See \sectionref{sec:glsnolink}.
+\end{important}
+
+The long form can be accessed using:
+\begin{definition}[\DescribeMacro{\glsentrylong}]
+\cs{glsentrylong}\marg{label}
+\end{definition}
+or, with the first letter converted to upper case:
+\begin{definition}[\DescribeMacro{\Glsentrylong}]
+\cs{Glsentrylong}\marg{label}
+\end{definition}
+Plural forms:
+\begin{definition}[\DescribeMacro{\glsentrylongpl}]
+\cs{glsentrylongpl}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentrylongpl}]
+\cs{Glsentrylongpl}\marg{label}
+\end{definition}
+
+Similarly, to access the short form:
+\begin{definition}[\DescribeMacro{\glsentryshort}]
+\cs{glsentryshort}\marg{label}
+\end{definition}
+or, with the first letter converted to upper case:
+\begin{definition}[\DescribeMacro{\Glsentryshort}]
+\cs{Glsentryshort}\marg{label}
+\end{definition}
+Plural forms:
+\begin{definition}[\DescribeMacro{\glsentryshortpl}]
+\cs{glsentryshortpl}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryshortpl}]
+\cs{Glsentryshortpl}\marg{label}
+\end{definition}
+
+And the full form can be obtained using:
+\begin{definition}[\DescribeMacro{\glsentryfull}]
+\cs{glsentryfull}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryfull}]
+\cs{Glsentryfull}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsentryfullpl}]
+\cs{glsentryfullpl}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\Glsentryfullpl}]
+\cs{Glsentryfullpl}\marg{label}
+\end{definition}
+These again use \ics{acrfullformat} by default, but
+the new styles described in the section below use different
+formatting commands.
+
+\section{Changing the Abbreviation Style}
+\label{sec:setacronymstyle}
+
+It may be that the default style doesn't suit your requirements in
+which case you can switch to another style using
+\begin{definition}[\DescribeMacro{\setacronymstyle}]
+\cs{setacronymstyle}\marg{style name}
+\end{definition}
+where \meta{style name} is the name of the required style.
+
+\begin{important}
+You must use \cs{setacronymstyle} \emph{before} you define the
+acronyms with \cs{newacronym}.
+\end{important}
+
+For example:
+\begin{verbatim}
+\usepackage[acronym]{glossaries}
+
+\makeglossaries
+
+\setacronymstyle{long-sc-short}
+
+\newacronym{html}{html}{hypertext markup language}
+\newacronym{xml}{xml}{extensible markup language}
+\end{verbatim}
+Unpredictable results can occur if you try to use multiple styles.
+
+\begin{important}
+If you need multiple abbreviation styles, then try
+using the \gls{glossaries-extra} package, which has better
+abbreviation management.
+\end{important}
+
+Note that unlike the default behaviour of \cs{newacronym}, the
+styles used via \cs{setacronymstyle} don't use the \gloskey{first}
+or \gloskey{text} keys, but instead they use \ics{defglsentryfmt} to
+set a~custom format that uses the \gloskey{long} and \gloskey{short}
+keys (or their plural equivalents). This means that these styles
+cope better with plurals that aren't formed by simply appending the
+singular form with the letter \qt{s}. In fact, most of the predefined
+styles use \ics{glsgenacfmt} and modify the definitions of commands
+like \ics{genacrfullformat}.
+
+Note that when you use \cs{setacronymstyle} the \gloskey{name} key
+is set to
+\begin{definition}[\DescribeMacro{\acronymentry}]
+\cs{acronymentry}\marg{label}
+\end{definition}
+and the \gloskey{sort} key is set to
+\begin{definition}[\DescribeMacro{\acronymsort}]
+\cs{acronymsort}\marg{short}\marg{long}
+\end{definition}
+These commands are redefined by the acronym styles. However, you can
+redefine them again after the style has been set but before you use
+\cs{newacronym}. Protected expansion is performed on \cs{acronymsort}
+when the entry is defined.
+
+\subsection{Predefined Acronym Styles}
+\label{sec:predefinedacrstyles}
+
+The \styfmt{glossaries} package provides a~number of predefined
+styles. These styles apply
+\begin{definition}[\DescribeMacro{\firstacronymfont}]
+\cs{firstacronymfont}\marg{text}
+\end{definition}
+to the short form on first use and
+\begin{definition}[\DescribeMacro{\acronymfont}]
+\cs{acronymfont}\marg{text}
+\end{definition}
+on subsequent use. The styles modify the definition of
+\cs{acronymfont} as required, but \ics{firstacronymfont} is only set
+once by the package when it's loaded. By default
+\ics{firstacronymfont}\marg{text} is the same as
+\ics{acronymfont}\marg{text}.
+If you want the short form displayed differently on first use, you
+can redefine \ics{firstacronymfont} independently of the acronym
+style.
+
+The predefined styles that contain \texttt{sc} in their name (for
+example \acrstyle{long-sc-short}) redefine \cs{acronymfont} to use
+\ics{textsc}, which means that the short form needs to be specified
+in lower case. \ifpdf Remember that \verb|\textsc{abc}| produces
+\textsc{abc} but \verb|\textsc{ABC}| produces \textsc{ABC}.\fi
+
+\hypertarget{boldsc}{}%
+\begin{important}%
+Some fonts don't support bold smallcaps, so you may need to redefine
+\ics{glsnamefont} (see \sectionref{sec:printglossary}) to switch to
+medium weight if you are using a glossary style that displays entry
+names in bold and you have chosen an acronym style that uses
+\ics{textsc}.
+\end{important}
+
+The predefined styles that contain \texttt{sm} in their name
+(for example \acrstyle{long-sm-short}) redefine \cs{acronymfont} to
+use \ics{textsmaller}.
+
+\hypertarget{smaller}{}%
+\begin{important}
+Note that the \styfmt{glossaries} package doesn't define or load any package that
+defines \ics{textsmaller}. If you use one of the acronym styles that
+set \ics{acronymfont} to \cs{textsmaller} you must
+explicitly load the \sty{relsize} package or otherwise define
+\cs{textsmaller}.
+\end{important}
+
+The remaining predefined styles redefine \cs{acronymfont}\marg{text}
+to simply do its argument \meta{text}.
+
+\begin{important}
+In most cases, the predefined styles adjust \ics{acrfull} and
+\ics{glsentryfull} (and their plural and upper case variants) to
+reflect the style. The only exceptions to this are the
+\acrstyle{dua} and \acrstyle{footnote} styles (and their variants).
+\end{important}
+
+The following styles are supplied by the \styfmt{glossaries}
+package:
+\begin{itemize}
+\item \acrstyle{long-short}, \acrstyle{long-sc-short},
+\acrstyle{long-sm-short}, \acrstyle{long-sp-short}:
+
+With these three styles, acronyms are displayed in the form
+\begin{definition}
+\meta{long} (\ics{firstacronymfont}\marg{short})
+\end{definition}
+on first use and
+\begin{definition}
+\ics{acronymfont}\marg{short}
+\end{definition}
+on subsequent use.
+They also set \cs{acronymsort}\marg{short}\marg{long} to just
+\meta{short}. This means that the acronyms are sorted according to
+their short form. In addition, \cs{acronymentry}\marg{label} is set
+to just the short form (enclosed in \cs{acronymfont}) and the
+\gloskey{description} key is set to the long form.
+
+The \acrstyle{long-sp-short} style was introduced in version~4.16
+and uses
+\begin{definition}[\DescribeMacro\glsacspace]
+\cs{glsacspace}\marg{label}
+\end{definition}
+for the space between the long and short forms. This defaults to
+a~non-breakable space (\verb|~|) if
+(\cs{acronymfont}\marg{short}) is less than 3em, otherwise it uses
+a~normal space. This may be redefined as required. For example, to
+always use a~non-breakable space:
+\begin{verbatim}
+\renewcommand*{\glsacspace}[1]{~}
+\end{verbatim}
+
+\item \acrstyle{short-long}, \acrstyle{sc-short-long},
+\acrstyle{sm-short-long}:
+
+These three styles are analogous to the above three styles, except
+the display order is swapped to
+\begin{definition}
+\ics{firstacronymfont}\marg{short} (\meta{long})
+\end{definition}
+on first use.
+
+Note, however, that \ics{acronymsort} and \ics{acronymentry} are the
+same as for the \meta{long} (\meta{short}) styles above, so the
+acronyms are still sorted according to the short form.
+
+\item \acrstyle{long-short-desc}, \acrstyle{long-sc-short-desc},
+\acrstyle{long-sm-short-desc}, \acrstyle{long-sp-short-desc}:
+
+These are like the \acrstyle{long-short}, \acrstyle{long-sc-short},
+\acrstyle{long-sm-short} and \acrstyle{long-sp-short} styles described above, except that the
+\gloskey{description} key must be supplied in the optional argument
+of \ics{newacronym}. They also redefine \ics{acronymentry} to
+\marg{long} (\cs{acronymfont}\marg{short}) and redefine
+\ics{acronymsort}\marg{short}\marg{long} to just \meta{long}.
+This means that the acronyms are sorted according to the long form,
+and in the list of acronyms the name field has the long form
+followed by the short form in parentheses. I~recommend you use
+a~glossary style such as \glostyle{altlist} with these acronym
+styles to allow for the long name field.
+
+\item \acrstyle{short-long-desc}, \acrstyle{sc-short-long-desc},
+\acrstyle{sm-short-long-desc}:
+
+These styles are analogous to the above three styles, but the first
+use display style is:
+\begin{definition}
+\cs{firstacronymfont}\marg{short} (\meta{long})
+\end{definition}
+The definitions of \cs{acronymsort} and \cs{acronymentry} are the
+same as those for \acrstyle{long-short-desc} etc.
+
+\item \acrstyle{dua}, \acrstyle{dua-desc}:
+
+With these styles, the \glslike\ commands always display the long form
+regardless of whether the entry has been used or not. However, \ics{acrfull}
+and \ics{glsentryfull} will display \meta{long} (\cs{acronymfont}\marg{short}). In the case
+of \acrstyle{dua}, the \gloskey{name} and \gloskey{sort} keys are set to
+the short form and the description is set to the long form. In the
+case of \acrstyle{dua-desc}, the \gloskey{name} and \gloskey{sort}
+keys are set to the long form and the description is supplied in the
+optional argument of \ics{newacronym}.
+
+\item \acrstyle{footnote}, \acrstyle{footnote-sc},
+\acrstyle{footnote-sm}:
+
+With these three styles, on first use the \glslike\ commands display:
+\begin{definition}
+\cs{firstacronymfont}\marg{short}\ics{footnote}\marg{long}
+\end{definition}
+However, \ics{acrfull} and \ics{glsentryfull} are set to
+\cs{acronymfont}\marg{short} (\meta{long}). On subsequent use the display is:
+\begin{definition}
+\cs{acronymfont}\marg{short}
+\end{definition}
+The \gloskey{sort} and \gloskey{name} keys are set to
+the short form, and the \gloskey{description} is set to the long
+form.
+
+\begin{important}
+In order to avoid nested hyperlinks on \firstuse\ the footnote
+styles automatically implement \pkgopt[false]{hyperfirst} for the
+acronym lists.
+\end{important}
+
+\item \acrstyle{footnote-desc}, \acrstyle{footnote-sc-desc},
+\acrstyle{footnote-sm-desc}:
+
+These three styles are similar to the previous three styles, but the
+description has to be supplied in the optional argument of
+\ics{newacronym}. The \gloskey{name} key is set to the long form
+followed by the short form in parentheses and the \gloskey{sort} key
+is set to the long form. This means that the acronyms will be sorted
+according to the long form. In addition, since the \gloskey{name}
+will typically be quite wide it's best to choose a glossary style
+that can accommodate this, such as \glostyle{altlist}.
+
+\end{itemize}
+
+\begin{example}{Adapting a Predefined Acronym Style}{ex:acrstyle}
+Suppose I~want to use the \acrstyle{footnote-sc-desc} style, but
+I~want the \gloskey{name} key set to the short form followed by the
+long form in parentheses and the \gloskey{sort} key set to the short
+form. Then I need to specify the \acrstyle{footnote-sc-desc} style:
+\begin{verbatim}
+\setacronymstyle{footnote-sc-desc}
+\end{verbatim}
+and then redefine \ics{acronymsort} and \ics{acronymentry}:
+\begin{verbatim}
+\renewcommand*{\acronymsort}[2]{#1}% sort by short form
+\renewcommand*{\acronymentry}[1]{%
+ \acronymfont{\glsentryshort{#1}}\space (\glsentrylong{#1})}%
+\end{verbatim}
+(I've used \cs{space} for extra clarity, but you can just use an
+actual space instead.)
+
+Since the default Computer Modern fonts don't support bold
+smallcaps, I'm also going to redefine \ics{acronymfont} so that it
+always switches to medium weight to ensure the smallcaps setting is
+used:
+\begin{verbatim}
+\renewcommand*{\acronymfont}[1]{\textmd{\scshape #1}}
+\end{verbatim}
+This isn't necessary if you use a font that supports bold smallcaps.
+
+The sample file \samplefile{FnAcrDesc} illustrates this
+example.
+\end{example}
+
+\subsection{Defining A Custom Acronym Style}
+\label{sec:customacronym}
+
+You may find that the predefined acronyms styles that come with the
+\styfmt{glossaries} package don't suit your requirements. In this
+case you can define your own style using:
+\begin{definition}[\DescribeMacro{\newacronymstyle}]
+\cs{newacronymstyle}\marg{style name}\marg{display}\marg{definitions}
+\end{definition}
+where \meta{style name} is the name of the new style (avoid active
+characters). The second argument, \meta{display}, is equivalent to
+the mandatory argument of \ics{defglsentryfmt}. You can simply use
+\ics{glsgenacfmt} or you can customize the display using commands
+like \ics{ifglsused}, \ics{glsifplural} and \ics{glscapscase}.
+(See \sectionref{sec:glsdisplay} for further details.)
+If the style is likely to be used with a mixed glossary (that is entries in
+that glossary are defined both with \ics{newacronym} and
+\ics{newglossaryentry}) then you can test if the entry is an acronym
+and use \ics{glsgenacfmt} if it is or \ics{glsgenentryfmt} if it
+isn't. For example, the \acrstyle{long-short} style sets
+\meta{display} as
+\begin{verbatim}
+\ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+\end{verbatim}
+(You can use \ics{ifglshasshort} instead of \ics{ifglshaslong} to
+test if the entry is an acronym if you prefer.)
+
+The third argument, \meta{definitions}, can be used to redefine the
+commands that affect the display style, such as \ics{acronymfont}
+or, if \meta{display} uses \cs{glsgenacfmt}, \ics{genacrfullformat}
+and its variants.
+
+Note that \ics{setacronymstyle} redefines \ics{glsentryfull} and
+\ics{acrfullfmt} to use \ics{genacrfullformat} (and similarly for
+the plural and upper case variants). If this isn't appropriate for the
+style (as in the case of styles like \acrstyle{footnote} and
+\acrstyle{dua}) \cs{newacronymstyle} should redefine these commands
+within \meta{definitions}.
+
+
+Within \cs{newacronymstyle}'s \meta{definitions} argument you
+can also redefine
+\begin{definition}[\DescribeMacro{\GenericAcronymFields}]
+\cs{GenericAcronymFields}
+\end{definition}
+This is a list of additional fields to be set in \ics{newacronym}.
+You can use the following token registers to access the entry label,
+long form and short form: \DescribeMacro{\glslabeltok}\cs{glslabeltok},
+\DescribeMacro{\glslongtok}\cs{glslongtok} and
+\DescribeMacro{\glsshorttok}\cs{glsshorttok}. As with all \TeX\
+registers, you can access their values by preceding the register
+with \ics{the}. For example, the \acrstyle{long-short} style does:
+\begin{verbatim}
+\renewcommand*{\GenericAcronymFields}{%
+ description={\the\glslongtok}}%
+\end{verbatim}
+which sets the \gloskey{description} field to the long form of the
+acronym whereas the \acrstyle{long-short-desc} style does:
+\begin{verbatim}
+\renewcommand*{\GenericAcronymFields}{}%
+\end{verbatim}
+since the description needs to be specified by the user.
+
+It may be that you want to define a new acronym style that's based
+on an existing style. Within \meta{display} you can use
+\begin{definition}[\DescribeMacro\GlsUseAcrEntryDispStyle]
+\cs{GlsUseAcrEntryDispStyle}\marg{style name}
+\end{definition}
+to use the \meta{display} definition from the style given by
+\meta{style name}. Within \meta{definitions} you can use
+\begin{definition}[\DescribeMacro{\GlsUseAcrStyleDefs}]
+\cs{GlsUseAcrStyleDefs}\marg{style name}
+\end{definition}
+to use the \meta{definitions} from the style given by \meta{style
+name}. For example, the \acrstyle{long-sc-short} acronym style is
+based on the \acrstyle{long-short} style with minor
+modifications (remember to use \verb|##| instead of \verb|#| within
+\meta{definitions}):
+\begin{verbatim}
+\newacronymstyle{long-sc-short}%
+{% use the same display as "long-short"
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{% use the same definitions as "long-short"
+ \GlsUseAcrStyleDefs{long-short}%
+ % Minor modifications:
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+}
+\end{verbatim}
+(\DescribeMacro{\glstextup}\cs{glstextup} is used to cancel the effect
+of \ics{textsc}. This defaults to \ics{textulc}, if defined,
+otherwise \ics{textup}. For example, the plural of \textsc{svm}
+should be rendered as \textsc{svm}s rather than \textsc{svms}.)
+
+\begin{example}{Defining a Custom Acronym Style}{ex:customacrstyle}
+Suppose I want my acronym on \firstuse\ to have the
+short form in the text and the long form with the description in a
+footnote. Suppose also that I want the short form to be put in small
+caps in the main body of the document, but I want it in normal
+capitals in the list of acronyms. In my list of acronyms, I want the
+long form as the name with the short form in brackets followed by
+the description. That is, in the text I want \ics{gls} on \gls{firstuse}
+to display:
+\begin{display}
+\ics{textsc}\marg{abbrv}\cs{footnote}"{"\meta{long}: \meta{description}"}"
+\end{display}
+on subsequent use:
+\begin{display}
+\ics{textsc}\marg{abbrv}
+\end{display}
+and in the list of acronyms, each entry will be displayed in the
+form:
+\begin{display}
+\meta{long} (\meta{short}) \meta{description}
+\end{display}
+
+Let's suppose it's possible that I may have a mixed glossary. I can
+check this in the second argument of \ics{newacronymstyle} using:
+\begin{verbatim}
+\ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+\end{verbatim}
+This will use \ics{glsgenentryfmt} if the entry isn't an acronym,
+otherwise it will use \ics{glsgenacfmt}. The third argument
+(\meta{definitions}) of
+\ics{newacronymstyle} needs to redefine \ics{genacrfullformat} etc
+so that the \firstuse\ displays the short form in the text with the
+long form in a footnote followed by the description. This is done as
+follows (remember to use \verb|##| instead of \verb|#|):
+\begin{verbatim}
+ % No case change, singular first use:
+ \renewcommand*{\genacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % First letter upper case, singular first use:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % No case change, plural first use:
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % First letter upper case, plural first use:
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+\end{verbatim}
+If you think it inappropriate for the short form to be capitalised
+at the start of a sentence you can change the above to:
+\begin{verbatim}
+ % No case change, singular first use:
+ \renewcommand*{\genacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % No case change, plural first use:
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ \let\Genacrfullformat\genacrfullformat
+ \let\Genplacrfullformat\genplacrfullformat
+\end{verbatim}
+Another variation is to use \ics{Glsentrylong} and
+\ics{Glsentrylongpl} in the footnote instead of \ics{glsentrylong} and
+\ics{glsentrylongpl}.
+
+Now let's suppose that commands such as \ics{glsentryfull} and
+\ics{acrfull} shouldn't
+use a~footnote, but instead use the format: \meta{long}
+(\meta{short}).
+This means that the style needs to redefine \cs{glsentryfull},
+\ics{acrfullfmt} and their plural and upper case variants.
+
+First, the non-linking commands:
+\begin{verbatim}
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space
+ (\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space
+ (\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space
+ (\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space
+ (\acronymfont{\glsentryshortpl{##1}})%
+ }%
+\end{verbatim}
+Now for the linking commands:
+\begin{verbatim}
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ }%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ }%
+\end{verbatim}
+(This may cause problems with long hyperlinks, in which case adjust
+the definitions so that, for example, only the short form is inside
+the argument of \ics{glslink}.)
+
+The style also needs to redefine \ics{acronymsort} so that the
+acronyms are sorted according to the long form:
+\begin{verbatim}
+ \renewcommand*{\acronymsort}[2]{##2}%
+\end{verbatim}
+If you prefer them to be sorted according to the short form you can
+change the above to:
+\begin{verbatim}
+ \renewcommand*{\acronymsort}[2]{##1}%
+\end{verbatim}
+The acronym font needs to be set to \ics{textsc} and the plural
+suffix adjusted so that the \qt{s} suffix in the plural short form
+doesn't get converted to smallcaps:
+\begin{verbatim}
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+\end{verbatim}
+There are a number of ways of dealing with the format in the list of
+acronyms. The simplest way is to redefine \ics{acronymentry} to the
+long form followed by the upper case short form in parentheses:
+\begin{verbatim}
+ \renewcommand*{\acronymentry}[1]{%
+ \Glsentrylong{##1}\space
+ (\MakeTextUppercase{\glsentryshort{##1}})}%
+\end{verbatim}
+(I've used \ics{Glsentrylong} instead of \ics{glsentrylong} to
+capitalise the name in the glossary.)
+
+An alternative approach is to set \ics{acronymentry} to just the
+long form and redefine \ics{GenericAcronymFields} to set the
+\gloskey{symbol} key to the short form and use a glossary style that
+displays the symbol in parentheses after the \gloskey{name} (such as
+the \glostyle{tree} style) like this:
+\begin{verbatim}
+ \renewcommand*{\acronymentry}[1]{\Glsentrylong{##1}}%
+ \renewcommand*{\GenericAcronymFields}{%
+ symbol={\protect\MakeTextUppercase{\the\glsshorttok}}}%
+\end{verbatim}
+I'm going to use the first approach and set
+\ics{GenericAcronymFields} to do nothing:
+\begin{verbatim}
+ \renewcommand*{\GenericAcronymFields}{}%
+\end{verbatim}
+
+Finally, this style needs to switch off hyperlinks on first use to
+avoid nested links:
+\begin{verbatim}
+ \glshyperfirstfalse
+\end{verbatim}
+Putting this all together:
+\begin{verbatim}
+\newacronymstyle{custom-fn}% new style name
+{%
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space
+ (\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space
+ (\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space
+ (\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space
+ (\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ }%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ }%
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \Glsentrylong{##1}\space
+ (\MakeTextUppercase{\glsentryshort{##1}})}%
+}
+\end{verbatim}
+
+Now I need to specify that I want to use this new style:
+\begin{verbatim}
+\setacronymstyle{custom-fn}
+\end{verbatim}
+I also need to use a glossary style that suits this acronym style,
+for example \glostyle{altlist}:
+\begin{verbatim}
+\setglossarystyle{altlist}
+\end{verbatim}
+
+Once the acronym style has been set, I can define my acronyms:
+\begin{verbatim}
+\newacronym[description={set of tags for use in
+developing hypertext documents}]{html}{html}{Hyper
+Text Markup Language}
+
+\newacronym[description={language used to describe the
+layout of a document written in a markup language}]{css}
+{css}{Cascading Style Sheet}
+\end{verbatim}
+
+The sample file \samplefile{-custom-acronym} illustrates this
+example.
+\end{example}
+
+\begin{example}{Italic and Upright Abbreviations}{ex:font-abbr}
+Suppose I~want to have some abbreviations in italic and some that
+just use the surrounding font. Hard-coding this into the
+\meta{short} argument of \cs{newacronym} can cause complications.
+
+This example uses \ics{glsaddstoragekey} to add an extra field that
+can be used to store the formatting declaration (such as \cs{em}).
+\begin{verbatim}
+\glsaddstoragekey{font}{}{\entryfont}
+\end{verbatim}
+This defines a~new field/key called \texttt{font}, which defaults to
+nothing if it's not explicitly set. This also defines a command
+called \cs{entryfont} that's analogous to \cs{glsentrytext}. A~new
+style is then created to format abbreviations that access this field.
+
+There are two ways to do this. The first is to create a style that
+doesn't use \ics{glsgenacfmt} but instead provides a~modified
+version that doesn't use \cs{acronymfont}\marg{short}
+but instead uses
+\verb|{|\cs{entryfont}\verb|{\glslabel}|\meta{short}\verb|}|.
+The full format given by commands such as \cs{genacrfullformat}
+need to be similarly adjusted. For example:
+\begin{verbatim}
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+\end{verbatim}
+This will deal with commands like \ics{gls} but not commands like
+\ics{acrshort} which still use \ics{acronymfont}. Another approach
+is to redefine \cs{acronymfont} to look up the required font
+declaration. Since \cs{acronymfont} doesn't take the entry label as
+an argument, the following will only work if \cs{acronymfont} is
+used in a~context where the label is provided by \ics{glslabel}.
+This is true in \cs{gls}, \cs{acrshort} and \cs{acrfull}. The
+redefinition is now:
+\begin{verbatim}
+\renewcommand*{\acronymfont}[1]{{\entryfont{\glslabel}#1}}%
+\end{verbatim}
+So the new style can be defined as:
+\begin{verbatim}
+\newacronymstyle{long-font-short}
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ ({\entryfont{##1}\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ ({\entryfont{##1}\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymfont}[1]{{\entryfont{\glslabel}##1}}%
+ \renewcommand*{\acronymentry}[1]{{\entryfont{##1}\glsentryshort{##1}}}%
+}
+\end{verbatim}
+Remember the style needs to be set before defining the entries:
+\begin{verbatim}
+\setacronymstyle{long-font-short}
+\end{verbatim}
+
+The complete document is contained in the sample file
+\samplefile{-font-abbr}.
+\end{example}
+
+Some writers and publishing houses have started to drop full stops
+(periods) from upper case initials but may still retain them for
+lower case abbreviations, while others may still use them for both
+upper and lower case. This can cause complications. Chapter~12 of
+\emph{The \TeX{}book} discusses the spacing between words but,
+briefly, the default behaviour of \TeX\ is to assume that an upper
+case character followed by a~full stop and space is an abbreviation,
+so the space is the default inter-word space whereas a~lower case
+character followed by a~full stop and space is a word occurring at
+the end of a~sentence. In the event that this isn't true, you need
+to make a~manual adjustment using \verb*| | (back slash space) in
+place of just a~space character for an inter-word mid-sentence space
+and use \verb|\@| before the full stop to indicate the end of the
+sentence.
+
+For example:
+\begin{verbatim}
+I was awarded a B.Sc. and a Ph.D. (From the same place.)
+\end{verbatim}
+is typeset as
+\begin{display}
+I was awarded a B.Sc. and a Ph.D. (From the same place.)
+\end{display}
+The spacing is more noticeable with the typewriter font:
+\begin{verbatim}
+\ttfamily
+I was awarded a B.Sc. and a Ph.D. (From the same place.)
+\end{verbatim}
+is typeset as
+\begin{display}\ttfamily
+I was awarded a B.Sc. and a Ph.D. (From the same place.)
+\end{display}
+The lower case letter at the end of ``B.Sc.''\ is confusing \TeX\
+into thinking that the full stop after it marks the end of the
+sentence. Whereas the upper case letter at the end of ``Ph.D.'' has
+confused \TeX\ into thinking that the following full stop is just
+part of the abbreviation. These can be corrected:
+\begin{verbatim}
+I was awarded a B.Sc.\ and a Ph.D\@. (From the same place.)
+\end{verbatim}
+
+This situation is a bit problematic for \styfmt{glossaries}. The
+full stops can form part of the \meta{short} argument of
+\cs{newacronym} and the \verb*|B.Sc.\ | part can be dealt with by
+remembering to add \verb*|\ | (for example, \verb*|\gls{bsc}\ |)
+but the end of sentence case is more troublesome as you need to omit
+the sentence terminating full stop (to avoid two dots) which can
+make the source code look a little strange but you also need to
+adjust the space factor, which is usually done by inserting \cs{@}
+before the full stop.
+
+The next example shows one way of achieving this.
+(Note that the supplemental \gls{glossaries-extra} package provides a much
+simpler way of doing this, which you may prefer to use. See the
+\href{http://www.dickimaw-books.com/gallery/sample-initialisms.shtml}{initialisms
+example}.)
+
+\begin{example}{Abbreviations with Full Stops (Periods)}{ex:dotabbr}
+As from version 4.16, there's now a hook (\ics{glspostlinkhook})
+that's called at the very end of the \glslike\ and \glstextlike\
+commands. This can be redefined to check if the following character
+is a full stop. The \sty{amsgen} package (which is automatically
+loaded by \styfmt{glossaries}) provides an internal command
+called \cs{new@ifnextchar} that can be used to determine if the
+given character appears next. (For more information see the
+\sty{amsgen} documentation.)
+
+It's possible that I~may also want acronyms or contractions in my
+document, so I~need some way to differentiate between them.
+Here I'm going to use the same method as in
+example~\ref{ex:addstoragekey} where a~new field is defined
+to indicate the type of abbreviation:
+\begin{verbatim}
+\glsaddstoragekey{abbrtype}{word}{\abbrtype}
+
+\newcommand*{\newabbr}[1][]{\newacronym[abbrtype=initials,#1]}
+\end{verbatim}
+Now I just use \ics{newacronym} for the acronyms, for example,
+\begin{verbatim}
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+\end{verbatim}
+and my new command \cs{newabbr} for initials, for example,
+\begin{verbatim}
+\newabbr{eg}{e.g.}{exempli gratia}
+\newabbr{ie}{i.e.}{id est}
+\newabbr{bsc}{B.Sc.}{Bachelor of Science}
+\newabbr{ba}{B.A.}{Bachelor of Arts}
+\newabbr{agm}{A.G.M.}{annual general meeting}
+\end{verbatim}
+Within \cs{glspostlinkhook} the entry's label can be accessed using
+\ics{glslabel} and \ics{ifglsfieldeq} can be used to determine if
+the current entry has the new \texttt{abbrtype} field set to
+\qt{initials}. If it doesn't, then nothing needs to happen, but if
+it does, a~check is performed to see if the next character is a~full
+stop. If it is, this signals the end of a~sentence otherwise it's
+mid-sentence.
+
+Remember that internal commands within the document file (rather
+than in a~class or package) need to be placed between
+\ics{makeatletter} and \ics{makeatother}:
+\begin{verbatim}
+\makeatletter
+\renewcommand{\glspostlinkhook}{%
+ \ifglsfieldeq{\glslabel}{abbrtype}{initials}%
+ {\new@ifnextchar.\doendsentence\doendword}
+ {}%
+}
+\makeatother
+\end{verbatim}
+In the event that a full stop is found \cs{doendsentence} is
+performed but it will be followed by the full stop, which needs to
+be discarded. Otherwise \cs{doendword} will be done but it won't be
+followed by a full stop so there's nothing to discard. The
+definitions for these commands are:
+\begin{verbatim}
+\newcommand{\doendsentence}[1]{\spacefactor=10000{}}
+\newcommand{\doendword}{\spacefactor=1000{}}
+\end{verbatim}
+Now, I can just do \verb|\gls{bsc}| mid-sentence and
+\verb|\gls{phd}.| at the end of the sentence. The terminating full
+stop will be discarded in the latter case, but it won't be discarded
+in, say, \verb|\gls{laser}.| as that doesn't have the
+\texttt{abbrtype} field set to \qt{initials}.
+
+This also works on first use when the style is set to one of the
+\meta{long} (\meta{short}) styles but it will fail with the
+\meta{short} (\meta{long}) styles as in this case the terminating
+full stop shouldn't be discarded. Since \ics{glspostlinkhook} is
+used after the \firstuseflag\ has been unset for the entry, this
+can't be fixed by simply checking with \ics{ifglsused}. One possible
+solution to this is to redefine \ics{glslinkpostsetkeys} to check
+for the \firstuseflag\ and define a macro that can then be used in
+\ics{glspostlinkhook}.
+
+The other thing to consider is what to do with plurals. One
+possibility is to check for plural use within \cs{doendsentence}
+(using \ics{glsifplural}) and put the full stop back if the plural
+has been used.
+
+The complete document is contained in the sample file
+\samplefile{-dot-abbr}.
+\end{example}
+
+\section{Displaying the List of Acronyms}
+\label{sec:disploa}
+
+The list of acronyms is just like any other type of glossary and can
+be displayed on its own using:
+\begin{description}
+\itempar{\opt1:}
+\begin{alltt}
+\ics{printnoidxglossary}[type=\ics{acronymtype}]
+\end{alltt}
+
+\itempar{\optsand23:}
+\begin{alltt}
+\ics{printglossary}[type=\ics{acronymtype}]
+\end{alltt}
+
+(If you use the
+\pkgopt{acronym} package option you can also use
+\begin{alltt}
+\ics{printacronyms}\oarg{options}
+\end{alltt}
+as a synonym for
+\begin{alltt}
+\ics{printglossary}[type=\ics{acronymtype},\meta{options}]
+\end{alltt}
+See \sectionref{sec:pkgopts-acronym}.)
+
+\end{description}
+Alternatively the list of acronyms can be displayed with all the other
+glossaries using:
+\begin{description}
+\item[\opt1:] \ics{printnoidxglossaries}
+
+\item[\optsand23:] \ics{printglossaries}
+\end{description}
+
+However, care must be taken to choose a glossary style that's
+appropriate to your acronym style.
+Alternatively, you can define your own custom style (see
+\sectionref{sec:newglossarystyle} for further details).
+
+\section{Upgrading From the glossary Package}
+\label{sec:oldacronym}
+
+Users of the obsolete \sty{glossary} package may recall that
+the syntax used to define new acronyms has changed with the
+replacement \styfmt{glossaries} package. In addition, the old
+\sty{glossary} package created the command
+\cs{}\meta{acr-name} when defining the acronym \meta{acr-name}.
+
+In order to facilitate migrating from the old package to the new
+one, the \styfmt{glossaries} package\footnote{as from version 1.18}
+provides the command:
+\begin{definition}[\DescribeMacro{\oldacronym}]
+\cs{oldacronym}\oarg{label}\marg{abbrv}\marg{long}\marg{key-val list}
+\end{definition}
+This uses the same syntax as the \sty{glossary} package's
+method of defining acronyms. It is equivalent to:
+\begin{display}
+\ics{newacronym}\oarg{key-val list}\marg{label}\marg{abbrv}\marg{long}
+\end{display}
+In addition, \ics{oldacronym} also defines the commands
+\cs{}\meta{label}, which is equivalent to \ics{gls}\marg{label},
+and \cs{}\meta{label}\texttt{*}, which is equivalent to
+\ics{Gls}\marg{label}. If \meta{label} is omitted, \meta{abbrv}
+is used. Since commands names must consist only of alphabetical
+characters, \meta{label} must also only consist of alphabetical
+characters. Note that \cs{}\meta{label} doesn't allow you to use
+the first optional argument of \ics{gls} or \ics{Gls} --- you will
+need to explicitly use \ics{gls} or \ics{Gls} to change the
+settings.
+
+\begin{important}
+Recall that, in general, \LaTeX\ ignores spaces following command
+names consisting of alphabetical characters. This is also true for
+\cs{}\meta{label} unless you additionally load the
+\sty{xspace} package, but be aware that there are some issues with
+using \sty{xspace}.\footnotemark
+\end{important}
+\footnotetext{See David Carlisle's explanation in
+\url{http://tex.stackexchange.com/questions/86565/drawbacks-of-xspace}}
+
+The \styfmt{glossaries} package doesn't load the \sty{xspace} package
+since there are both advantages and disadvantages to using
+\ics{xspace} in \cs{}\meta{label}. If you don't use the
+\sty{xspace} package you need to explicitly force a space using
+\verb*|\ | (backslash space) however you can follow \cs{}\meta{label}
+with additional text in square brackets (the final optional
+argument to \ics{gls}). If you use the \sty{xspace} package
+you don't need to escape the spaces but you can't use
+the optional argument to insert text (you will have to explicitly
+use \ics{gls}).
+
+To illustrate this, suppose I define the acronym \qt{abc} as
+follows:
+\begin{verbatim}
+\oldacronym{abc}{example acronym}{}
+\end{verbatim}
+This will create the command \cs{abc} and its starred version
+\cs{abc*}. \Tableref{tab:xspace} illustrates the effect of
+\cs{abc} (on subsequent use) according to whether or not the
+\sty{xspace} package has been loaded. As can be seen from the
+final row in the table, the \sty{xspace} package prevents the
+optional argument from being recognised.
+
+\begin{table}[htbp]
+\caption[The effect of using xspace]{The effect of using
+\styfmt{xspace} with \cs{oldacronym}}
+\label{tab:xspace}
+\vskip\baselineskip
+\centering
+\begin{tabular}{lll}
+\bfseries Code & \bfseries With \styfmt{xspace} &
+\bfseries Without \styfmt{xspace}\\
+\verb|\abc.| & abc. & abc.\\
+\verb|\abc xyz| & abc xyz & abcxyz\\
+\verb|\abc\ xyz| & abc xyz & abc xyz\\
+\verb|\abc* xyz| & Abc xyz & Abc xyz\\
+\verb|\abc['s] xyz| & abc ['s] xyz & abc's xyz
+\end{tabular}
+\par
+\end{table}
+
+\chapter{Unsetting and Resetting Entry Flags}
+\label{sec:glsunset}
+
+When using the \glslike\ commands it is
+possible that you may want to use the value given by the
+\gloskey{first} key, even though you have already \glslink{firstuse}{used} the glossary
+entry. Conversely, you may want to use the value given by the
+\gloskey{text} key, even though you haven't used the glossary entry.
+The former can be achieved by one of the following commands:
+\begin{definition}[\DescribeMacro{\glsreset}]
+\cs{glsreset}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glslocalreset}]
+\cs{glslocalreset}\marg{label}
+\end{definition}
+while the latter can be achieved by one of the following commands:
+\begin{definition}[\DescribeMacro{\glsunset}]
+\cs{glsunset}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glslocalunset}]
+\cs{glslocalunset}\marg{label}
+\end{definition}
+You can also reset or unset all entries for a given glossary or list of
+glossaries using:
+\begin{definition}[\DescribeMacro{\glsresetall}]
+\cs{glsresetall}\oarg{glossary list}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glslocalresetall}]
+\cs{glslocalresetall}\oarg{glossary list}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glsunsetall}]
+\cs{glsunsetall}\oarg{glossary list}
+\end{definition}
+\begin{definition}[\DescribeMacro{\glslocalunsetall}]
+\cs{glslocalunsetall}\oarg{glossary list}
+\end{definition}
+where \meta{glossary list} is a comma-separated list of
+glossary labels. If omitted, all defined glossaries are assumed
+(except for the ignored ones).
+For example, to reset all entries in the main glossary and the
+list of acronyms:
+\begin{verbatim}
+\glsresetall[main,acronym]
+\end{verbatim}
+
+You can determine whether an entry's \gls{firstuseflag} is set using:
+\begin{definition}[\DescribeMacro{\ifglsused}]
+\cs{ifglsused}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+where \meta{label} is the label of the required entry. If the
+entry has been used, \meta{true part} will be done, otherwise
+\meta{false part} will be done.
+
+\begin{important}
+Be careful when using \glslike\ commands within an
+environment or command argument that gets processed multiple times
+as it can cause unwanted side-effects when the first use displayed
+text is different from subsequent use.
+\end{important}
+
+For example, the \env{frame} environment in \cls{beamer} processes
+its argument for each overlay. This means that the \firstuseflag\
+will be unset on the first overlay and subsequent overlays will use
+the non-first use form.
+
+Consider the following example:
+\begin{verbatim}
+\documentclass{beamer}
+
+\usepackage{glossaries}
+
+\newacronym{svm}{SVM}{support vector machine}
+
+\begin{document}
+
+\begin{frame}
+ \frametitle{Frame 1}
+
+ \begin{itemize}
+ \item<+-> \gls{svm}
+ \item<+-> Stuff.
+ \end{itemize}
+\end{frame}
+
+\end{document}
+\end{verbatim}
+
+On the first overlay, \verb|\gls{svm}| produces \qt{support vector
+machine (SVM)} and then unsets the \firstuseflag. When the second
+overlay is processed, \verb|\gls{svm}| now produces \qt{SVM}, which
+is unlikely to be the desired effect. I~don't know anyway around
+this and I can only offer two suggestions.
+
+Firstly, unset all acronyms at the start of the document and
+explicitly use \ics{acrfull} when you want the full version to be
+displayed:
+\begin{verbatim}
+\documentclass{beamer}
+
+\usepackage{glossaries}
+
+\newacronym{svm}{SVM}{support vector machine}
+
+\glsunsetall
+
+\begin{document}
+\begin{frame}
+ \frametitle{Frame 1}
+
+ \begin{itemize}
+ \item<+-> \acrfull{svm}
+ \item<+-> Stuff.
+ \end{itemize}
+\end{frame}
+\end{document}
+\end{verbatim}
+
+Secondly, explicitly reset each acronym on first use:
+\begin{verbatim}
+\begin{frame}
+ \frametitle{Frame 1}
+
+ \begin{itemize}
+ \item<+-> \glsreset{svm}\gls{svm}
+ \item<+-> Stuff.
+ \end{itemize}
+\end{frame}
+\end{verbatim}
+These are non-optimal, but the \cls{beamer} class is too complex for
+me to provide a programmatic solution. Other potentially problematic
+environments are some \env{tabular}-like environments (but not
+\env{tabular} itself) that process the contents in order to work out
+the column widths and then reprocess the contents to do the actual
+typesetting.
+
+The \sty{amsmath} environments, such as \env{align}, also process
+their contents multiple times, but the \styfmt{glossaries} package now
+checks for this. For \sty{tabularx}, you need to explicitly patch it
+by placing \cs{glspatchtabularx} in the preamble (or anywhere
+before the problematic use of \envfmt{tabularx}).
+
+\section{Counting the Number of Times an Entry has been Used (First Use
+Flag Unset)}
+\label{sec:enableentrycount}
+
+As from version 4.14, it's now possible to keep track of how many
+times an entry is used. That is, how many times the \firstuseflag\
+is unset. Note that the supplemental \gls{glossaries-extra} package improves
+this function and also provides per-unit counting, which isn't
+available with the \styfmt{glossaries} package.
+
+\begin{important}
+This function is disabled by default as it adds extra
+overhead to the document build time and also switches
+\ics{newglossaryentry} (and therefore \ics{newacronym}) into
+a~preamble-only command.
+\end{important}
+
+To enable this function, use
+\begin{definition}[\DescribeMacro\glsenableentrycount]
+\cs{glsenableentrycount}
+\end{definition}
+before defining your entries. This adds two extra (internal) fields
+to entries: \texttt{currcount} and \texttt{prevcount}.
+
+The \texttt{currcount} field keeps track of how many times
+\cs{glsunset} is used within the document. A~local unset (using
+\cs{glslocalunset}) performs a~local rather than global increment to
+\texttt{currcount}. Remember that not all commands use
+\cs{glsunset}. Only the \glslike\ commands do this. The reset
+commands \cs{glsreset} and \cs{glslocalreset} reset this field back
+to zero (where \cs{glslocalreset} performs a~local change).
+
+The \texttt{prevcount} field stores the final value of the
+\texttt{currcount} field \emph{from the previous run}. This value is
+read from the \texttt{.aux} file at the beginning of the
+\env{document} environment.
+
+You can access these fields using
+\begin{definition}[\DescribeMacro\glsentrycurrcount]
+\cs{glsentrycurrcount}\marg{label}
+\end{definition}
+for the \texttt{currcount} field, and
+\begin{definition}[\DescribeMacro\glsentryprevcount]
+\cs{glsentryprevcount}\marg{label}
+\end{definition}
+for the \texttt{prevcount} field. \textbf{These commands are
+only defined if you have used \cs{glsenableentrycount}.}
+
+For example:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{glossaries}
+\makeglossaries
+
+\glsenableentrycount
+
+\newglossaryentry{apple}{name=apple,description={a fruit}}
+
+\begin{document}
+Total usage on previous run: \glsentryprevcount{apple}.
+
+\gls{apple}. \gls{apple}. \glsadd{apple}\glsentrytext{apple}.
+\glslink{apple}{apple}. \glsdisp{apple}{apple}. \Gls{apple}.
+
+Number of times apple has been used: \glsentrycurrcount{apple}.
+\end{document}
+\end{verbatim}
+On the first \LaTeX\ run, \verb|\glsentryprevcount{apple}|
+produces~0. At the end of the document,
+\verb|\glsentrycurrcount{apple}| produces~4. This is because
+the only commands that have incremented the entry count are those
+that use \cs{glsunset}. That is: \cs{gls}, \cs{glsdisp} and
+\cs{Gls}. The other commands used in the above example, \cs{glsadd},
+\cs{glsentrytext} and \cs{glslink}, don't use \cs{glsunset} so they
+don't increment the entry count. On the \emph{next} \LaTeX\ run,
+\verb|\glsentryprevcount{apple}| now produces~4 as that was the
+value of the \texttt{currcount} field for the \texttt{apple} entry
+at the end of the document on the previous run.
+
+When you enable the entry count using \cs{glsenableentrycount}, you
+also enable the following commands:
+\begin{definition}[\DescribeMacro\cgls]
+\cs{cgls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(no case-change, singular)
+\begin{definition}[\DescribeMacro\cglspl]
+\cs{cglspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(no case-change, plural)
+\begin{definition}[\DescribeMacro\cGls]
+\cs{cGls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(first letter uppercase, singular), and
+\begin{definition}[\DescribeMacro\cGlspl]
+\cs{cGlspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(first letter uppercase, plural).
+These all have plus and starred variants like the analogous
+\cs{gls}, \cs{glspl}, \cs{Gls} and \cs{Glspl} commands.
+
+If you don't use \cs{glsenableentrycount}, these commands behave
+like \cs{gls}, \cs{glspl}, \cs{Gls} and \cs{Glspl},
+respectively, only there will be a warning that you haven't enabled
+entry counting. If you have enabled entry counting with
+\cs{glsenableentrycount} then these commands test if
+\cs{glsentryprevcount}\marg{label} equals~1. If it doesn't then the
+analogous \cs{gls} etc will be used. If it does, then the first optional
+argument will be ignored and
+\begin{alltt}
+\meta{cs format}\marg{label}\marg{insert}\cs{glsunset}\marg{label}
+\end{alltt}
+will be performed, where \meta{cs format} is a command that takes
+two arguments. The command used depends whether you have used
+\cs{cgls}, \cs{cglspl}, \cs{cGls} or \cs{cGlspl}.
+
+\begin{definition}[\DescribeMacro\cglsformat]
+\cs{cglsformat}\marg{label}\marg{insert}
+\end{definition}
+This command is used by \cs{cgls} and defaults to
+\begin{alltt}
+\cs{glsentrylong}\marg{label}\meta{insert}
+\end{alltt}
+if the entry given by
+\meta{label} has a~long form or
+\begin{alltt}
+\cs{glsentryfirst}\marg{label}\meta{insert}
+\end{alltt}
+otherwise.
+
+\begin{definition}[\DescribeMacro\cglsplformat]
+\cs{cglsplformat}\marg{label}\marg{insert}
+\end{definition}
+This command is used by \cs{cglspl} and defaults to
+\begin{alltt}
+\cs{glsentrylongpl}\marg{label}\meta{insert}
+\end{alltt}
+if the entry given by
+\meta{label} has a~long form or
+\begin{alltt}
+\cs{glsentryfirstplural}\marg{label}\meta{insert}
+\end{alltt}
+otherwise.
+
+\begin{definition}[\DescribeMacro\cGlsformat]
+\cs{cGlsformat}\marg{label}\marg{insert}
+\end{definition}
+This command is used by \cs{cGls} and defaults to
+\begin{alltt}
+\cs{Glsentrylong}\marg{label}\meta{insert}
+\end{alltt}
+if the entry given by \meta{label} has a~long form or
+\begin{alltt}
+\cs{Glsentryfirst}\marg{label}\meta{insert}
+\end{alltt}
+otherwise.
+
+\begin{definition}[\DescribeMacro\cGlsplformat]
+\cs{cGlsplformat}\marg{label}\marg{insert}
+\end{definition}
+This command is used by \cs{cGlspl} and defaults to
+\begin{alltt}
+\cs{Glsentrylongpl}\marg{label}\meta{insert}
+\end{alltt}
+if the entry given by \meta{label} has a~long form or
+\begin{alltt}
+\cs{Glsentryfirstplural}\marg{label}\meta{insert}
+\end{alltt}
+otherwise.
+
+This means that if the previous count for the given entry was~1, the
+entry won't be hyperlinked with the \cs{cgls}-like commands and they
+won't add a~line to the external glossary file. If you haven't used
+any of the other commands that add information to glossary file
+(such as \cs{glsadd} or the \glstextlike\ commands) then the entry
+won't appear in the glossary.
+
+Remember that since these commands use \cs{glsentryprevcount} you
+need to run \LaTeX\ twice to ensure they work correctly. The
+document build order is now (at least): \texttt{(pdf)latex},
+\texttt{(pdf)latex}, \texttt{makeglossaries}, \texttt{(pdf)latex}.
+
+\begin{example}{Don't index entries that are only used once}{sec:entrycount}
+In this example, the abbreviations that have only been used once (on the previous run)
+only have their long form shown with \cs{cgls}.
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[acronym]{glossaries}
+\makeglossaries
+
+\glsenableentrycount
+
+\setacronymstyle{long-short}
+
+\newacronym{html}{HTML}{hypertext markup language}
+\newacronym{css}{CSS}{cascading style sheets}
+\newacronym{xml}{XML}{extensible markup language}
+\newacronym{sql}{SQL}{structured query language}
+\newacronym{rdbms}{RDBMS}{relational database management system}
+\newacronym{rdsms}{RDSMS}{relational data stream management system}
+
+\begin{document}
+These entries are only used once: \cgls{sql}, \cgls{rdbms},
+\cgls{xml}. These entries are used multiple times:
+\cgls{html}, \cgls{html}, \cgls{css}, \cgls{css}, \cgls{css},
+\cgls{rdsms}, \cgls{rdsms}.
+
+\printglossaries
+\end{document}
+\end{verbatim}
+After a complete document build (\texttt{latex}, \texttt{latex},
+\texttt{makeglossaries}, \texttt{latex}) the list of abbrevaitions only
+includes the entries HTML, CSS and RDSMS. The entries SQL, RDBMS and
+XML
+only have their long forms displayed and don't have a~hyperlink.
+\end{example}
+
+Remember that if you don't like typing \cs{cgls} you can create a
+synonym. For example
+\begin{verbatim}
+\let\ac\cgls
+\end{verbatim}
+
+\chapter{Glossary Styles}
+\label{sec:styles}
+
+Glossaries vary from lists that simply contain a symbol with a terse
+description to lists of terms or phrases with lengthy descriptions.
+Some glossaries may have terms with associated symbols. Some may
+have hierarchical entries. There is therefore no single style that
+fits every type of glossary. The \styfmt{glossaries} package comes
+with a number of pre-defined glossary styles, described in
+\sectionref{sec:predefinedstyles}. You can choose one of these that
+best suits your type of glossary or, if none of them suit your
+document, you can defined your own style (see
+\sectionref{sec:newglossarystyle}). There are some examples
+of glossary styles available at
+\url{http://www.dickimaw-books.com/gallery/#glossaries}.
+
+The glossary style can be set using the \gloskey[printglossary]{style} key in the optional
+argument to \ics{printnoidxglossary} (\opt1) or \ics{printglossary}
+(\optsand23) or using the command:
+\begin{definition}[\DescribeMacro{\setglossarystyle}]
+\cs{setglossarystyle}\marg{style-name}
+\end{definition}
+(before the glossary is displayed).
+
+Some of the predefined glossary styles may also be set using the \pkgopt{style}
+package option, it depends if the package in which they are defined
+is automatically loaded by the \styfmt{glossaries} package.
+
+You can use the lorum ipsum dummy entries provided in the
+accompanying
+\texttt{example-glossaries-*.tex} files (described in
+\sectionref{sec:lipsum}) to test the different styles.
+
+\section{Predefined Styles}
+\label{sec:predefinedstyles}
+
+The predefined styles can
+accommodate numbered level~0 (main) and level~1 entries. See the
+package options \pkgopt{entrycounter}, \pkgopt{counterwithin} and
+\pkgopt{subentrycounter} described in
+\sectionref{sec:pkgopts-printglos}. There is a summary
+of available styles in \tableref{tab:styles}.
+You can view samples of all the predefined styles at
+\url{http://www.dickimaw-books.com/gallery/glossaries-styles/}.
+Note that \gls{glossaries-extra} provides additional styles
+in the supplementary packages \sty{glossary-bookindex} and
+\sty{glossary-longnoloc}. See the \gls{glossaries-extra} manual for
+further details.
+
+\begin{important}
+Note that the group styles (such as \glostyle{listgroup}) will
+have unexpected results if used with the \pkgopt[def]{sort}
+or \pkgopt[use]{sort} options. If you don't sort your entries
+alphabetically, it's best to set the \pkgopt{nogroupskip}
+package option to prevent odd vertical gaps appearing.
+\end{important}
+
+The group title is obtained using \cs{glsgetgrouptitle}\marg{label},
+which is described in \sectionref{sec:newglossarystyle}.
+
+\begin{table}[htbp]
+\caption[Glossary Styles]{Glossary Styles. An asterisk in the style
+name indicates anything that matches that doesn't match any
+previously listed style (e.g.\ \texttt{long3col*}
+matches \glostyle{long3col}, \glostyle{long3colheader},
+\glostyle{long3colborder} and \glostyle{long3colheaderborder}).
+A maximum level of 0 indicates a flat glossary (sub-entries
+are displayed in the same way as main entries). Where the maximum
+level is given as --- there is no limit, but note that
+\gls{makeindex} (\opt2) imposes a limit of 2 sub-levels. If the
+homograph column is checked, then the name is not displayed for
+sub-entries. If the symbol column is checked, then the symbol will
+be displayed.}
+\label{tab:styles}
+\vskip\baselineskip
+\centering
+\begin{tabular}{lccc}
+\bfseries Style & \bfseries Maximum Level &
+\bfseries Homograph & \bfseries Symbol\\
+\ttfamily listdotted & 0 & & \\
+\ttfamily sublistdotted & 1 & & \\
+\ttfamily list* & 1 & \tick & \\
+\ttfamily altlist* & 1 & \tick & \\
+\ttfamily long*3col* & 1 & \tick & \\
+\ttfamily long4col* & 1 & \tick & \tick \\
+\ttfamily altlong*4col* & 1 & \tick & \tick \\
+\ttfamily long* & 1 & \tick & \\
+\ttfamily super*3col* & 1 & \tick & \\
+\ttfamily super4col* & 1 & \tick & \tick \\
+\ttfamily altsuper*4col* & 1 & \tick & \tick \\
+\ttfamily super* & 1 & \tick & \\
+\ttfamily *index* & 2 & & \tick\\
+\ttfamily treenoname* & --- & \tick & \tick\\
+\ttfamily *alttree* & --- & & \tick\\
+\ttfamily *tree* & --- & & \tick\\
+\ttfamily inline & 1 & \tick &
+\end{tabular}
+\par
+\end{table}
+
+The tabular-like styles that allow multi-line descriptions and page
+lists use the length \DescribeMacro{\glsdescwidth}\cs{glsdescwidth}
+to set the width of the description column and the length
+\DescribeMacro{\glspagelistwidth}\cs{glspagelistwidth} to set the
+width of the page list column.\footnote{These lengths will not be
+available if you use both the \pkgopt{nolong} and \pkgopt{nosuper}
+package options or if you use the \pkgopt{nostyles} package option
+unless you explicitly load the relevant package.}
+These will need to be changed using \cs{setlength} if the glossary
+is too wide. Note that the \glostyle{long4col} and
+\glostyle{super4col} styles (and their header and border variations)
+don't use these lengths as they are designed for single line
+entries. Instead you should use the analogous \glostyle{altlong4col}
+and \glostyle{altsuper4col} styles. If you want to
+explicitly create a line-break within a multi-line description in
+a tabular-like style it's better to use \ics{newline} instead of
+\verb|\\|.
+
+\begin{important}
+Remember that a cell within a tabular-like environment can't
+be broken across a page, so even if a tabular-like style, such as
+\glostyle{long}, allows multilined descriptions, you'll probably encounter
+page-breaking problems if you have entries with long descriptions.
+You may want to consider using the \glostyle{alttree} style instead.
+\end{important}
+
+Note that if you use the \gloskey[printglossary]{style} key in the
+optional argument to \ics{printnoidxglossary} (\opt1) or
+\ics{printglossary} (\optsand23), it will override any
+previous style settings for the given glossary, so if, for example,
+you do
+\begin{verbatim}
+\renewcommand*{\glsgroupskip}{}
+\printglossary[style=long]
+\end{verbatim}
+then the new definition of \ics{glsgroupskip} will not have an affect
+for this glossary, as \cs{glsgroupskip} is redefined by
+\verb|style=long|. Likewise, \ics{setglossarystyle} will also
+override any previous style definitions, so, again
+\begin{verbatim}
+\renewcommand*{\glsgroupskip}{}
+\setglossarystyle{long}
+\end{verbatim}
+will reset \cs{glsgroupskip} back to its default definition for the
+named glossary style (\glostyle{long} in this case). If you want to
+modify the styles, either use \ics{newglossarystyle} (described
+in the next section) or make the modifications after
+\ics{setglossarystyle}, e.g.:
+\begin{verbatim}
+\setglossarystyle{long}
+\renewcommand*{\glsgroupskip}{}
+\end{verbatim}
+As from version 3.03, you can now use the package option
+\pkgopt{nogroupskip} to suppress the gap between groups for the
+default styles instead of redefining \cs{glsgroupskip}.
+
+All the styles except for the three- and four-column styles and the
+\glostyle{listdotted} style use the command
+\begin{definition}[\DescribeMacro{\glspostdescription}]
+\cs{glspostdescription}
+\end{definition}
+after the description. This simply displays a full stop by default.
+To eliminate this full stop (or replace it with something else, say,
+a comma) you will need to redefine \cs{glspostdescription} before
+the glossary is displayed. Alternatively, you can suppress it for a
+given entry by placing \ics{nopostdesc} in the entry's description.
+Note that \ics{longnewglossaryentry} puts \cs{nopostdesc} at the end
+of the description. The \sty{glossaries-extra} package provides a
+starred version that doesn't.
+
+As from version 3.03 you can now use the package option
+\pkgopt{nopostdot} to suppress this full stop. This is the better
+option if you want to use the \sty{glossaries-extra} package.
+The \sty{glossaries-extra-stylemods} package provides some
+adjustments some of to the predefined styles listed here, allowing
+for greater flexibility. See the \sty{glossaries-extra}
+documentation for further details.
+
+\subsection{List Styles}
+\label{sec:liststyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-list}. Since they all use the \env{description}
+environment, they are governed by the same parameters as that
+environment. These styles all ignore the entry's symbol. Note that
+these styles will automatically be available unless you use the
+\pkgopt{nolist} or \pkgopt{nostyles} package options.
+
+\begin{important}
+Note that, except for the \glostyle{listdotted} style, these
+list styles are incompatible with \sty{classicthesis}. They
+may also be incompatible with other classes or packages that
+modify the \env{description} environment.
+\end{important}
+
+\begin{description}
+\item[list] The \glostyle{list} style uses the \env{description}
+environment. The entry name is placed in the optional argument of
+the \ics{item} command (so it will usually appear in bold by default). The
+description follows, and then the associated \gls{numberlist} for
+that entry. The symbol is ignored. If the entry has child entries,
+the description and number list follows (but not the name) for each
+child entry. Groups are separated using \ics{indexspace}.
+
+The closest matching non-list style is the \glostyle{index} style.
+
+\item[listgroup] The \glostyle{listgroup} style is like
+\glostyle{list} but the glossary groups have headings
+obtained using \cs{glsgetgrouptitle}\marg{label},
+which is described in \sectionref{sec:newglossarystyle}.
+
+\item[listhypergroup] The \glostyle{listhypergroup} style is like
+\glostyle{listgroup} but has a navigation line at the start of the
+glossary with links to each group that is present in the glossary.
+This requires an additional run through \LaTeX\ to ensure the group
+information is up to date. In the navigation line, each group is
+separated by
+\begin{definition}[\DescribeMacro{\glshypernavsep}]
+\cs{glshypernavsep}
+\end{definition}
+which defaults to a vertical bar with a space on either side. For
+example, to simply have a space separating each group, do:
+\begin{verbatim}
+\renewcommand*{\glshypernavsep}{\space}
+\end{verbatim}
+
+Note that the hyper-navigation line is now (as from version 1.14)
+set inside the optional argument to \ics{item} instead of after it
+to prevent a spurious space at the start. This can cause a problem
+if the navigation line is too long.
+As from v4.22, if you need to adjust this, you can redefine
+\begin{definition}[\DescribeMacro\glslistnavigationitem]
+\cs{glslistnavigationitem}\marg{navigation line}
+\end{definition}
+The default definition is \cs{item}\oarg{navigation line} but may
+be redefined independently of setting the style. For example:
+\begin{verbatim}
+\renewcommand*{\glslistnavigationitem}[1]{\item \textbf{#1}}
+\end{verbatim}
+
+You may prefer to use the tree-like styles, such as
+\glostyle{treehypergroup} instead.
+
+\item[altlist] The \glostyle{altlist} style is like \glostyle{list}
+but the description starts on the line following the name. (As
+with the \glostyle{list} style, the symbol is ignored.) Each child
+entry starts a new line, but as with the \glostyle{list} style,
+the name associated with each child entry is ignored.
+
+The closest matching non-list style is the \glostyle{index}
+style with the following adjustment:
+\begin{verbatim}
+\renewcommand{\glstreepredesc}{%
+ \glstreeitem\parindent\hangindent}
+\end{verbatim}
+
+
+\item[altlistgroup] The \glostyle{altlistgroup} style is like
+\glostyle{altlist} but the glossary groups have headings.
+
+\item[altlisthypergroup] The \glostyle{altlisthypergroup} style is like
+\glostyle{altlistgroup} but has a set of links to the glossary
+groups. The navigation line is the same as that for
+\glostyle{listhypergroup}, described above.
+
+\item[listdotted] This style uses the \env{description}
+environment.\footnote{This style was supplied by Axel~Menzel.} Each
+entry starts with \verb|\item[]|, followed by the name followed by a
+dotted line, followed by the description. Note that this style
+ignores both the \gls{numberlist} and the symbol. The length
+\begin{definition}[\DescribeMacro{\glslistdottedwidth}]
+\cs{glslistdottedwidth}
+\end{definition}
+governs where the description should start. This is a flat style, so
+child entries are formatted in the same way as the parent entries.
+
+A non-list alternative is to use the \glostyle{index} style
+with
+\begin{verbatim}
+\renewcommand{\glstreepredesc}{\dotfill}
+\renewcommand{\glstreechildpredesc}{\dotfill}
+\end{verbatim}
+Note that this doesn't use \cs{glslistdottedwidth} and causes
+the description to be flush-right and will display the
+symbol, if provided. (It also doesn't suppress
+the \gls*{numberlist}, but that can be achieved with the
+\pkgopt{nonumberlist} option.)
+
+\item[sublistdotted] This is a variation on the \glostyle{listdotted}
+style designed for hierarchical glossaries. The main entries
+have just the name displayed. The sub entries are displayed in
+the same manner as \glostyle{listdotted}. Unlike the
+\glostyle{listdotted} style, this style is incompatible with
+\sty{classicthesis}.
+\end{description}
+
+
+\subsection{Longtable Styles}
+\label{sec:longstyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-long}. Since they all use the \env{longtable}
+environment, they are governed by the same parameters as that
+environment. Note that these styles will automatically be available
+unless you use the \pkgopt{nolong} or \pkgopt{nostyles} package
+options. These styles fully justify the description and page list
+columns. If you want ragged right formatting instead, use the
+analogous styles described in \sectionref{sec:longraggedstyles}.
+If you want to incorporate rules from the \sty{booktabs} package,
+try the styles described in \sectionref{sec:longbooktabsstyles}.
+
+\begin{description}
+\item[long] The \glostyle{long} style uses the \env{longtable}
+environment (defined by the \sty{longtable} package). It has two
+columns: the first column contains the entry's name and the second
+column contains the description followed by the \gls{numberlist}.
+The entry's symbol is ignored.
+Sub groups are separated with a blank row. The width of the
+first column is governed by the widest entry in that column. The
+width of the second column is governed by the length
+\ics{glsdescwidth}. Child entries have a similar format to the
+parent entries except that their name is suppressed.
+
+\item[longborder] The \glostyle{longborder} style is like
+\glostyle{long} but has horizontal and vertical lines around it.
+
+\item[longheader] The \glostyle{longheader} style is like
+\glostyle{long} but has a header row.
+
+\item[longheaderborder] The \glostyle{longheaderborder} style is
+like \glostyle{longheader} but has horizontal and vertical lines
+around it.
+
+\item[long3col] The \glostyle{long3col} style is like
+\glostyle{long} but has three columns. The first column contains
+the entry's name, the second column contains the description
+and the third column contains the \gls{numberlist}.
+The entry's symbol is ignored. The width of the
+first column is governed by the widest entry in that column, the
+width of the second column is governed by the length
+\ics{glsdescwidth}, and the width of the third column is governed by the
+length \ics{glspagelistwidth}.
+
+\item[long3colborder] The \glostyle{long3colborder} style is like
+the \glostyle{long3col} style but has horizontal and vertical
+lines around it.
+
+\item[long3colheader] The \glostyle{long3colheader} style is like
+\glostyle{long3col} but has a header row.
+
+\item[long3colheaderborder] The \glostyle{long3colheaderborder} style is
+like \glostyle{long3colheader} but has horizontal and vertical lines
+around it.
+
+\item[long4col] The \glostyle{long4col} style is like
+\glostyle{long3col} but has an additional column in which the
+entry's associated symbol appears. This style is used for brief
+single line descriptions. The column widths are governed by the
+widest entry in the given column. Use \glostyle{altlong4col} for
+multi-line descriptions.
+
+\item[long4colborder] The \glostyle{long4colborder} style is like
+the \glostyle{long4col} style but has horizontal and vertical
+lines around it.
+
+\item[long4colheader] The \glostyle{long4colheader} style is like
+\glostyle{long4col} but has a header row.
+
+\item[long4colheaderborder] The \glostyle{long4colheaderborder} style is
+like \glostyle{long4colheader} but has horizontal and vertical lines
+around it.
+
+\item[altlong4col] The \glostyle{altlong4col} style is like
+\glostyle{long4col} but allows multi-line descriptions and page
+lists. The width of the description column is governed by the
+length \ics{glsdescwidth} and the width of the page list column is
+governed by the length \ics{glspagelistwidth}. The widths of the
+name and symbol columns are governed by the widest entry in the
+given column.
+
+\item[altlong4colborder] The \glostyle{altlong4colborder} style is like
+the \glostyle{long4colborder} but allows multi-line descriptions and
+page lists.
+
+\item[altlong4colheader] The \glostyle{altlong4colheader} style is like
+\glostyle{long4colheader} but allows multi-line descriptions and
+page lists.
+
+\item[altlong4colheaderborder] The \glostyle{altlong4colheaderborder}
+style is like \glostyle{long4colheaderborder} but allows multi-line
+descriptions and page lists.
+\end{description}
+
+
+\subsection{Longtable Styles (Ragged Right)}
+\label{sec:longraggedstyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-longragged}. These styles are analogous to those
+defined in \sty{glossary-long} but the multiline columns are left
+justified instead of fully justified. Since these styles all use the
+\env{longtable} environment, they are governed by the same
+parameters as that environment. The \sty{glossary-longragged}
+package additionally requires the \sty{array} package. Note that
+these styles will only be available if you explicitly load
+\sty{glossary-longragged}:
+\begin{verbatim}
+\usepackage{glossaries}
+\usepackage{glossary-longragged}
+\end{verbatim}
+Note that you can't set these styles using the \pkgopt{style}
+package option since the styles aren't defined until after
+the \styfmt{glossaries} package has been loaded.
+If you want to incorporate rules from the \sty{booktabs} package,
+try the styles described in \sectionref{sec:longbooktabsstyles}.
+
+\begin{description}
+\item[longragged] The \glostyle{longragged} style has two
+columns: the first column contains the entry's name and the second
+column contains the (left-justified) description followed by the
+\gls{numberlist}. The entry's symbol is ignored.
+Sub groups are separated with a blank row. The width of the
+first column is governed by the widest entry in that column. The
+width of the second column is governed by the length
+\ics{glsdescwidth}. Child entries have a similar format to the
+parent entries except that their name is suppressed.
+
+\item[longraggedborder] The \glostyle{longraggedborder} style is like
+\glostyle{longragged} but has horizontal and vertical lines around it.
+
+\item[longraggedheader] The \glostyle{longraggedheader} style is like
+\glostyle{longragged} but has a header row.
+
+\item[longraggedheaderborder] The \glostyle{longraggedheaderborder}
+style is like \glostyle{longraggedheader} but has horizontal and
+vertical lines around it.
+
+\item[longragged3col] The \glostyle{longragged3col} style is like
+\glostyle{longragged} but has three columns. The first column
+contains the entry's name, the second column contains the (left
+justified) description and the third column contains the (left
+justified) \gls{numberlist}. The entry's symbol is ignored. The
+width of the first column is governed by the widest entry in that
+column, the width of the second column is governed by the length
+\ics{glsdescwidth}, and the width of the third column is governed by
+the length \ics{glspagelistwidth}.
+
+\item[longragged3colborder] The \glostyle{longragged3colborder}
+style is like the \glostyle{longragged3col} style but has horizontal
+and vertical lines around it.
+
+\item[longragged3colheader] The \glostyle{longragged3colheader} style is like
+\glostyle{longragged3col} but has a header row.
+
+\item[longragged3colheaderborder] The \glostyle{longragged3colheaderborder} style is
+like \glostyle{longragged3colheader} but has horizontal and vertical lines
+around it.
+
+\item[altlongragged4col] The \glostyle{altlongragged4col} style is
+like \glostyle{longragged3col} but has an additional column in which
+the entry's associated symbol appears. The width of the description
+column is governed by the length \ics{glsdescwidth} and the width of
+the page list column is governed by the length
+\ics{glspagelistwidth}. The widths of the name and symbol columns
+are governed by the widest entry in the given column.
+
+\item[altlongragged4colborder] The
+\glostyle{altlongragged4colborder} style is like the
+\glostyle{altlongragged4col} but has horizontal and vertical lines
+around it.
+
+\item[altlongragged4colheader] The
+\glostyle{altlongragged4colheader} style is like
+\glostyle{altlongragged4col} but has a header row.
+
+\item[altlongragged4colheaderborder] The
+\glostyle{altlongragged4colheaderborder} style is like
+\glostyle{altlongragged4colheader} but has horizontal and vertical
+lines around it.
+
+\end{description}
+
+\subsection{Longtable Styles (\styfmt{booktabs})}
+\label{sec:longbooktabsstyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-longbooktabs}.
+
+Since these styles all use the
+\env{longtable} environment, they are governed by the same
+parameters as that environment. The \sty{glossary-longbooktabs}
+package automatically loads the \sty{glossary-long}
+(\sectionref{sec:longstyles})
+and \sty{glossary-longragged} (\sectionref{sec:longraggedstyles}) packages. Note that
+these styles will only be available if you explicitly load
+\sty{glossary-longbooktabs}:
+\begin{verbatim}
+\usepackage{glossaries}
+\usepackage{glossary-longbooktabs}
+\end{verbatim}
+Note that you can't set these styles using the \pkgopt{style}
+package option since the styles aren't defined until after
+the \styfmt{glossaries} package has been loaded.
+
+These styles are similar to the
+\qt{header} styles in the \sty{glossary-long} and
+\sty{glossary-ragged} packages, but they add the rules
+provided by the \sty{booktabs} package, \ics{toprule}, \ics{midrule} and
+\ics{bottomrule}. Additionally these styles patch the
+\env{longtable} environment to check for instances of the group
+skip occurring at a page break. If you don't want this patch to
+affect any other use of \env{longtable} in your document, you can
+scope the effect by only setting the style through the
+\gloskey[printglossary]{style} key in the optional argument of
+\cs{printglossary}. (The \pkgopt{nogroupskip} package option
+is checked by these styles.)
+
+Alternatively, you can restore the original \env{longtable}
+behaviour with:
+\begin{definition}[\DescribeMacro\glsrestoreLToutput]
+\cs{glsrestoreLToutput}
+\end{definition}
+For more information about the patch, see the documented code
+(\texttt{glossaries-code.pdf}).
+
+\begin{description}
+\item[\glostyle{long-booktabs}] This style is similar to
+the \glostyle{longheader} style but adds rules above and below the
+header (\cs{toprule} and \cs{midrule}) and inserts a rule at the
+bottom of the table (\cs{bottomrule}).
+
+\item[\glostyle{long3col-booktabs}] This style is similar to
+the \glostyle{long3colheader} style but adds rules as per
+\glostyle{long-booktabs}.
+
+\item[\glostyle{long4col-booktabs}] This style is similar to
+the \glostyle{long4colheader} style but adds rules as above.
+
+\item[\glostyle{altlong4col-booktabs}] This style is similar to
+the \glostyle{altlong4colheader} style but adds rules as above.
+
+\item[\glostyle{longragged-booktabs}] This style is similar to
+the \glostyle{longraggedheader} style but adds rules as above.
+
+\item[\glostyle{longragged3col-booktabs}] This style is similar to
+the \glostyle{longragged3colheader} style but adds rules as above.
+
+\item[\glostyle{altlongragged4col-booktabs}] This style is similar to
+the \glostyle{altlongragged4colheader} style but adds rules as above.
+
+\end{description}
+
+\subsection{Supertabular Styles}
+\label{sec:superstyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-super}. Since they all use the \env{supertabular}
+environment, they are governed by the same parameters as that
+environment. Note that these styles will automatically be available
+unless you use the \pkgopt{nosuper} or \pkgopt{nostyles} package
+options. In general, the \env{longtable} environment is better,
+but there are some circumstances where it is better to use
+\env{supertabular}.\footnote{e.g.\ with the \sty{flowfram}
+package.} These styles fully justify the description and page list
+columns. If you want ragged right formatting instead, use the
+analogous styles described in \sectionref{sec:superraggedstyles}.
+
+\begin{description}
+\item[super] The \glostyle{super} style uses the \env{supertabular}
+environment (defined by the \sty{supertabular} package). It has two
+columns: the first column contains the entry's name and the second
+column contains the description followed by the \gls{numberlist}.
+The entry's symbol is ignored.
+Sub groups are separated with a blank row. The width of the
+first column is governed by the widest entry in that column. The
+width of the second column is governed by the length
+\ics{glsdescwidth}. Child entries have a similar format to the
+parent entries except that their name is suppressed.
+
+\item[superborder] The \glostyle{superborder} style is like
+\glostyle{super} but has horizontal and vertical lines around it.
+
+\item[superheader] The \glostyle{superheader} style is like
+\glostyle{super} but has a header row.
+
+\item[superheaderborder] The \glostyle{superheaderborder} style is
+like \glostyle{superheader} but has horizontal and vertical lines
+around it.
+
+\item[super3col] The \glostyle{super3col} style is like
+\glostyle{super} but has three columns. The first column contains
+the entry's name, the second column contains the description
+and the third column contains the \gls{numberlist}. The
+entry's symbol is ignored. The width of the
+first column is governed by the widest entry in that column. The
+width of the second column is governed by the length
+\ics{glsdescwidth}. The width of the third column is governed by the
+length \ics{glspagelistwidth}.
+
+\item[super3colborder] The \glostyle{super3colborder} style is like
+the \glostyle{super3col} style but has horizontal and vertical
+lines around it.
+
+\item[super3colheader] The \glostyle{super3colheader} style is like
+\glostyle{super3col} but has a header row.
+
+\item[super3colheaderborder] The \glostyle{super3colheaderborder} style
+is like the \glostyle{super3colheader} style but has horizontal and vertical
+lines around it.
+
+\item[super4col] The \glostyle{super4col} style is like
+\glostyle{super3col} but has an additional column in which the
+entry's associated symbol appears. This style is designed for
+entries with brief single line descriptions. The column widths are governed by the
+widest entry in the given column. Use \glostyle{altsuper4col}
+for multi-line descriptions.
+
+\item[super4colborder] The \glostyle{super4colborder} style is like
+the \glostyle{super4col} style but has horizontal and vertical
+lines around it.
+
+\item[super4colheader] The \glostyle{super4colheader} style is like
+\glostyle{super4col} but has a header row.
+
+\item[super4colheaderborder] The \glostyle{super4colheaderborder} style
+is like the \glostyle{super4colheader} style but has horizontal and vertical
+lines around it.
+
+\item[altsuper4col] The \glostyle{altsuper4col} style is like
+\glostyle{super4col} but allows multi-line descriptions and page
+lists.
+The width of the description column is governed by the length
+\ics{glsdescwidth} and the width of the page list column is
+governed by the length \ics{glspagelistwidth}. The width of the name
+and symbol columns is governed by the widest entry in the
+given column.
+
+\item[altsuper4colborder] The \glostyle{altsuper4colborder} style is like
+the \glostyle{super4colborder} style but allows multi-line descriptions
+and page lists.
+
+\item[altsuper4colheader] The \glostyle{altsuper4colheader} style is like
+\glostyle{super4colheader} but allows multi-line descriptions and
+page lists.
+
+\item[altsuper4colheaderborder] The \glostyle{altsuper4colheaderborder}
+style is like \glostyle{super4colheaderborder} but allows multi-line
+descriptions and page lists.
+\end{description}
+
+
+\subsection{Supertabular Styles (Ragged Right)}
+\label{sec:superraggedstyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-superragged}. These styles are analogous to those
+defined in \sty{glossary-super} but the multiline columns are left
+justified instead of fully justified. Since these styles all use the
+\env{supertabular} environment, they are governed by the same
+parameters as that environment. The \sty{glossary-superragged}
+package additionally requires the \sty{array} package. Note that
+these styles will only be available if you explicitly load
+\sty{glossary-superragged}:
+\begin{verbatim}
+\usepackage{glossaries}
+\usepackage{glossary-superragged}
+\end{verbatim}
+Note that you can't set these styles using the \pkgopt{style}
+package option since the styles aren't defined until after
+the \styfmt{glossaries} package has been loaded.
+
+\begin{description}
+\item[superragged] The \glostyle{superragged} style uses the
+\env{supertabular} environment (defined by the
+\sty{supertabular} package). It has two columns: the first column
+contains the entry's name and the second column contains the (left
+justified) description followed by the \gls{numberlist}. The
+entry's symbol is ignored. Sub groups are separated with a blank
+row. The width of the first column is governed by the widest entry
+in that column. The width of the second column is governed by the
+length \ics{glsdescwidth}. Child entries have a similar format to
+the parent entries except that their name is suppressed.
+
+\item[superraggedborder] The \glostyle{superraggedborder} style is
+like \glostyle{superragged} but has horizontal and vertical lines
+around it.
+
+\item[superraggedheader] The \glostyle{superraggedheader} style is
+like \glostyle{superragged} but has a header row.
+
+\item[superraggedheaderborder] The
+\glostyle{superraggedheaderborder} style is like
+\glostyle{superraggedheader} but has horizontal and vertical lines
+around it.
+
+\item[superragged3col] The \glostyle{superragged3col} style is like
+\glostyle{superragged} but has three columns. The first column
+contains the entry's name, the second column contains the (left
+justified) description and the third column contains the (left
+justified) \gls{numberlist}. The entry's symbol is ignored. The
+width of the first column is governed by the widest entry in that
+column. The width of the second column is governed by the length
+\ics{glsdescwidth}. The width of the third column is governed by the
+length \ics{glspagelistwidth}.
+
+\item[superragged3colborder] The \glostyle{superragged3colborder}
+style is like the \glostyle{superragged3col} style but has
+horizontal and vertical lines around it.
+
+\item[superragged3colheader] The \glostyle{superragged3colheader}
+style is like \glostyle{superragged3col} but has a header row.
+
+\item[superragged3colheaderborder] The
+\glostyle{superragged3colheaderborder} style is like
+\glostyle{superragged3colheader} but has horizontal and vertical
+lines around it.
+
+\item[altsuperragged4col] The \glostyle{altsuperragged4col} style is
+like \glostyle{superragged3col} but has an additional column in
+which the entry's associated symbol appears. The column widths for
+the name and symbol column are governed by the widest entry in the
+given column.
+
+\item[altsuperragged4colborder] The
+\glostyle{altsuperragged4colborder} style is like the
+\glostyle{altsuperragged4col} style but has horizontal and vertical
+lines around it.
+
+\item[altsuperragged4colheader] The
+\glostyle{altsuperragged4colheader} style is like
+\glostyle{altsuperragged4col} but has a header row.
+
+\item[altsuperragged4colheaderborder] The
+\glostyle{altsuperragged4colheaderborder} style is like
+\glostyle{altsuperragged4colheader} but has horizontal and vertical
+lines around it.
+
+\end{description}
+
+\subsection{Tree-Like Styles}
+\label{sec:treestyles}
+
+The styles described in this section are all defined in the package
+\sty{glossary-tree}. These styles are designed for hierarchical
+glossaries but can also be used with glossaries that don't have
+sub-entries. These styles will display the entry's symbol if it
+exists. Note that these styles will automatically be available
+unless you use the \pkgopt{notree} or \pkgopt{nostyles} package
+options.
+
+These styles all format the entry name using:
+\begin{definition}[\DescribeMacro\glstreenamefmt]
+\cs{glstreenamefmt}\marg{name}
+\end{definition}
+This defaults to \cs{textbf}\marg{name}, but note that \meta{name}
+includes \ics{glsnamefont} so the bold setting in \cs{glstreenamefont}
+may be counteracted by another font change in \cs{glsnamefont} (or
+in \cs{acronymfont}). The tree-like styles that also display the
+header use
+\begin{definition}[\DescribeMacro\glstreegroupheaderfmt]
+\cs{glstreegroupheaderfmt}\marg{text}
+\end{definition}
+to format the heading. This defaults to
+\cs{glstreenamefmt}\marg{text}. The tree-like styles that display
+navigation links to the groups (such as \glostyle{indexhypergroup}), format
+the navigation line using
+\begin{definition}[\DescribeMacro\glstreenavigationfmt]
+\cs{glstreenavigationfmt}\marg{text}
+\end{definition}
+which defaults to \cs{glstreenamefmt}\marg{text}. Note that this is
+different from \cs{glslistnavigationitem}, provided with the styles
+such as \glostyle{listhypergroup}, as that also includes \cs{item}.
+
+With the exception of the \glostyle{alttree} style (and those
+derived from it), the space before the description for top-level
+entries is produced with
+\begin{definition}[\DescribeMacro\glstreepredesc]
+\cs{glstreepredesc}
+\end{definition}
+This defaults to \cs{space}.
+
+With the exception of the \glostyle{treenoname} and
+\glostyle{alttree} styles (and those derived from them), the
+space before the description for child
+entries is produced with
+\begin{definition}[\DescribeMacro\glstreechildpredesc]
+\cs{glstreechildpredesc}
+\end{definition}
+This defaults to \cs{space}.
+
+\begin{important}
+Most of these styles are not designed for multi-paragraph
+descriptions. (The \glostyle{tree} style isn't too bad for
+multi-paragraph top-level entry descriptions, or you can use the
+\glostyle{index} style with the adjustment shown below.)
+\end{important}
+
+\begin{description}
+\item[index] The \glostyle{index} style is similar to the way
+indices are usually formatted in that it has a hierarchical
+structure up to three levels (the main level plus two sub-levels).
+The name is typeset in bold, and if the symbol is present it is set
+in parentheses after the name and before the description.
+Sub-entries are indented and also include the name, the symbol
+in brackets (if present) and the description. Groups are separated
+using \ics{indexspace}.
+
+Each main level item is started with
+\begin{definition}[\DescribeMacro\glstreeitem]
+\cs{glstreeitem}
+\end{definition}
+The level~1 entries are started with
+\begin{definition}[\DescribeMacro\glstreesubitem]
+\cs{glstreesubitem}
+\end{definition}
+
+The level~2 entries are started with
+\begin{definition}[\DescribeMacro\glstreesubsubitem]
+\cs{glstreesubsubitem}
+\end{definition}
+
+Note that the \glostyle{index} style automatically sets
+\begin{verbatim}
+\let\item\glstreeitem
+\let\subitem\glstreesubitem
+\let\subsubitem\glstreesubsubitem
+\end{verbatim}
+at the start of the glossary for backward compatibility.
+
+The \glostyle{index} style isn't suitable for multi-paragraph
+descriptions, but this limitation can be overcome by redefining
+the above commands. For example:
+\begin{verbatim}
+\renewcommand{\glstreeitem}{%
+ \parindent0pt\par\hangindent40pt
+ \everypar{\parindent50pt\hangindent40pt}}
+\end{verbatim}
+
+\item[indexgroup] The \glostyle{indexgroup} style is similar to
+the \glostyle{index} style except that each group has a heading
+obtained using \cs{glsgetgrouptitle}\marg{label},
+which is described in \sectionref{sec:newglossarystyle}.
+
+\item[indexhypergroup] The \glostyle{indexhypergroup} style is like
+\glostyle{indexgroup} but has a set of links to the glossary
+groups. The navigation line is the same as that for
+\glostyle{listhypergroup}, described above, but is formatted using
+\cs{glstreenavigationfmt}.
+
+\item[tree] The \glostyle{tree} style is similar to the
+\glostyle{index} style except that it can have arbitrary levels.
+(Note that \gls{makeindex} is limited to three levels, so
+you will need to use \gls{xindy} if you want more than
+three levels.) Each sub-level is indented by
+\DescribeMacro{\glstreeindent}\cs{glstreeindent}. Note that the
+name, symbol (if present) and description are placed in the
+same paragraph block. If you want the name to be apart from the
+description, use the \glostyle{alttree} style instead. (See below.)
+
+\item[treegroup] The \glostyle{treegroup} style is similar to
+the \glostyle{tree} style except that each group has a heading.
+
+\item[treehypergroup] The \glostyle{treehypergroup} style is like
+\glostyle{treegroup} but has a set of links to the glossary
+groups. The navigation line is the same as that for
+\glostyle{listhypergroup}, described above, but is formatted using
+\cs{glstreenavigationfmt}.
+
+\item[treenoname] The \glostyle{treenoname} style is like
+the \glostyle{tree} style except that the name for each sub-entry
+is ignored.
+
+\item[treenonamegroup] The \glostyle{treenonamegroup} style is
+similar to the \glostyle{treenoname} style except that each group
+has a heading.
+
+\item[treenonamehypergroup] The \glostyle{treenonamehypergroup}
+style is like \glostyle{treenonamegroup} but has a set of links to
+the glossary groups. The navigation line is the same as that for
+\glostyle{listhypergroup}, described above, but is formatted using
+\cs{glstreenavigationfmt}.
+
+\item[alttree] The \glostyle{alttree} style is similar to the
+\glostyle{tree} style except that the indentation for each level
+is determined by the width of the text specified by
+\begin{definition}[\DescribeMacro{\glssetwidest}]
+\cs{glssetwidest}\oarg{level}\marg{text}
+\end{definition}
+The optional argument \meta{level} indicates the level, where
+0 indicates the top-most level, 1 indicates the first level
+sub-entries, etc. If \cs{glssetwidest} hasn't been used for a
+given sub-level, the level~0 widest text is used instead. If
+\meta{level} is omitted, 0 is assumed.
+
+As from v4.22, the \sty{glossary-tree} package also provides
+\begin{definition}[\DescribeMacro\glsfindwidesttoplevelname]
+\cs{glsfindwidesttoplevelname}\oarg{glossary list}
+\end{definition}
+This iterates over all parentless entries in the given glossary
+lists and determines the widest entry. If the optional argument is
+omitted, all glossaries are assumed (as per \cs{forallglossaries}).
+
+For example, to have the same name width for all glossaries:
+\begin{verbatim}
+\glsfindwidesttoplevelname
+\setglossarystyle{alttree}
+\printglossaries
+\end{verbatim}
+Alternatively, to compute the widest entry for each glossary
+before it's displayed:
+\begin{verbatim}
+\renewcommand{\glossarypreamble}{%
+ \glsfindwidesttoplevelname[\currentglossary]}
+\setglossarystyle{alttree}
+\printglossaries
+\end{verbatim}
+
+\begin{important}
+These commands only affects the \glostyle{alttree} styles, including those
+listed below and the ones in the \sty{glossary-mcols} package.
+If you forget to set the widest entry name, the description will
+overwrite the name.
+\end{important}
+
+For each level, the name is placed to the left of the paragraph
+block containing the symbol (optional) and the description. If the
+symbol is present, it is placed in parentheses before the
+description.
+
+The name is placed inside a left-aligned \cs{makebox}. As from
+v4.19, this can now be adjusted by redefining
+\begin{definition}[\DescribeMacro\glstreenamebox]
+\cs{glstreenamebox}\marg{width}\marg{text}
+\end{definition}
+where \meta{width} is the width of the box and \meta{text} is the
+contents of the box. For example, to make the name right-aligned:
+\begin{verbatim}
+\renewcommand*{\glstreenamebox}[2]{%
+ \makebox[#1][r]{#2}%
+}
+\end{verbatim}
+
+\item[alttreegroup] The \glostyle{alttreegroup} is like the
+\glostyle{alttree} style except that each group has a heading.
+
+\item[alttreehypergroup] The \glostyle{alttreehypergroup} style is
+like \glostyle{alttreegroup} but has a set of links to the glossary
+groups. The navigation line is the same as that for
+\glostyle{listhypergroup}, described above.
+
+\end{description}
+
+\subsection{Multicols Style}
+\label{sec:mcolstyles}
+
+The \sty{glossary-mcols} package provides tree-like styles that are
+in the \env{multicols} environment (defined by the \sty{multicol}
+package). The style names are as their analogous tree styles (as
+defined in \sectionref{sec:treestyles}) but are prefixed with
+\qt{mcol}.
+For example, the \glostyle{mcolindex} style is essentially the
+\glostyle{index} style but put in a \env{multicols} environment.
+For the complete list, see \tableref{tab:mcols}. The
+\sty{glossary-tree} package is automatically loaded by
+\sty{glossary-mcols} (even if the \pkgopt{notree} package option is
+used when loading \styfmt{glossaries}). The formatting commands
+\cs{glstreenamefmt}, \cs{glstreegroupheaderfmt} and
+\cs{glstreenavigationfmt} are all used by the corresponding
+\sty{glossary-mcols} styles.
+
+\begin{important}
+Note that \sty{glossary-mcols} is not loaded by \styfmt{glossaries}. If
+you want to use any of the multicol styles in that package you need
+to load it explicitly with \cs{usepackage} and set the required glossary
+style using \ics{setglossarystyle}.
+\end{important}
+
+The default number of columns is 2, but can be changed by redefining
+\begin{definition}[\DescribeMacro{\glsmcols}]
+\cs{glsmcols}
+\end{definition}
+to the required number. For example, for a three column glossary:
+\begin{verbatim}
+\usepackage{glossary-mcols}
+\renewcommand*{\glsmcols}{3}
+\setglossarystyle{mcolindex}
+\end{verbatim}
+
+\begin{table}[htbp]
+\caption{Multicolumn Styles}
+\label{tab:mcols}
+\centering
+\begin{tabular}{ll}
+\bfseries
+\sty{glossary-mcols} Style &
+\bfseries
+Analogous Tree Style\\
+\glostyle{mcolindex} & \glostyle{index}\\
+\glostyle{mcolindexgroup} & \glostyle{indexgroup}\\
+\glostyle{mcolindexhypergroup} or \glostyle{mcolindexspannav} & \glostyle{indexhypergroup}\\
+\glostyle{mcoltree} & \glostyle{tree}\\
+\glostyle{mcoltreegroup} & \glostyle{treegroup}\\
+\glostyle{mcoltreehypergroup} or \glostyle{mcoltreespannav} & \glostyle{treehypergroup}\\
+\glostyle{mcoltreenoname} & \glostyle{treenoname}\\
+\glostyle{mcoltreenonamegroup} & \glostyle{treenonamegroup}\\
+\glostyle{mcoltreenonamehypergroup} or
+\glostyle{mcoltreenonamespannav} & \glostyle{treenonamehypergroup}\\
+\glostyle{mcolalttree} & \glostyle{alttree}\\
+\glostyle{mcolalttreegroup} & \glostyle{alttreegroup}\\
+\glostyle{mcolalttreehypergroup} or \glostyle{mcolalttreespannav} & \glostyle{alttreehypergroup}
+\end{tabular}
+\end{table}
+
+The styles with a navigation line, such as
+\glostyle{mcoltreehypergroup}, now have a variant (as from v4.22)
+with \qt{hypergroup} replaced with \qt{spannav} in the style name.
+The original \qt{hypergroup} styles place the navigation line at the
+start of the first column. The newer \qt{spannav} styles put the
+navigation line in the optional argument of the \env{multicols}
+environment so that it spans across all the columns.
+
+\subsection{In-Line Style}
+\label{sec:inline}
+
+This section covers the \sty{glossary-inline} package that supplies
+the \glostyle{inline} style. This is a style that is designed for
+in-line use (as opposed to block styles, such as lists or tables).
+This style doesn't display the \gls{numberlist}.
+
+You will most likely need to redefine \ics{glossarysection} with
+this style. For example, suppose you are required to have your
+glossaries and list of acronyms in a footnote, you can do:
+\begin{verbatim}
+ \usepackage{glossary-inline}
+
+ \renewcommand*{\glossarysection}[2][]{\textbf{#1}: }
+ \setglossarystyle{inline}
+\end{verbatim}
+
+\begin{important}
+Note that you need to include \sty{glossary-inline} with
+\cs{usepackage} as it's not automatically included by the
+\styfmt{glossaries} package and then set the style using
+\ics{setglossarystyle}.
+\end{important}
+
+Where you need to include your glossaries as a footnote you can do:
+\begin{verbatim}
+\footnote{\printglossaries}
+\end{verbatim}
+
+The \glostyle{inline} style is governed by the following:
+\begin{definition}[\DescribeMacro{\glsinlineseparator}]
+\ics{glsinlineseparator}
+\end{definition}
+This defaults to \qt{\texttt{\glsinlineseparator}} and is used between
+main (i.e.\ level~0) entries.
+\begin{definition}[\DescribeMacro{\glsinlinesubseparator}]
+\ics{glsinlinesubseparator}
+\end{definition}
+This defaults to \qt{\texttt{\glsinlinesubseparator}} and is used between
+sub-entries.
+\begin{definition}[\DescribeMacro{\glsinlineparentchildseparator}]
+\ics{glsinlineparentchildseparator}
+\end{definition}
+This defaults to \qt{\texttt{\glsinlineparentchildseparator}} and is used between
+a parent main entry and its first sub-entry.
+\begin{definition}[\DescribeMacro{\glspostinline}]
+\ics{glspostinline}
+\end{definition}
+This defaults to \qt{\texttt{\glsinlineseparator}} and is used at the end
+of the glossary.
+\begin{definition}[\DescribeMacro\glsinlinenameformat]
+\cs{glsinlinenameformat}\marg{label}\marg{name}
+\end{definition}
+This is used to format the entry name and defaults to
+\cs{glstarget}\marg{label}\marg{name}, where \meta{name} is provided
+in the form \cs{glossentryname}\marg{label} and \meta{label} is the
+entry's label. For example, if you want the name to appear in
+smallcaps:
+\begin{verbatim}
+\renewcommand*{\glsinlinenameformat}[2]{\glstarget{#1}{\textsc{#2}}}
+\end{verbatim}
+Sub-entry names are formatted according to
+\begin{definition}[\DescribeMacro\glsinlinesubnameformat]
+\cs{glsinlinesubnameformat}\marg{label}\marg{name}
+\end{definition}
+This defaults to \cs{glstarget}\marg{label}\verb|{}| so the
+sub-entry name is ignored.
+
+If the description has been suppressed (according to
+\cs{ifglsdescsuppressed}) then
+\begin{definition}[\DescribeMacro\glsinlineemptydescformat]
+\cs{glsinlineemptydescformat}\marg{symbol}\marg{number list}
+\end{definition}
+(which defaults to nothing) is used,
+otherwise the description is formatted according to
+\begin{definition}[\DescribeMacro\glsinlinedescformat]
+\cs{glsinlinedescformat}\marg{description}\marg{symbol}\marg{number
+list}
+\end{definition}
+This defaults to just \cs{space}\meta{description} so the symbol and
+location list are ignored. If the description is missing (according
+to \cs{ifglshasdesc}), then \cs{glsinlineemptydescformat} is used
+instead.
+
+For example, if you want a colon between the name and the
+description:
+\begin{verbatim}
+\renewcommand*{\glsinlinedescformat}[3]{: #1}
+\end{verbatim}
+
+The sub-entry description is formatted according to:
+\begin{definition}[\DescribeMacro\glsinlinesubdescformat]
+\cs{glsinlinesubdescformat}\marg{description}\marg{symbol}\marg{number
+list}
+\end{definition}
+This defaults to just \meta{description}.
+
+\section{Defining your own glossary style}
+\label{sec:newglossarystyle}
+
+If the predefined styles don't fit your requirements, you can
+define your own style using:
+\begin{definition}[\DescribeMacro{\newglossarystyle}]
+\cs{newglossarystyle}\marg{name}\marg{definitions}
+\end{definition}
+where \meta{name} is the name of the new glossary style (to be
+used in \cs{setglossarystyle}). The second argument \meta{definitions}
+needs to redefine all of the following:
+
+\begin{definition}[\DescribeEnv{theglossary}]
+\env{theglossary}
+\end{definition}
+This environment defines how the main body of the glossary should
+be typeset. Note that this does not include the section heading,
+the glossary preamble (defined by \ics{glossarypreamble}) or the
+glossary postamble (defined by \ics{glossarypostamble}). For example,
+the \glostyle{list} style uses the \env{description} environment,
+so the \env{theglossary} environment is simply redefined to begin
+and end the \env{description} environment.
+
+\begin{definition}[\DescribeMacro{\glossaryheader}]
+\cs{glossaryheader}
+\end{definition}
+This macro indicates what to do at the start of the main body
+of the glossary. Note that this is not the same as
+\ics{glossarypreamble}, which should not be affected by changes in
+the glossary style. The \glostyle{list} glossary style redefines
+\ics{glossaryheader} to do nothing, whereas the \glostyle{longheader}
+glossary style redefines \cs{glossaryheader} to do a header row.
+
+\begin{definition}[\DescribeMacro{\glsgroupheading}]
+\cs{glsgroupheading}\marg{label}
+\end{definition}
+This macro indicates
+what to do at the start of each logical block within the main body
+of the glossary. If you use \gls{makeindex} the glossary is
+sub-divided into a maximum of twenty-eight logical blocks that are
+determined by the first character of the \gloskey{sort} key (or
+\gloskey{name} key if the \gloskey{sort} key is omitted). The
+sub-divisions are in the following order: symbols, numbers, A,
+\ldots, Z\@. If you use \gls{xindy}, the sub-divisions depend on
+the language settings.
+
+Note that the argument to \cs{glsgroupheading}
+is a label \emph{not} the group title. The group title can be obtained
+via
+\begin{definition}[\DescribeMacro{\glsgetgrouptitle}]
+\cs{glsgetgrouptitle}\marg{label}
+\end{definition}
+This obtains the title as follows: if \meta{label} consists of a
+single non-active character or \meta{label} is equal to
+\texttt{glssymbols} or \texttt{glsnumbers} and
+\cs{}\meta{label}\texttt{groupname} exists, this is taken to be the
+title, otherwise the title is just \meta{label}. (The \qt{symbols}
+group has the label \texttt{glssymbols}, so the command
+\ics{glssymbolsgroupname} is used, and the \qt{numbers} group has the
+label \texttt{glsnumbers}, so the command \ics{glsnumbersgrouptitle}
+is used.) If you are using \gls{xindy}, \meta{label} may be an
+active character (for example \o), in which case the title will be
+set to just \meta{label}. You can redefine \cs{glsgetgrouptitle} if
+this is unsuitable for your document.
+
+A navigation hypertarget can be created using
+\begin{definition}[\DescribeMacro{\glsnavhypertarget}]
+\cs{glsnavhypertarget}\marg{label}\marg{text}
+\end{definition}
+This typically requires \cs{glossaryheader} to be redefined to use
+\begin{definition}[\DescribeMacro\glsnavigation]
+\cs{glsnavigation}
+\end{definition}
+which displays the navigation line.
+
+For further details about \cs{glsnavhypertarget}, see
+\ifpdf section~\ref*{sec:code:hypernav} in \fi the documented code
+(\texttt{glossaries-code.pdf}).
+
+Most of the predefined glossary styles redefine \cs{glsgroupheading}
+to simply ignore its argument. The \glostyle{listhypergroup} style
+redefines \cs{glsgroupheading} as follows:
+\begin{verbatim}
+\renewcommand*{\glsgroupheading}[1]{%
+\item[\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}]}
+\end{verbatim}
+See also \cs{glsgroupskip} below. (Note that command definitions within
+\ics{newglossarystyle} must use \verb|##1| instead of \verb|#1| etc.)
+
+\begin{definition}[\DescribeMacro{\glsgroupskip}]
+\cs{glsgroupskip}
+\end{definition}
+This macro determines what to do after one logical group but before
+the header for the next logical group. The \glostyle{list} glossary
+style simply redefines \cs{glsgroupskip} to be \ics{indexspace},
+whereas the tabular-like styles redefine \cs{glsgroupskip} to
+produce a blank row.
+
+As from version 3.03, the package option \pkgopt{nogroupskip} can be
+used to suppress this default gap for the predefined styles.
+
+\begin{definition}[\DescribeMacro{\glossentry}]
+\cs{glossentry}\marg{label}\marg{number list}
+\end{definition}
+This macro indicates what to do for each top-level (level~0) glossary entry.
+The entry label is given by \meta{label} and the associated
+\gls{numberlist} is given by \meta{number list}. You can redefine
+\ics{glossentry} to use commands like \ics{glossentryname}\marg{label},
+\ics{glossentrydesc}\marg{label} and \ics{glossentrysymbol}\marg{label}
+to display the name, description and symbol fields, or to access
+other fields, use commands like \ics{glsentryuseri}\marg{label}.
+(See \sectionref{sec:glsnolink} for further details.) You can also
+use the following commands:
+
+\begin{definition}[\DescribeMacro{\glsentryitem}]
+\cs{glsentryitem}\marg{label}
+\end{definition}
+This macro will increment and display the associated counter for the
+main (level~0) entries if the \pkgopt{entrycounter} or
+\pkgopt{counterwithin} package options have been used. This macro
+is typically called by \cs{glossentry} before \cs{glstarget}.
+The format of the counter is controlled by the macro
+\begin{definition}[\DescribeMacro{\glsentrycounterlabel}]
+\cs{glsentrycounterlabel}
+\end{definition}
+
+Each time you use a glossary entry it creates a hyperlink (if
+hyperlinks are enabled) to the relevant line in the glossary.
+Your new glossary style must therefore redefine
+\cs{glossentry} to set the appropriate target. This
+is done using
+\begin{definition}[\DescribeMacro{\glstarget}]
+\cs{glstarget}\marg{label}\marg{text}
+\end{definition}
+where \meta{label} is the entry's label. Note that you
+don't need to worry about whether the \sty{hyperref} package has
+been loaded, as \cs{glstarget} won't create a target if
+\cs{hypertarget} hasn't been defined.
+
+For example, the \glostyle{list} style defines \cs{glossentry} as follows:
+\begin{verbatim}
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}
+\end{verbatim}
+
+Note also that \meta{number list} will always be of the form
+\begin{definition}
+\ics{glossaryentrynumbers}\{\cs{relax}\\
+\ics{setentrycounter}\oarg{Hprefix}\marg{counter name}\meta{format cmd}\marg{number(s)}\}
+\end{definition}
+where \meta{number(s)}
+may contain \ics{delimN} (to delimit individual numbers) and/or
+\ics{delimR} (to indicate a range of numbers). There may be
+multiple occurrences of
+\ics{setentrycounter}\oarg{Hprefix}\marg{counter name}\meta{format cmd}\marg{number(s)}, but note
+that the entire number list is enclosed within the argument
+of \ics{glossaryentrynumbers}. The user can redefine this to change
+the way the entire number list is formatted, regardless of
+the glossary style. However the most common use of
+\ics{glossaryentrynumbers} is to provide a means of suppressing the
+number list altogether. (In fact, the \pkgopt{nonumberlist} option
+redefines \ics{glossaryentrynumbers} to ignore its argument.)
+Therefore, when you define a new glossary style, you don't need
+to worry about whether the user has specified the
+\pkgopt{nonumberlist} package option.
+
+\begin{definition}[\DescribeMacro{\subglossentry}]
+\cs{subglossentry}\marg{level}\marg{label}\marg{number list}
+\end{definition}
+This is used to display sub-entries.
+The first argument, \meta{level}, indicates the sub-entry level.
+This must be an integer from 1 (first sub-level) onwards. The
+remaining arguments are analogous to those for
+\ics{glossentry} described above.
+
+\begin{definition}[\DescribeMacro{\glssubentryitem}]
+\cs{glssubentryitem}\marg{label}
+\end{definition}
+This macro will increment and display the associated counter for the
+level~1 entries if the \pkgopt{subentrycounter} package option has
+been used. This macro is typically called by \cs{subglossentry}
+before \ics{glstarget}. The format of the counter is controlled by
+the macro
+\begin{definition}[\DescribeMacro{\glssubentrycounterlabel}]
+\cs{glssubentrycounterlabel}
+\end{definition}
+
+Note that \ics{printglossary} (which \ics{printglossaries} calls)
+sets
+\begin{definition}[\DescribeMacro{\currentglossary}]
+\cs{currentglossary}
+\end{definition}
+to the current glossary label, so it's possible to create a glossary
+style that varies according to the glossary type.
+
+For further details of these commands, see \ifpdf
+section~\ref*{sec:code:printglos} \fi \qt{Displaying the glossary}
+in the documented code (\texttt{glossaries-code.pdf}).
+
+\begin{example}{Creating a completely new style}{sec:exnewstyle}
+
+If you want a completely new style, you will need to redefine all
+of the commands and the environment listed above.
+
+For example, suppose you want each entry to start with a bullet point.
+This means that the glossary should be placed in the \env{itemize}
+environment, so \env{theglossary} should start and end that
+environment. Let's also suppose that you don't want anything between
+the glossary groups (so \ics{glsgroupheading} and \ics{glsgroupskip}
+should do nothing) and suppose you don't want anything to appear
+immediately after \verb|\begin{theglossary}| (so \ics{glossaryheader}
+should do nothing). In addition, let's suppose the symbol should
+appear in brackets after the name, followed by the description and
+last of all the \gls{numberlist} should appear within square brackets
+at the end. Then you can create this new glossary style, called, say,
+\texttt{mylist}, as follows:
+\begin{verbatim}
+ \newglossarystyle{mylist}{%
+ % put the glossary in the itemize environment:
+ \renewenvironment{theglossary}%
+ {\begin{itemize}}{\end{itemize}}%
+ % have nothing after \begin{theglossary}:
+ \renewcommand*{\glossaryheader}{}%
+ % have nothing between glossary groups:
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glsgroupskip}{}%
+ % set how each entry should appear:
+ \renewcommand*{\glossentry}[2]{%
+ \item % bullet point
+ \glstarget{##1}{\glossentryname{##1}}% the entry name
+ \space (\glossentrysymbol{##1})% the symbol in brackets
+ \space \glossentrydesc{##1}% the description
+ \space [##2]% the number list in square brackets
+ }%
+ % set how sub-entries appear:
+ \renewcommand*{\subglossentry}[3]{%
+ \glossentry{##2}{##3}}%
+ }
+\end{verbatim}
+Note that this style creates a flat glossary, where sub-entries
+are displayed in exactly the same way as the top level entries.
+It also hasn't used \ics{glsentryitem} or \ics{glssubentryitem} so
+it won't be affected by the \pkgopt{entrycounter},
+\pkgopt{counterwithin} or \pkgopt{subentrycounter} package options.
+
+Variations:
+\begin{itemize}
+\item You might want the entry name to be capitalised, in
+which case use \ics{Glossentryname} instead of \ics{glossentryname}.
+
+\item You might want to check if the symbol hasn't been set and omit
+the parentheses if the symbol is absent. In this case you can use
+\ics{ifglshassymbol} (see \sectionref{sec:utilities}):
+\begin{verbatim}
+ \renewcommand*{\glossentry}[2]{%
+ \item % bullet point
+ \glstarget{##1}{\glossentryname{##1}}% the entry name
+ \ifglshassymbol{##1}% check if symbol exists
+ {%
+ \space (\glossentrysymbol{##1})% the symbol in brackets
+ }%
+ {}% no symbol so do nothing
+ \space \glossentrydesc{##1}% the description
+ \space [##2]% the number list in square brackets
+ }%
+\end{verbatim}
+\end{itemize}
+\end{example}
+
+\begin{example}{Creating a new glossary style based on an
+existing style}{sec:exadaptstyle}
+
+If you want to define a new style that is a slightly modified
+version of an existing style, you can use \ics{setglossarystyle}
+within the second argument of \ics{newglossarystyle} followed by
+whatever alterations you require. For example, suppose you want
+a style like the \glostyle{list} style but you don't want the extra
+vertical space created by \ics{indexspace} between groups, then you
+can create a new glossary style called, say, \texttt{mylist} as
+follows:
+\begin{verbatim}
+\newglossarystyle{mylist}{%
+\setglossarystyle{list}% base this style on the list style
+\renewcommand{\glsgroupskip}{}% make nothing happen
+ % between groups
+}
+\end{verbatim}
+(In this case, you can actually achieve the same effect using the
+\glostyle{list} style in combination with the package option
+\pkgopt{nogroupskip}.)
+\end{example}
+
+\begin{example}{Example: creating a glossary style that uses the
+\texorpdfstring{\gloskey{user1}}{user1}, \ldots,
+\texorpdfstring{\gloskey{user6}}{user6} keys}{sec:exuserstyle}
+
+Suppose each entry not only has an associated symbol,
+but also units (stored in \gloskey{user1}) and dimension
+(stored in \gloskey{user2}). Then you can define a glossary style
+that displays each entry in a \env{longtable} as follows:
+\begin{verbatim}
+\newglossarystyle{long6col}{%
+ % put the glossary in a longtable environment:
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}cccp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ % Set the table's header:
+ \renewcommand*{\glossaryheader}{%
+ \bfseries Term & \bfseries Description & \bfseries Symbol &
+ \bfseries Units & \bfseries Dimensions & \bfseries Page List
+ \\\endhead}%
+ % No heading between groups:
+ \renewcommand*{\glsgroupheading}[1]{}%
+ % Main (level 0) entries displayed in a row optionally numbered:
+ \renewcommand*{\glossentry}[2]{%
+ \glsentryitem{##1}% Entry number if required
+ \glstarget{##1}{\glossentryname{##1}}% Name
+ & \glossentrydesc{##1}% Description
+ & \glossentrysymbol{##1}% Symbol
+ & \glsentryuseri{##1}% Units
+ & \glsentryuserii{##1}% Dimensions
+ & ##2% Page list
+ \tabularnewline % end of row
+ }%
+ % Similarly for sub-entries (no sub-entry numbers):
+ \renewcommand*{\subglossentry}[3]{%
+ % ignoring first argument (sub-level)
+ \glstarget{##2}{\glossentryname{##2}}% Name
+ & \glossentrydesc{##2}% Description
+ & \glossentrysymbol{##2}% Symbol
+ & \glsentryuseri{##2}% Units
+ & \glsentryuserii{##2}% Dimensions
+ & ##3% Page list
+ \tabularnewline % end of row
+ }%
+ % Nothing between groups:
+ \renewcommand*{\glsgroupskip}{}%
+}
+\end{verbatim}
+\end{example}
+
+\chapter{Utilities}
+\label{sec:utilities}
+
+This section describes some utility commands. Additional commands
+can be found in the documented code (glossaries-code.pdf).
+
+\section{Loops}
+\label{sec:loops}
+
+\begin{important}
+Some of the commands described here take a comma-separated list as
+an argument. As with \LaTeX's \cs{@for} command, make sure your list
+doesn't have any unwanted spaces in it as they don't get stripped.
+(Discussed in more detail in
+\href{http://www.dickimaw-books.com/latex/admin/html/docsvlist.shtml#spacesinlists}{\S2.7.2 of \qt{\LaTeX\ for Administrative
+Work}}.)
+\end{important}
+
+\begin{definition}[\DescribeMacro{\forallglossaries}]
+\cs{forallglossaries}\oarg{glossary list}\marg{cs}\marg{body}
+\end{definition}
+This iterates through \meta{glossary list}, a comma-separated list
+of glossary labels (as supplied when the glossary was defined).
+At each iteration \meta{cs} (which must be a control sequence) is
+set to the glossary label for the current iteration and \meta{body}
+is performed. If \meta{glossary list} is omitted, the default is to
+iterate over all glossaries (except the ignored ones).
+
+\begin{definition}[\DescribeMacro{\forallacronyms}]
+\cs{forallacronyms}\marg{cs}\marg{body}
+\end{definition}
+This is like \cs{forallglossaries} but only iterates over the
+lists of acronyms (that have previously been declared using
+\ics{DeclareAcronymList} or the \pkgopt{acronymlists} package
+option). This command doesn't have an optional argument. If you want
+to explicitly say which lists to iterate over, just use the optional
+argument of \cs{forallglossaries}.
+
+\begin{definition}[\DescribeMacro{\forglsentries}]
+\cs{forglsentries}\oarg{glossary label}\marg{cs}\marg{body}
+\end{definition}
+This iterates through all entries in the glossary given by
+\meta{glossary label}. At each iteration \meta{cs} (which must be a
+control sequence) is set to the entry label for the current
+iteration and \meta{body} is performed. If \meta{glossary label} is
+omitted, \ics{glsdefaulttype} (usually the main glossary) is used.
+
+\begin{definition}[\DescribeMacro{\forallglsentries}]
+\cs{forallglsentries}\oarg{glossary list}\marg{cs}\marg{body}
+\end{definition}
+This is like \cs{forglsentries} but for each glossary in
+\meta{glossary list} (a comma-separated list of glossary labels). If
+\meta{glossary list} is omitted, the default is the list of all
+defined glossaries (except the ignored ones). At each iteration
+\meta{cs} is set to the entry label and \meta{body} is performed.
+(The current glossary label can be obtained using
+\cs{glsentrytype}\marg{cs} within \meta{body}.)
+
+\section{Conditionals}
+\label{sec:conditionals}
+
+\begin{definition}[\DescribeMacro{\ifglossaryexists}]
+\cs{ifglossaryexists}{\meta{label}}{\meta{true part}}{\meta{false
+part}}
+\end{definition}
+This checks if the glossary given by \meta{label} exists. If it
+does \meta{true part} is performed, otherwise \meta{false part}.
+
+\begin{definition}[\DescribeMacro{\ifglsentryexists}]
+\cs{ifglsentryexists}{\meta{label}}{\meta{true part}}{\meta{false
+part}}
+\end{definition}
+This checks if the glossary entry given by \meta{label} exists. If it
+does \meta{true part} is performed, otherwise \meta{false part}.
+(Note that \cs{ifglsentryexists} will always be true after the
+containing glossary has been displayed via \ics{printglossary}
+or \ics{printglossaries} even if the entry is explicitly defined
+later in the document. This is because the entry has to be defined
+before it can be displayed in the glossary, see \sectionref{sec:techissues} for
+further details.)
+
+\begin{definition}[\DescribeMacro{\glsdoifexists}]
+\cs{glsdoifexists}\marg{label}\marg{code}
+\end{definition}
+Does \meta{code} if the entry given by \meta{label} exists. If it
+doesn't exist, an error is generated. (This command uses
+\cs{ifglsentryexists}.)
+
+\begin{definition}[\DescribeMacro{\glsdoifnoexists}]
+\cs{glsdoifnoexists}\marg{label}\marg{code}
+\end{definition}
+Does the reverse of \cs{glsdoifexists}. (This command uses
+\cs{ifglsentryexists}.)
+
+\begin{definition}[\DescribeMacro{\glsdoifexistsorwarn}]
+\cs{glsdoifexistsorwarn}\marg{label}\marg{code}
+\end{definition}
+As \cs{glsdoifexists} but issues a warning rather than an error if
+the entry doesn't exist.
+
+\begin{definition}[\DescribeMacro{\glsdoifexistsordo}]
+\cs{glsdoifexistsordo}\marg{label}\marg{code}\marg{else code}
+\end{definition}
+Does \meta{code} if the entry given by \meta{label} exists otherwise
+generate an error and do \meta{else code}.
+
+\begin{definition}[\DescribeMacro{\glsdoifnoexistsordo}]
+\cs{glsdoifnoexistsordo}\marg{label}\marg{code}\marg{else code}
+\end{definition}
+Does \meta{code} if the entry given by \meta{label} doesn't exist otherwise
+generate an error and do \meta{else code}.
+
+\begin{definition}[\DescribeMacro{\ifglsused}]
+\cs{ifglsused}{\meta{label}}{\meta{true part}}{\meta{false
+part}}
+\end{definition}
+See \sectionref{sec:glsunset}.
+
+\begin{definition}[\DescribeMacro{\ifglshaschildren}]
+\cs{ifglshaschildren}{\meta{label}}{\meta{true part}}{\meta{false
+part}}
+\end{definition}
+This checks if the glossary entry given by \meta{label} has any
+sub-entries. If it does, \meta{true part} is performed, otherwise
+\meta{false part}.
+
+\begin{definition}[\DescribeMacro{\ifglshasparent}]
+\cs{ifglshasparent}{\meta{label}}{\meta{true part}}{\meta{false
+part}}
+\end{definition}
+This checks if the glossary entry given by \meta{label} has a parent
+entry. If it does, \meta{true part} is performed, otherwise
+\meta{false part}.
+
+\begin{definition}[\DescribeMacro{\ifglshassymbol}]
+\cs{ifglshassymbol}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+This checks if the glossary entry given by \meta{label} has had the
+\gloskey{symbol} field set. If it has, \meta{true part} is performed,
+otherwise \meta{false part}.
+
+\begin{definition}[\DescribeMacro{\ifglshaslong}]
+\cs{ifglshaslong}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+This checks if the glossary entry given by \meta{label} has had the
+\gloskey{long} field set. If it has, \meta{true part} is performed,
+otherwise \meta{false part}. This should be true for any entry that
+has been defined via \ics{newacronym}.
+There is no check for the existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\ifglshasshort}]
+\cs{ifglshasshort}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+This checks if the glossary entry given by \meta{label} has had the
+\gloskey{short} field set. If it has, \meta{true part} is performed,
+otherwise \meta{false part}. This should be true for any entry that
+has been defined via \ics{newacronym}.
+There is no check for the existence of \meta{label}.
+
+\begin{definition}[\DescribeMacro{\ifglshasdesc}]
+\cs{ifglshasdesc}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+This checks if the \gloskey{description} field is non-empty for
+the entry given by \meta{label}. If it has, \meta{true part} is
+performed, otherwise \meta{false part}. Compare with:
+\begin{definition}[\DescribeMacro{\ifglsdescsuppressed}]
+\cs{ifglsdescsuppressed}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+This checks if the \gloskey{description} field has been set to just
+\ics{nopostdesc} for the entry given by \meta{label}. If it has,
+\meta{true part} is performed, otherwise \meta{false part}.
+There is no check for the existence of \meta{label}.
+
+For all other fields you can use:
+\begin{definition}[\DescribeMacro\ifglshasfield]
+\cs{ifglshasfield}\marg{field}\marg{label}\marg{true part}\marg{false
+part}
+\end{definition}
+This tests the value of the field given by \meta{field} for the entry
+identified by \meta{label}. If the value is empty \emph{or the default
+value}, then \meta{false part} is performed, otherwise \meta{true
+part} is performed. If the field supplied is unrecognised \meta{false part}
+is performed and a warning is issued. Unlike the above commands,
+such as \cs{ifglshasshort}, an error occurs if the entry is
+undefined.
+
+As from version 4.23, within \meta{true part} you can use
+\begin{definition}[\DescribeMacro\glscurrentfieldvalue]
+\cs{glscurrentfieldvalue}
+\end{definition}
+to access the field value. This command is
+initially defined to nothing but has
+no relevance outside \meta{true part}. This saves re-accessing the
+field if the test is true. For example:
+\begin{verbatim}
+\ifglshasfield{useri}{sample}{, \glscurrentfieldvalue}{}
+\end{verbatim}
+will insert a comma, space and the field value if the
+\gloskey{user1} key has been set for
+the entry whose label is \texttt{sample}.
+
+You can test if the value of the field is equal to a given string
+using:
+\begin{definition}[\DescribeMacro\ifglsfieldeq]
+\cs{ifglsfieldeq}\marg{label}\marg{field}\marg{string}\marg{true}\marg{false}
+\end{definition}
+In this case the \meta{field} must be the field name not the key
+(see \tableref{tab:fieldmap}). If the field isn't recognised, an
+error will occur. This command internally uses
+\sty{etoolbox}'s \cs{ifcsstring} to perform the comparison. \emph{The
+string is not expanded during the test.}
+
+The result may vary depending on whether or not expansion is on for
+the given field (when the entry was defined). For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\newcommand*{\foo}{FOO}
+
+\newglossaryentry{sample1}{name={sample1},description={an example},
+user1={FOO}}
+\newglossaryentry{sample2}{name={sample2},description={an example},
+user1={\foo}}
+
+\begin{document}
+\ifglsfieldeq{sample1}{useri}{FOO}{TRUE}{FALSE}.
+
+\ifglsfieldeq{sample2}{useri}{FOO}{TRUE}{FALSE}.
+\end{document}
+\end{verbatim}
+This will produce \qt{TRUE} in both cases since expansion is on, so
+\cs{foo} was expanded to \qt{FOO} when \texttt{sample2} was defined.
+If the tests are changed to:
+\begin{verbatim}
+\ifglsfieldeq{sample1}{useri}{\foo}{TRUE}{FALSE}.
+
+\ifglsfieldeq{sample2}{useri}{\foo}{TRUE}{FALSE}.
+\end{verbatim}
+then this will produce \qt{FALSE} in both cases. Now suppose
+expansion is switched off for the \gloskey{user1} key:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\newcommand*{\foo}{FOO}
+
+\glssetnoexpandfield{useri}
+
+\newglossaryentry{sample1}{name={sample1},description={an example},
+user1={FOO}}
+\newglossaryentry{sample2}{name={sample2},description={an example},
+user1={\foo}}
+
+\begin{document}
+\ifglsfieldeq{sample1}{useri}{FOO}{TRUE}{FALSE}.
+
+\ifglsfieldeq{sample2}{useri}{FOO}{TRUE}{FALSE}.
+\end{document}
+\end{verbatim}
+This now produces \qt{TRUE} for the first case (comparing \qt{FOO}
+with \qt{FOO}) and \qt{FALSE} for the second case (comparing
+\qt{\cs{foo}} with \qt{FOO}).
+
+The reverse happens in the following:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\newcommand*{\foo}{FOO}
+
+\glssetnoexpandfield{useri}
+
+\newglossaryentry{sample1}{name={sample1},description={an example},
+user1={FOO}}
+\newglossaryentry{sample2}{name={sample2},description={an example},
+user1={\foo}}
+
+\begin{document}
+\ifglsfieldeq{sample1}{useri}{\foo}{TRUE}{FALSE}.
+
+\ifglsfieldeq{sample2}{useri}{\foo}{TRUE}{FALSE}.
+\end{document}
+\end{verbatim}
+This now produces \qt{FALSE} for the first case (comparing \qt{FOO}
+with \qt{\cs{foo}}) and \qt{TRUE} for the second case (comparing
+\qt{\cs{foo}} with \qt{\cs{foo}}).
+
+You can test if the value of a field is equal to the replacement
+text of a command using:
+\begin{definition}[\DescribeMacro\ifglsfielddefeq]
+\cs{ifglsfielddefeq}\marg{label}\marg{field}\marg{command}\marg{true}\marg{false}
+\end{definition}
+This internally uses \sty{etoolbox}'s \cs{ifdefstrequal} command to
+perform the comparison. The argument \meta{command} must be a macro.
+
+For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\newcommand*{\foo}{FOO}
+
+\glssetnoexpandfield{useri}
+
+\newglossaryentry{sample1}{name={sample1},description={an example},
+user1={FOO}}
+\newglossaryentry{sample2}{name={sample2},description={an example},
+user1={\foo}}
+
+\begin{document}
+\ifglsfielddefeq{sample1}{useri}{\foo}{TRUE}{FALSE}.
+
+\ifglsfielddefeq{sample2}{useri}{\foo}{TRUE}{FALSE}.
+\end{document}
+\end{verbatim}
+Here, the first case produces \qt{TRUE} since the value of the
+\texttt{useri} field (\qt{FOO}) is the same as the replacement text
+(definition) of \cs{foo} (\qt{FOO}). We have the result
+\qt{\texttt{FOO}} is equal to \qt{\texttt{FOO}}.
+
+The second case produces \qt{FALSE} since the value of the
+\texttt{useri} field (\qt{\cs{foo}}) is not the same as the replacement
+text (definition) of \cs{foo} (\qt{FOO}). No expansion has been
+performed on the value of the \texttt{useri} field. We have the
+result \qt{\cs{foo}} is not equal to \qt{\texttt{FOO}}.
+
+If we add:
+\begin{verbatim}
+\newcommand{\FOO}{\foo}
+\ifglsfielddefeq{sample2}{useri}{\FOO}{TRUE}{FALSE}.
+\end{verbatim}
+we now get \qt{TRUE} since the value of the
+\texttt{useri} field (\qt{\cs{foo}}) is the same as the replacement
+text (definition) of \cs{FOO} (\qt{\cs{foo}}). We have the result \qt{\cs{foo}}
+is equal to \qt{\cs{foo}}.
+
+There is a similar command that requires the control sequence name
+(without the leading backslash) instead of the actual control sequence:
+\begin{definition}[\DescribeMacro\ifglsfieldcseq]
+\cs{ifglsfieldcseq}\marg{label}\marg{field}\marg{csname}\marg{true}\marg{false}
+\end{definition}
+This internally uses \sty{etoolbox}'s \cs{ifcsstrequal} command
+instead of \cs{ifdefstrequal}.
+
+\section{Fetching and Updating the Value of a Field}
+\label{sec:fetchset}
+
+You can fetch the value of a given field and store it in a control
+sequence using:
+\begin{definition}[\DescribeMacro\glsfieldfetch]
+\cs{glsfieldfetch}\marg{label}\marg{field}\marg{cs}
+\end{definition}
+where \meta{label} is the label identifying the glossary entry,
+\meta{field} is the field label (see \tableref{tab:fieldmap})
+and \meta{cs} is the control sequence in which to store the value.
+Remember that \meta{field} is the internal label and is not
+necessarily the same as the key used to set that field in the
+argument of \cs{newglossaryentry} (or the optional argument of
+\cs{newacronym}).
+
+You can change the value of a given field using one of the following
+commands. Note that these commands only change the value of the
+given field. They have no affect on any related field. For example,
+if you change the value of the \gloskey{text} field, it won't modify the
+value given by the \gloskey{name}, \gloskey{plural}, \gloskey{first} or any other related key.
+
+In all the four related commands below, \meta{label} and
+\meta{field} are as above and \meta{definition} is the new value
+of the field.
+
+\begin{definition}[\DescribeMacro\glsfielddef]
+\cs{glsfielddef}\marg{label}\marg{field}\marg{definition}
+\end{definition}
+This uses \cs{def} to change the value of the field (so it will be
+localised by any grouping).
+
+\begin{definition}[\DescribeMacro\glsfieldedef]
+\cs{glsfieldedef}\marg{label}\marg{field}\marg{definition}
+\end{definition}
+This uses \cs{edef} to change the value of the field (so it will be
+localised by any grouping). Any fragile commands contained in the
+\meta{definition} must be protected.
+
+\begin{definition}[\DescribeMacro\glsfieldgdef]
+\cs{glsfieldgdef}\marg{label}\marg{field}\marg{definition}
+\end{definition}
+This uses \cs{gdef} to change the value of the field.
+
+\begin{definition}[\DescribeMacro\glsfieldxdef]
+\cs{glsfieldxdef}\marg{label}\marg{field}\marg{definition}
+\end{definition}
+This uses \cs{xdef} to change the value of the field. Any fragile
+commands contained in the \meta{definition} must be protected.
+
+
+\chapter{Prefixes or Determiners}\label{sec:prefix}
+
+The \sty{glossaries-prefix} package that comes with the
+\styfmt{glossaries} package provides
+additional keys that can be used as prefixes. For example, if you
+want to specify determiners (such
+as \qt{a}, \qt{an} or \qt{the}). The \styfmt{glossaries-prefix}
+package automatically loads the \styfmt{glossaries} package and has
+the same package options.
+
+The extra keys for \ics{newglossaryentry} are as follows:
+\begin{description}
+\item[\gloskey{prefix}] The prefix associated with the
+\gloskey{text} key. This defaults to nothing.
+
+\item[\gloskey{prefixplural}] The prefix associated with the
+\gloskey{plural} key. This defaults to nothing.
+
+\item[\gloskey{prefixfirst}] The prefix associated with the
+\gloskey{first} key. If omitted, this defaults to the value of the
+\gloskey{prefix} key.
+
+\item[\gloskey{prefixfirstplural}] The prefix associated with the
+\gloskey{firstplural} key. If omitted, this defaults to the value of
+the \gloskey{prefixplural} key.
+\end{description}
+
+\begin{example}{Defining Determiners}{ex:determiners}
+Here's the start of my example document:
+\begin{verbatim}
+documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,acronym]{glossaries-prefix}
+\end{verbatim}
+Note that I've simply replaced \styfmt{glossaries} from previous
+sample documents with \styfmt{glossaries-prefix}. Now for a sample
+definition\footnote{Single letter words, such as \qt{a} and \qt{I}
+should typically not appear at the end of a line, hence the
+non-breakable space after \qt{a} in the \gloskey{prefix} field.}:
+\begin{verbatim}
+\newglossaryentry{sample}{name={sample},%
+ description={an example},%
+ prefix={a~},%
+ prefixplural={the\space}%
+}
+\end{verbatim}
+Note that I've had to explicitly insert a~space after the prefix.
+This allows for the possibility of prefixes that shouldn't have a~space,
+such as:
+\begin{verbatim}
+\newglossaryentry{oeil}{name={oeil},
+ plural={yeux},
+ description={eye},
+ prefix={l'},
+ prefixplural={les\space}}
+\end{verbatim}
+Where a space is required at the end of the prefix, you must use
+a~spacing command, such as \cs{space}, \verb*|\ | (backslash space) or
+\verb|~| due to the automatic spacing trimming performed in
+\meta{key}=\meta{value} options.
+
+The prefixes can also be used with acronyms. For example:
+\begin{verbatim}
+\newacronym
+ [%
+ prefix={an\space},prefixfirst={a~}%
+ ]{svm}{SVM}{support vector machine}
+\end{verbatim}
+\end{example}
+
+The \sty{glossaries-prefix} package provides convenient commands to
+use these prefixes with commands such as \ics{gls}. Note that the
+prefix is not considered part of the \gls{linktext}, so it's not
+included in the hyperlink (where hyperlinks are enabled). The
+options and any star or plus modifier are passed on to the \glslike\
+command. (See \sectionref{sec:glslink} for further details.)
+
+\begin{definition}[\DescribeMacro\pgls]
+\cs{pgls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This is inserts the value of the \gloskey{prefix} key (or
+\gloskey{prefixfirst} key, on \gls{firstuse}) in front of
+\cs{gls}\oarg{options}\marg{label}\oarg{insert}.
+
+\begin{definition}[\DescribeMacro\Pgls]
+\cs{Pgls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+If the \gloskey{prefix} key (or \gloskey{prefixfirst}, on
+\gls*{firstuse}) has been set, this displays the value of that key
+with the first letter converted to upper case followed by
+\cs{gls}\oarg{options}\marg{label}\oarg{insert}. If that key hasn't
+been set, this is equivalent to
+\ics{Gls}\oarg{options}\marg{label}\oarg{insert}.
+
+\begin{definition}[\DescribeMacro\PGLS]
+\cs{PGLS}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+As \cs{pgls} but converts the prefix to upper case and uses
+\ics{GLS} instead of \cs{gls}.
+
+\begin{definition}[\DescribeMacro\pglspl]
+\cs{pglspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+This is inserts the value of the \gloskey{prefixplural} key (or
+\gloskey{prefixfirstplural} key, on \gls{firstuse}) in front of
+\cs{glspl}\oarg{options}\marg{label}\oarg{insert}.
+
+\begin{definition}[\DescribeMacro\Pglspl]
+\cs{Pglspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+If the \gloskey{prefixplural} key (or \gloskey{prefixfirstplural}, on
+\gls*{firstuse}) has been set, this displays the value of that key
+with the first letter converted to upper case followed by
+\cs{glspl}\oarg{options}\marg{label}\oarg{insert}. If that key hasn't
+been set, this is equivalent to
+\ics{Glspl}\oarg{options}\marg{label}\oarg{insert}.
+
+\begin{definition}[\DescribeMacro\PGLSpl]
+\cs{PGLSpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+As \cs{pglspl} but converts the prefix to upper case and uses
+\ics{GLSpl} instead of \cs{glspl}.
+
+\begin{example}{Using Prefixes}{ex:prefixes}
+Continuing from Example~\ref{ex:determiners}, now that I've defined
+my entries, I~can use them in the text via the above commands:
+\begin{verbatim}
+First use: \pgls{svm}. Next use: \pgls{svm}.
+Singular: \pgls{sample}, \pgls{oeil}.
+Plural: \pglspl{sample}, \pglspl{oeil}.
+\end{verbatim}
+which produces:
+\begin{quote}
+First use: a~support vector machine (SVM). Next
+use: an SVM.
+Singular: a~sample, l'oeil. Plural: the samples, les yeux.
+\end{quote}
+For a complete document, see \samplefile{-prefix}.
+\end{example}
+
+This package also provides the commands described below, none of
+which perform any check to determine the entry's existence.
+
+\begin{definition}[\DescribeMacro\ifglshasprefix]
+\cs{ifglshasprefix}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+Does \meta{true part} if the entry identified by \meta{label} has a
+non-empty value for the \gloskey{prefix} key.
+
+This package also provides the following commands:
+\begin{definition}[\DescribeMacro\ifglshasprefixplural]
+\cs{ifglshasprefixplural}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+Does \meta{true part} if the entry identified by \meta{label} has a
+non-empty value for the \gloskey{prefixplural} key.
+
+\begin{definition}[\DescribeMacro\ifglshasprefixfirst]
+\cs{ifglshasprefixfirst}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+Does \meta{true part} if the entry identified by \meta{label} has a
+non-empty value for the \gloskey{prefixfirst} key.
+
+\begin{definition}[\DescribeMacro\ifglshasprefixfirstplural]
+\cs{ifglshasprefixfirstplural}\marg{label}\marg{true part}\marg{false part}
+\end{definition}
+Does \meta{true part} if the entry identified by \meta{label} has a
+non-empty value for the \gloskey{prefixfirstplural} key.
+
+\begin{definition}[\DescribeMacro\glsentryprefix]
+\cs{glsentryprefix}\marg{label}
+\end{definition}
+Displays the value of the \gloskey{prefix} key for the entry given
+by \meta{label}.
+
+\begin{definition}[\DescribeMacro\glsentryprefixfirst]
+\cs{glsentryprefixfirst}\marg{label}
+\end{definition}
+Displays the value of the \gloskey{prefixfirst} key for the entry given
+by \meta{label}.
+
+\begin{definition}[\DescribeMacro\glsentryprefixplural]
+\cs{glsentryprefixplural}\marg{label}
+\end{definition}
+Displays the value of the \gloskey{prefixplural} key for the entry given
+by \meta{label}. (No check is performed to determine if the entry
+exists.)
+
+\begin{definition}[\DescribeMacro\glsentryprefixfirstplural]
+\cs{glsentryprefixfirstplural}\marg{label}
+\end{definition}
+Displays the value of the \gloskey{prefixfirstplural} key for the entry given
+by \meta{label}. (No check is performed to determine if the entry
+exists.)
+
+There are also variants that convert the first letter to upper
+case\footnote{The earlier caveats about initial non-Latin characters
+apply.}:
+\begin{definition}[\DescribeMacro\Glsentryprefix]
+\cs{Glsentryprefix}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro\Glsentryprefixfirst]
+\cs{Glsentryprefixfirst}\marg{label}
+\end{definition}
+\begin{definition}[\DescribeMacro\Glsentryprefixplural]
+\cs{Glsentryprefixplural}\marg{label}
+\end{definition}
+
+\begin{definition}[\DescribeMacro\Glsentryprefixfirstplural]
+\cs{Glsentryprefixfirstplural}\marg{label}
+\end{definition}
+
+\begin{important}
+As with analogous commands such as \ics{Glsentrytext}, these
+commands aren't expandable so can't be used in PDF bookmarks.
+\end{important}
+
+\begin{example}{Adding Determiner to Glossary Style}{ex:plist}
+You can use the above commands to define a new glossary style that
+uses the determiner. For example, the following style is a slight
+modification of the \glostyle{list} style that inserts the prefix
+before the name:
+\begin{verbatim}
+\newglossarystyle{plist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \Glsentryprefix{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+}
+\end{verbatim}
+\end{example}
+
+\chapter{Accessibility Support}\label{sec:accsupp}
+
+Limited accessibility support is provided by the accompanying
+\sty{glossaries-accsupp} package, but note that this package is
+experimental and it requires the \sty{accsupp} package
+which is also listed as experimental. This package defines
+additional keys that may be used when defining glossary entries.
+The keys are as follows:
+\begin{description}
+\item[{\gloskey{access}}] The replacement text corresponding to
+the \gloskey{name} key.
+
+\item[{\gloskey{textaccess}}] The replacement text corresponding
+to the \gloskey{text} key.
+
+\item[{\gloskey{firstaccess}}] The replacement text corresponding
+to the \gloskey{first} key.
+
+\item[{\gloskey{pluralaccess}}] The replacement text corresponding
+to the \gloskey{plural} key.
+
+\item[{\gloskey{firstpluralaccess}}] The replacement text corresponding
+to the \gloskey{firstplural} key.
+
+\item[{\gloskey{symbolaccess}}] The replacement text corresponding
+to the \gloskey{symbol} key.
+
+\item[{\gloskey{symbolpluralaccess}}] The replacement text corresponding
+to the \gloskey{symbolplural} key.
+
+\item[{\gloskey{descriptionaccess}}] The replacement text corresponding
+to the \gloskey{description} key.
+
+\item[{\gloskey{descriptionpluralaccess}}] The replacement text corresponding
+to the \gloskey{descriptionplural} key.
+
+\item[{\gloskey{longaccess}}] The replacement text corresponding to
+the \gloskey{long} key (used by \ics{newacronym}).
+
+\item[{\gloskey{shortaccess}}] The replacement text corresponding to
+the \gloskey{short} key (used by \ics{newacronym}).
+
+\item[{\gloskey{longpluralaccess}}] The replacement text corresponding to
+the \gloskey{longplural} key (used by \ics{newacronym}).
+
+\item[{\gloskey{shortpluralaccess}}] The replacement text corresponding to
+the \gloskey{shortplural} key (used by \ics{newacronym}).
+
+\end{description}
+For example:
+\begin{verbatim}
+\newglossaryentry{tex}{name={\TeX},description={Document
+preparation language},access={TeX}}
+\end{verbatim}
+Now \verb|\gls{tex}| will be equivalent to
+\begin{verbatim}
+\BeginAccSupp{ActualText=TeX}\TeX\EndAccSupp{}
+\end{verbatim}
+The sample file \samplefile{accsupp} illustrates the
+\sty{glossaries-accsupp} package.
+
+See \ifpdf section~\ref*{sec:code:accsupp} in \fi the documented code
+(\texttt{glossaries-code.pdf}) for further details. I~recommend
+that you also read the \sty{accsupp} documentation.
+
+\chapter{Troubleshooting}
+\label{sec:trouble}
+
+In addition to the sample files listed in \sectionref{sec:samples},
+the \styfmt{glossaries} package comes with some minimal example
+files, \texttt{minimalgls.tex}, \texttt{mwe-gls.tex},
+\texttt{mwe-acr.tex} and \texttt{mwe-acr-desc.tex}, which can be
+used for testing. These should be located in the \texttt{samples}
+subdirectory (folder) of the \styfmt{glossaries} documentation
+directory. The location varies according to your operating system
+and \TeX\ installation. For example, on my Linux partition it can
+be found in \texttt{/usr\slash local\slash texlive\slash
+2014\slash texmf-dist\slash doc\slash latex\slash glossaries/}.
+The \gls{makeglossariesgui} application can also be used to test for
+various problems.
+Further information on debugging \LaTeX\ code is available at
+\url{http://www.dickimaw-books.com/latex/minexample/}.
+
+If you have any problems, please first consult the
+\urlfootref{http://www.dickimaw-books.com/faqs/glossariesfaq.html}{\styfmt{glossaries} FAQ}. If that
+doesn't help, try posting your query to somewhere like the
+\texttt{comp.text.tex} newsgroup, the
+\urlfootref{http://www.latex-community.org/}{\LaTeX\ Community Forum} or
+\urlfootref{http://tex.stackexchange.com/}{\TeX\ on StackExchange}.
+Bug reports can be submitted via
+\urlfootref{http://www.dickimaw-books.com/bug-report.html}{my package bug report form}.
+
+\PrintIndex
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/glossaries.dtx b/macros/latex/contrib/glossaries/glossaries.dtx
new file mode 100644
index 0000000000..6da667da8b
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossaries.dtx
@@ -0,0 +1,39747 @@
+%\iffalse
+% glossaries.dtx generated using makedtx version 1.2 (c) Nicola Talbot
+% Command line args:
+% -setambles ".*\.perl=>\nopreamble\nopostamble"
+% -setambles ".*\.tex=>\nopreamble\nopostamble"
+% -setambles ".*\.xdy=>\nopreamble\nopostamble"
+% -src "glossaries\.sty\Z=>glossaries.sty"
+% -src "glossaries-prefix.sty\Z=>glossaries-prefix.sty"
+% -src "(glossary-.+)\.(sty)\Z=>\1.\2"
+% -src "(glossaries-compatible-207)\.(sty)\Z=>\1.\2"
+% -src "(glossaries-compatible-307)\.(sty)\Z=>\1.\2"
+% -src "(glossaries-accsupp)\.(sty)\Z=>\1.\2"
+% -src "(glossaries-babel)\.(sty)\Z=>\1.\2"
+% -src "(glossaries-polyglossia)\.(sty)\Z=>\1.\2"
+% -src "(minimalgls\.tex)\Z=>\1"
+% -src "(glossary-lipsum-examples\.tex)\Z=>\1"
+% -src "(example-glossaries-.*\.tex)\Z=>\1"
+% -src "(sample.*\.tex)\Z=>\1"
+% -src "(mwe.*\.tex)\Z=>\1"
+% -src "(samplexdy-mc.*\.xdy)\Z=>\1"
+% -src "(database.*\.tex)\Z=>\1"
+% -src "(.*\.perl)\Z=>\1"
+% -codetitle "Main Package Code"
+% -author "Nicola Talbot"
+% -macrocode ".*\.perl"
+% -macrocode ".*\.tex"
+% -macrocode ".*\.xdy"
+% -section "chapter"
+% -doc "glossaries-manual.tex"
+% -comment ".*\.perl"
+% -comment ".*\.tex"
+% -comment ".*\.xdy"
+% glossaries
+% Created on 2019/1/6 19:06
+%\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]{nlctdoc}
+
+\DeleteShortVerb{|}
+
+\iffalse
+glossaries-manual.tex is a stub file used by makedtx to create
+glossaries.dtx
+\fi
+
+\usepackage{alltt}
+\usepackage{pifont}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={glossaries.sty: LaTeX2e Package to Assist Generating Glossaries},
+ pdfkeywords={LaTeX,package,glossary,acronyms}]{hyperref}
+\usepackage[toc]{glossaries}
+
+\RecordChanges
+\setlength\IndexMin{100pt}
+
+\makeglossaries
+
+\renewcommand*{\main}[1]{\underline{\hyperpage{#1}}}
+\renewcommand*{\usage}[1]{\textit{\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},
+}
+
+\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}.
+ \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{GlsKey}{key}{glossary keys}
+\doxitem{Style}{style}{glossary styles}
+\doxitem{Counter}{counter}{glossary counters}
+\doxitem{AcrStyle}{acrstyle}{acronym styles}
+
+\setcounter{IndexColumns}{2}
+
+\CheckSum{19625}
+
+\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*{\glostyle}[1]{\textsf{#1}\index{glossary styles:>#1={\protect\ttfamily#1}|main}}
+
+
+\begin{document}
+\DocInput{glossaries.dtx}
+\end{document}
+%</driver>
+%\fi
+%\MakeShortVerb{"}
+%
+% \title{Documented Code For glossaries v4.42}
+% \author{Nicola L.C. Talbot\\[10pt]
+%Dickimaw Books\\
+%\url{http://www.dickimaw-books.com/}}
+%
+% \date{2019-01-06}
+% \maketitle
+%
+%This is the documented code for the \styfmt{glossaries} package.
+%This bundle comes with the following documentation:
+%\begin{description}
+%\item[\url{glossariesbegin.pdf}]
+%If you are a complete beginner, start with \qt{The glossaries
+%package: a guide for beginners}.
+%
+%\item[\url{glossary2glossaries.pdf}]
+%If you are moving over from the obsolete \sty{glossary} package,
+%read \qt{Upgrading from the glossary package to the
+%glossaries package}.
+%
+%\item[\url{glossaries-user.pdf}]
+%For the main user guide, read \qt{glossaries.sty v4.42:
+%\LaTeX2e\ Package to Assist Generating Glossaries}.
+%
+%\item[\url{mfirstuc-manual.pdf}]
+%The commands provided by the \sty{mfirstuc} package are briefly
+%described in \qt{mfirstuc.sty: uppercasing first letter}.
+%
+%\item[glossaries-code.pdf]
+%This document is for advanced users wishing to know more about the
+%inner workings of the \styfmt{glossaries} package.
+%
+%\item[INSTALL] Installation instructions.
+%
+%\item[CHANGES] Change log.
+%
+%\item[README] Package summary.
+%
+%\end{description}
+%
+%The user level commands described in the user manual
+%(glossaries-user.pdf) may be considered ``future-proof''. Even if
+%they become deprecated, they should still work for
+%old documents (although they may not work in a document that also
+%contains new commands introduced since the old commands were
+%deprecated, and you may need to specify a compatibility mode).
+%
+%The internal commands in \emph{this} document that aren't documented in the
+%\emph{user manual} should not be considered future-proof and are liable to
+%change. If you want a new user level command, you can post a feature
+%request at \url{http://www.dickimaw-books.com/feature-request.html}.
+%If you are a package writer wanting to integrate your package with
+%\styfmt{glossaries}, it's better to request a new user level command
+%than to hack these internals.
+%
+%\tableofcontents
+%
+%\StopEventually{%
+% \printglossaries
+% \PrintChanges
+% \PrintIndex
+%}
+%
+%
+%
+%\chapter{Main Package Code}
+%\iffalse
+% \begin{macrocode}
+%<*glossaries.sty>
+% \end{macrocode}
+%\fi
+%\label{sec:code}
+% \section{Package Definition}
+% This package requires \LaTeXe.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%\changes{4.18}{2015-09-09}{split mfirstuc into separate bundle}
+% Required packages:
+% \begin{macrocode}
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}[2006/11/18]
+\RequirePackage{mfirstuc}
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{Now requires textcase}
+% The \sty{textcase} package has much better case changing handling,
+% so use \cs{MakeTextUppercase} instead of \cs{MakeUppercase}
+% \begin{macrocode}
+\RequirePackage{textcase}
+\renewcommand*{\mfirstucMakeUppercase}{\MakeTextUppercase}%
+% \end{macrocode}
+% \begin{macrocode}
+\RequirePackage{xfor}
+% \end{macrocode}
+%\changes{3.04}{2012-11-18}{added datatool-base as a required
+%package}
+% \begin{macrocode}
+\RequirePackage{datatool-base}
+% \end{macrocode}
+%\changes{1.1}{2008-02-22}{amsgen now loaded (\cs{new@ifnextchar} needed)}
+% Need to use \cs{new@ifnextchar} instead of \cs{@ifnextchar} in
+% commands that have a final optional argument (such as \ics{gls})
+% so require \isty{amsgen}.
+% Thanks to Morten~H\o gholm for suggesting this. (This has
+% replaced using the \sty{xspace} package.)
+% \begin{macrocode}
+\RequirePackage{amsgen}
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{etoolbox now loaded}
+% As from v3.0, now loading \sty{etoolbox}:
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+% \end{macrocode}
+%\changes{3.04}{2012-11-18}{Added check for doc package}
+% Check if \sty{doc} has been loaded.
+%\begin{macro}{\if@gls@docloaded}
+% \begin{macrocode}
+\newif\if@gls@docloaded
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\@ifpackageloaded{doc}%
+{%
+ \@gls@docloadedtrue
+}%
+{%
+ \@ifclassloaded{nlctdoc}{\@gls@docloadedtrue}{\@gls@docloadedfalse}%
+}
+\if@gls@docloaded
+% \end{macrocode}
+% \cs{doc} has been loaded, so some modifications need to be made to
+% ensure both packages can work together. The amount of conflict has
+% been reduced as from v4.11 and no longer involves patching
+% internal commands.
+%
+%\cs{PrintChanges} needs to use \sty{doc}'s version of
+%\env{theglossary}, so save that.
+%\begin{macro}{\glsorg@theglossary}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+ \let\glsorg@theglossary\theglossary
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsorg@endtheglossary}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+ \let\glsorg@endtheglossary\endtheglossary
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\PrintChanges}
+% Now redefine \cs{PrintChanges} so that it uses the original
+% \env{theglossary} environment.
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+ \let\glsorg@PrintChanges\PrintChanges
+ \renewcommand{\PrintChanges}{%
+ \begingroup
+ \let\theglossary\glsorg@theglossary
+ \let\endtheglossary\glsorg@endtheglossary
+ \glsorg@PrintChanges
+ \endgroup
+ }
+% \end{macrocode}
+%\end{macro}
+% End of doc stuff.
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% \section{Package Options}\label{sec:pkgopt}
+%\begin{option}{debug}
+%\changes{4.24}{2016-05-27}{new}
+% Switch on debug mode. This will also cancel the \pkgopt{nowarn}
+% option. This is now a choice key.
+%\changes{4.41}{2018-07-23}{changed \cs{val} and \cs{nr} to
+%\cs{gls@debug@val} and \cs{gls@debug@nr}}
+% \begin{macrocode}
+\newif\if@gls@debug
+\define@choicekey{glossaries.sty}{debug}[\gls@debug@val\gls@debug@nr]%
+ {true,false,showtargets}[true]{%
+ \ifcase\gls@debug@nr\relax
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \let\@glsshowtarget\@gobble
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \or
+ \@gls@debugfalse
+ \let\@glsshowtarget\@gobble
+ \PackageInfo{glossaries}{debug mode OFF}%
+ \or
+ \@gls@debugtrue
+ \renewcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{##1}%
+ }%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{##1}%
+ }%
+ \PackageInfo{glossaries}{debug mode ON (nowarn option disabled)}%
+ \renewcommand{\@glsshowtarget}{\glsshowtarget}%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%\begin{macro}{\glsshowtarget}
+%\changes{4.32}{2017-08-24}{new}
+%\changes{4.34}{2017-11-03}{modified to check for math mode and inner}
+%If \pkgopt[showtargets]{debug}, show the hyperlink target name in the
+%margin.
+% \begin{macrocode}
+\newcommand*{\glsshowtarget}[1]{%
+ \ifmmode
+ \nfss@text{\ttfamily\small [#1]}%
+ \else
+ \ifinner
+ \texttt{\small [#1]}%
+ \else
+ \marginpar{\texttt{\small #1}}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsshowtarget}
+%\changes{4.32}{2017-08-24}{new}
+%\pkgopt[showtargets]{debug} will redefine this.
+% \begin{macrocode}
+\newcommand*{\@glsshowtarget}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%Determine what to do if the \gloskey{see} key is used before
+%\cs{makeglossaries}. The default is to produce an error.
+%\begin{macro}{\@gls@see@noindex}
+%\changes{4.24}{2016-05-27}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@see@noindex}{%
+ \PackageError{glossaries}%
+ {`\gls@xr@key' key may only be used after \string\makeglossaries\space
+ or \string\makenoidxglossaries\space (or move
+ \string\newglossaryentry\space
+ definitions into the preamble)}%
+ {You must use \string\makeglossaries\space
+ or \string\makenoidxglossaries\space before defining
+ any entries that have a `\gls@xr@key' key. It may
+ be that the `see' key has been written to the .glsdefs
+ file from the previous run, in which case you need to
+ move your definitions
+ to the preamble if you don't want to use
+ \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{seenoindex}
+%\changes{4.24}{2016-05-27}{new}
+%\changes{4.41}{2018-07-23}{changed \cs{val} and \cs{nr} to
+%\cs{gls@seenoindex@val} and \cs{gls@seenoindex@nr}}
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{seenoindex}%
+ [\gls@seenoindex@val\gls@seenoindex@nr]{error,warn,ignore}{%
+ \ifcase\gls@seenoindex@nr
+ \renewcommand*{\@gls@see@noindex}{%
+ \PackageError{glossaries}%
+ {`\gls@xr@key' key may only be used after \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+ {You must use \string\makeglossaries\space
+ or \string\makenoidxglossaries\space before defining
+ any entries that have a `\gls@xr@key' key}%
+ }%
+ \or
+ \renewcommand*{\@gls@see@noindex}{%
+ \GlossariesWarning{`\gls@xr@key' key ignored}%
+ }%
+ \or
+ \renewcommand*{\@gls@see@noindex}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{toc}
+% The \pkgopt{toc} package option will add the glossaries
+% to the table of contents. This is a boolean key, if the
+% value is omitted it is taken to be true.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{toc}[true]{}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{numberline}
+%\changes{1.1}{2008-02-22}{numberline option added}
+% The \pkgopt{numberline} package option adds \cs{numberline} to
+% \cs{addcontentsline}. Note that this option only has an effect
+% if used in with \pkgopt[true]{toc}.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{numberline}[true]{}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@@glossarysec}
+% The sectional unit used to start the glossary is stored in
+% \cs{@@glossarysec}. If chapters are defined, this
+% is initialised to \texttt{chapter}, otherwise it is
+% initialised to \texttt{section}.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{chapter}%
+ {\newcommand*{\@@glossarysec}{section}}%
+ {\newcommand*{\@@glossarysec}{chapter}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{section}
+% The \pkgopt{section} key can be used to set the sectional unit.
+% If no unit is specified, use \texttt{section} as the default.
+% The starred form of the named sectional unit will be used.
+% If you want some other way to start the glossary section (e.g.\
+% a numbered section) you will have to redefined
+% \ics{glossarysection}.
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{section}{part,chapter,section,%
+subsection,subsubsection,paragraph,subparagraph}[section]{%
+ \renewcommand*{\@@glossarysec}{#1}}
+% \end{macrocode}
+%\end{option}
+%
+% Determine whether or not to use numbered sections.
+%\begin{macro}{\@@glossarysecstar}
+% \begin{macrocode}
+\newcommand*{\@@glossarysecstar}{*}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@@glossaryseclabel}
+% \begin{macrocode}
+\newcommand*{\@@glossaryseclabel}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsautoprefix}
+% Prefix to add before label if automatically generated:
+%\changes{1.14}{2008-06-17}{new}
+% \begin{macrocode}
+\newcommand*{\glsautoprefix}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{numberedsection}
+%\changes{1.1}{2008-02-22}{numberedsection package option added}
+%\changes{4.02}{2013-12-05}{added nameref option}
+%\changes{4.41}{2018-07-23}{changed \cs{val} and \cs{nr} to
+%\cs{gls@numberedsection@val} and \cs{gls@numberedsection@nr}}
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{numberedsection}%
+ [\gls@numberedsection@val\gls@numberedsection@nr]{%
+false,nolabel,autolabel,nameref}[nolabel]{%
+ \ifcase\gls@numberedsection@nr\relax
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \label{\glsautoprefix\@glo@type}}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{\glsautoprefix\@glo@type}}%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%
+% The default glossary style is stored in
+% \cs{@glossary@default@style}. This is initialised to
+% \texttt{list}. (The \glostyle{list} style is
+% defined in the accompanying \isty{glossary-list} package
+% described in \autoref{sec:code:styles}.) Note that the
+% \glostyle{list} style is incompatible with \sty{classicthesis}
+% so change the default to \glostyle{index} if that package has been
+% loaded.
+%\begin{macro}{\@glossary@default@style}
+%\changes{4.26}{2016-10-12}{added check for classicthesis}
+% \begin{macrocode}
+\@ifpackageloaded{classicthesis}
+{\newcommand*{\@glossary@default@style}{index}}
+{\newcommand*{\@glossary@default@style}{list}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{style}
+% The default glossary style can be changed using the \pkgopt{style}
+% package option. The value can be the name of any
+% defined glossary style. The glossary style is set at the beginning
+% of the document, so you can still use the \pkgopt{style} key to
+% set a style that is defined in another package. This package comes
+% with some predefined styles that are defined in
+% \autoref{sec:code:styles}.
+%\changes{4.31}{2017-09-10}{changed \cs{renewcommand} to \cs{def}}
+%This now uses \cs{def} instead of \cs{renewcommand} as
+% \cs{@glossary@default@style} may have been set to \cs{relax}.
+% \begin{macrocode}
+\define@key{glossaries.sty}{style}{%
+ \def\@glossary@default@style{#1}%
+}
+% \end{macrocode}
+%\end{option}
+%
+% Each \cs{DeclareOptionX} needs a corresponding \cs{DeclareOption}
+% so that it can be passed as a document class option, so define a
+% command that will implement both.
+%\changes{4.01}{2013-11-16}{fixed non-value options so that they can be passed to
+%document class}
+%\begin{macro}{\@gls@declareoption}
+% \begin{macrocode}
+\newcommand*{\@gls@declareoption}[2]{%
+ \DeclareOptionX{#1}{#2}%
+ \DeclareOption{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Each entry within a given glossary will have an associated
+% number list. By default, this refers to the page numbers on
+% which that entry has been used, but it can also refer to any counter
+% used in the document (such as the section or equation counters).
+% The default number list format displays the number list ``as is'':
+%\begin{macro}{\glossaryentrynumbers}
+% \begin{macrocode}
+\newcommand*{\glossaryentrynumbers}[1]{#1\gls@save@numberlist{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{nonumberlist}
+% Note that the entire number list for a given entry will be
+% passed to \cs{glossaryentrynumbers} so any font changes
+% will also be applied to the delimiters.
+% The \pkgopt{nonumberlist} package option suppresses the
+% number lists (this simply redefines
+% \cs{glossaryentrynumbers} to ignores its argument).
+% \begin{macrocode}
+\@gls@declareoption{nonumberlist}{%
+ \renewcommand*{\glossaryentrynumbers}[1]{\gls@save@numberlist{#1}}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{savenumberlist}
+%\changes{3.02}{2012-05-21}{new}
+% Provide means to store the number list for entries.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{savenumberlist}[true]{}
+\glssavenumberlistfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@glo@seeautonumberlist}
+% \begin{macrocode}
+\newcommand*\@glo@seeautonumberlist{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{seeautonumberlist}
+% Automatically activates number list for entries containing the
+% \gloskey{see} key.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\@gls@declareoption{seeautonumberlist}{%
+ \renewcommand*{\@glo@seeautonumberlist}{%
+ \def\@glo@prefix{\glsnextpages}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{esclocations}
+% When using \gls{makeindex} or \gls{xindy}, the locations may need
+% to be adjusted to ensure they're in a format that's allowed by the
+% indexing application. This involves a bit of hackery and isn't
+% needed if the locations are all guaranteed to be in the correct
+% form (or if the user is prepared to post-process the glossary file before
+% calling the relevant indexing application) so \pkgopt[false]{esclocations}
+% will switch off this mechanism allowing for a faster and more
+% stable approach.
+%\changes{4.33}{2017-09-20}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{esclocations}[true]{}
+\glsesclocationstrue
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@loadlong}
+%\changes{1.18}{2009-01-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@loadlong}{\RequirePackage{glossary-long}}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{nolong}
+%\changes{1.18}{2009-01-14}{new}
+% This option prevents \isty{glossary-long} from being loaded.
+% This means that the glossary styles that use the
+% \env{longtable} environment will not be available. This option
+% is provided to reduce overhead caused by loading unrequired
+% packages.
+% \begin{macrocode}
+\@gls@declareoption{nolong}{\renewcommand*{\@gls@loadlong}{}}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@loadsuper}
+%\changes{1.18}{2009-01-14}{new}
+% The \isty{glossary-super} package isn't loaded if
+% \isty{supertabular} isn't installed.
+% \begin{macrocode}
+\IfFileExists{supertabular.sty}{%
+ \newcommand*{\@gls@loadsuper}{\RequirePackage{glossary-super}}}{%
+ \newcommand*{\@gls@loadsuper}{}}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{nosuper}
+%\changes{1.18}{2009-01-14}{new}
+% This option prevents \isty{glossary-super} from being loaded.
+% This means that the glossary styles that use the
+% \env{supertabular} environment will not be available. This option
+% is provided to reduce overhead caused by loading unrequired
+% packages.
+% \begin{macrocode}
+\@gls@declareoption{nosuper}{\renewcommand*{\@gls@loadsuper}{}}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@loadlist}
+%\changes{1.18}{2009-01-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@loadlist}{\RequirePackage{glossary-list}}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{nolist}
+%\changes{1.18}{2009-01-14}{new}
+% This option prevents \isty{glossary-list} from being loaded
+% (to reduce overheads if required). Naturally, the styles defined
+% in \isty{glossary-list} will not be available if this option
+% is used. If the style is still set to \glostyle{list}, the default
+% must be set to \cs{relax}.
+%\changes{4.31}{2017-08-10}{added check for \qt{list} style}
+% \begin{macrocode}
+\@gls@declareoption{nolist}{%
+ \renewcommand*{\@gls@loadlist}{%
+ \ifdefstring{\@glossary@default@style}{list}%
+ {\let\@glossary@default@style\relax}%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@loadtree}
+%\changes{1.18}{2009-01-14}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@loadtree}{\RequirePackage{glossary-tree}}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{notree}
+%\changes{1.18}{2009-01-14}{new}
+% This option prevents \isty{glossary-tree} from being loaded
+% (to reduce overheads if required). Naturally, the styles defined
+% in \isty{glossary-tree} will not be available if this option
+% is used.
+% \begin{macrocode}
+\@gls@declareoption{notree}{\renewcommand*{\@gls@loadtree}{}}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{nostyles}
+%\changes{1.18}{2009-01-14}{new}
+% Provide an option to suppress all the predefined styles (in the
+% event that the user has custom styles that are not dependent
+% on the predefined styles).
+% \begin{macrocode}
+\@gls@declareoption{nostyles}{%
+ \renewcommand*{\@gls@loadlong}{}%
+ \renewcommand*{\@gls@loadsuper}{}%
+ \renewcommand*{\@gls@loadlist}{}%
+ \renewcommand*{\@gls@loadtree}{}%
+ \let\@glossary@default@style\relax
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glspostdescription}
+% The description terminator is given by \cs{glspostdescription}
+% (except for the 3 and 4 column styles). This is a full stop
+% by default.
+%\changes{3.07}{2013-07-05}{Added spacefactor code}
+% The spacefactor is adjusted in case the description ends with an
+% upper case letter. (Patch provided by Michael Pock.)
+% \begin{macrocode}
+\newcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{nopostdot}
+% Boolean option to suppress post description dot
+%\changes{3.03}{2012/09/21}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{nopostdot}[true]{}
+\glsnopostdotfalse
+% \end{macrocode}
+%\end{option}
+%\begin{option}{nogroupskip}
+% Boolean option to suppress vertical space between groups in the
+% pre-defined styles.
+%\changes{3.03}{2012/09/21}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{nogroupskip}[true]{}
+\glsnogroupskipfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{ucmark}
+% Boolean option to determine whether or not to use
+% use upper case in definition of \ics{glsglossarymark}
+%\changes{3.02}{2012-05-21}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{ucmark}[true]{}
+% \end{macrocode}
+%\changes{3.13a}{2013-11-05}{added check for memoir}
+% \begin{macrocode}
+\@ifclassloaded{memoir}
+{%
+ \glsucmarktrue
+}%
+{%
+ \glsucmarkfalse
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{counter}{glossaryentry}
+%\changes{3.0}{2011-04-02}{new}
+% If the \pkgopt{entrycounter} package option has been used, define
+% a counter to number each level~0 entry.
+% This is now defined by an internal command for consistency.
+%\end{counter}
+%
+%\begin{macro}{\@gls@define@glossaryentrycounter}
+%\changes{4.38}{2018-05-10}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@define@glossaryentrycounter}{%
+ \ifglsentrycounter
+% \end{macrocode}
+%\changes{4.38}{2018-05-10}{added check for existence of glossaryentry counter}
+%Define the \ctr{glossaryentry} counter if it doesn't already exist.
+% \begin{macrocode}
+ \ifundef\c@glossaryentry
+ {%
+ \ifx\@gls@counterwithin\@empty
+ \newcounter{glossaryentry}%
+ \else
+ \newcounter{glossaryentry}[\@gls@counterwithin]%
+ \fi
+ \def\theHglossaryentry{\currentglossary.\theglossaryentry}%
+ }%
+ {}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{entrycounter}
+% Defines a counter that can be used in the standard glossary styles
+% to number each (main) entry. If true, this will define a counter called
+% \ctr{glossaryentry}.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{entrycounter}[true]{}
+\glsentrycounterfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{counterwithin}
+% This option can be used to set a parent counter for
+% \ctr{glossaryentry}. This option automatically sets
+% \pkgopt[true]{entrycounter}.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\define@key{glossaries.sty}{counterwithin}{%
+ \renewcommand*{\@gls@counterwithin}{#1}%
+ \glsentrycountertrue
+ \@gls@define@glossaryentrycounter
+}
+% \end{macrocode}
+%\end{option}
+%\begin{macro}{\@gls@counterwithin}
+%\changes{3.0}{2011-04-02}{new}
+% The default value is no parent counter:
+% \begin{macrocode}
+\newcommand*{\@gls@counterwithin}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{counter}{glossarysubentry}
+%\changes{3.0}{2011-04-02}{new}
+% If the \pkgopt{subentrycounter} package option has been used, define
+% a counter to number each level~1 entry. This is now defined by an
+% internal command for consistency.
+%\end{counter}
+%\begin{macro}{\@gls@define@glossarysubentrycounter}
+%\changes{4.38}{2018-05-10}{new}
+% \begin{macrocode}
+\newcommand{\@gls@define@glossarysubentrycounter}{%
+% \end{macrocode}
+%Check if counter already defined.
+% \begin{macrocode}
+ \ifundef\c@glossarysubentry
+ {%
+ \ifglssubentrycounter
+ \ifglsentrycounter
+ \newcounter{glossarysubentry}[glossaryentry]%
+ \else
+ \newcounter{glossarysubentry}%
+ \fi
+% \end{macrocode}
+%\changes{4.38}{2018-05-10}{prepended \cs{currentglossary}\texttt{.} to
+%\cs{theHglossarysubentry} and removed spurious eol space}
+%As with \cs{theHglossaryentry}, this starts with
+%\cs{currentglossary}\texttt{.} to help avoid duplicate hyper targets.
+% \begin{macrocode}
+ \def\theHglossarysubentry{\currentglossary.\currentglssubentry.\theglossarysubentry}%
+ \fi
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{subentrycounter}
+% Define a counter that can be used in the standard glossary styles
+% to number each level~1 entry. If true, this will define a counter called
+% \ctr{glossarysubentry}.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{subentrycounter}[true]{}
+\glssubentrycounterfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@glo@default@sorttype}
+% Initialise default sort for \cs{printnoidxglossary}
+% \begin{macrocode}
+\newcommand*{\@glo@default@sorttype}{standard}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{sort}
+%\changes{3.0}{2011-04-02}{new}
+% Define the sort method: \pkgopt[standard]{sort} (default),
+% \pkgopt[def]{sort} (order of definition) or
+% \pkgopt[use]{sort} (order of use). If no indexing required, use
+% \pkgopt[none]{sort}.
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{sort}{standard,def,use,none}{%
+ \renewcommand*{\@glo@default@sorttype}{#1}%
+ \csname @gls@setupsort@#1\endcsname
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsprestandardsort}
+%\changes{3.13a}{2013-11-05}{new}
+%\begin{definition}
+%\cs{glsprestandardsort}\marg{sort cs}\marg{type}\marg{label}
+%\end{definition}
+% Allow user to hook into sort mechanism. The first argument
+% \meta{sort cs} is the temporary control sequence containing the
+% sort value before it has been sanitized and had
+% \gls{makeindex}\slash\gls{xindy} special characters escaped.
+% \begin{macrocode}
+\newcommand*{\glsprestandardsort}[3]{%
+ \glsdosanitizesort
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@check@sortallowed}
+%\changes{4.30}{2017-06-11}{new}
+% \begin{macrocode}
+\newcommand*{\@glo@check@sortallowed}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setupsort@standard}
+%\changes{3.0}{2011-04-02}{new}
+% Set up the macros for default sorting.
+% \begin{macrocode}
+\newcommand*{\@gls@setupsort@standard}{%
+% \end{macrocode}
+% Store entry information when it's defined.
+% \begin{macrocode}
+ \def\do@glo@storeentry{\@glo@storeentry}%
+% \end{macrocode}
+% No count register required for standard sort.
+% \begin{macrocode}
+ \def\@gls@defsortcount##1{}%
+% \end{macrocode}
+% Sort according to sort key (\cs{@glo@sort}) if provided otherwise
+% sort according to the entry's name (\cs{@glo@name}).
+% (First argument glossary type, second argument entry label.)
+% \begin{macrocode}
+ \def\@gls@defsort##1##2{%
+ \ifx\@glo@sort\@glsdefaultsort
+ \let\@glo@sort\@glo@name
+ \fi
+% \end{macrocode}
+%\changes{3.03}{2012/09/21}{used \cs{@gls@sanitizesort}}
+%\changes{3.13a}{2013-11-05}{moved \cs{@gls@santizesort} to
+%\cs{glsprestandardsort}}
+% \begin{macrocode}
+ \let\glsdosanitizesort\@gls@sanitizesort
+ \glsprestandardsort{\@glo@sort}{##1}{##2}%
+ \expandafter\protected@xdef\csname glo@##2@sort\endcsname{\@glo@sort}%
+ }%
+% \end{macrocode}
+% Don't need to do anything when the entry is used.
+% \begin{macrocode}
+ \def\@gls@setsort##1{}%
+% \end{macrocode}
+% This sort option is allowed with \cs{makeglossaries} and
+% \cs{makenoidxglossaries}.
+% \begin{macrocode}
+ \let\@glo@check@sortallowed\@gobble
+}
+% \end{macrocode}
+% Set standard sort as the default:
+% \begin{macrocode}
+\@gls@setupsort@standard
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssortnumberfmt}
+%\changes{3.0}{2011-04-02}{new}
+% Format the number used as the sort key by \pkgopt[def]{sort} and
+% \pkgopt[use]{sort}. Defaults to six digit numbering.
+% \begin{macrocode}
+\newcommand*\glssortnumberfmt[1]{%
+ \ifnum#1<100000 0\fi
+ \ifnum#1<10000 0\fi
+ \ifnum#1<1000 0\fi
+ \ifnum#1<100 0\fi
+ \ifnum#1<10 0\fi
+ \number#1%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setupsort@def}
+%\changes{3.0}{2011-04-02}{new}
+% Set up the macros for order of definition sorting.
+% \begin{macrocode}
+\newcommand*{\@gls@setupsort@def}{%
+% \end{macrocode}
+% Store entry information when it's defined.
+% \begin{macrocode}
+ \def\do@glo@storeentry{\@glo@storeentry}%
+% \end{macrocode}
+% Defined count register associated with the glossary.
+% \begin{macrocode}
+ \def\@gls@defsortcount##1{%
+ \expandafter\global
+ \expandafter\newcount\csname glossary@##1@sortcount\endcsname
+ }%
+% \end{macrocode}
+% Increment count register associated with the glossary and use as
+% the sort key.
+% \begin{macrocode}
+ \def\@gls@defsort##1##2{%
+% \end{macrocode}
+% It may be that the sort order was changed after the glossary was
+% defined, so check if the count register has been defined.
+%\changes{4.30}{2017-06-11}{added check for register}
+% \begin{macrocode}
+ \ifcsundef{glossary@##1@sortcount}%
+ {\@gls@defsortcount{##1}}%
+ {}%
+ \expandafter\global\expandafter
+ \advance\csname glossary@##1@sortcount\endcsname by 1\relax
+ \expandafter\protected@xdef\csname glo@##2@sort\endcsname{%
+ \expandafter\glssortnumberfmt
+ {\csname glossary@##1@sortcount\endcsname}}%
+ }%
+% \end{macrocode}
+% Don't need to do anything when the entry is used.
+% \begin{macrocode}
+ \def\@gls@setsort##1{}%
+% \end{macrocode}
+% This sort option is allowed with \cs{makeglossaries} and
+% \cs{makenoidxglossaries}.
+% \begin{macrocode}
+ \let\@glo@check@sortallowed\@gobble
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setupsort@use}
+%\changes{3.0}{2011-04-02}{new}
+% Set up the macros for order of use sorting.
+% \begin{macrocode}
+\newcommand*{\@gls@setupsort@use}{%
+% \end{macrocode}
+% Don't store entry information when it's defined.
+% \begin{macrocode}
+ \let\do@glo@storeentry\@gobble
+% \end{macrocode}
+% Defined count register associated with the glossary.
+% \begin{macrocode}
+ \def\@gls@defsortcount##1{%
+ \expandafter\global
+ \expandafter\newcount\csname glossary@##1@sortcount\endcsname
+ }%
+% \end{macrocode}
+% Initialise the sort key to empty.
+% \begin{macrocode}
+ \def\@gls@defsort##1##2{%
+ \expandafter\gdef\csname glo@##2@sort\endcsname{}%
+ }%
+% \end{macrocode}
+% If the sort key hasn't been set, increment the counter associated
+% with the glossary and set the sort key.
+% \begin{macrocode}
+ \def\@gls@setsort##1{%
+% \end{macrocode}
+% Get the parent, if one exists
+% \begin{macrocode}
+ \edef\@glo@parent{\csname glo@##1@parent\endcsname}%
+% \end{macrocode}
+% Set the information for the parent entry if not already done.
+% \begin{macrocode}
+ \ifx\@glo@parent\@empty
+ \else
+ \expandafter\@gls@setsort\expandafter{\@glo@parent}%
+ \fi
+% \end{macrocode}
+% Set index information for this entry
+% \begin{macrocode}
+ \edef\@glo@type{\csname glo@##1@type\endcsname}%
+ \edef\@gls@tmp{\csname glo@##1@sort\endcsname}%
+ \ifx\@gls@tmp\@empty
+ \expandafter\global\expandafter
+ \advance\csname glossary@\@glo@type @sortcount\endcsname by 1\relax
+ \expandafter\protected@xdef\csname glo@##1@sort\endcsname{%
+ \expandafter\glssortnumberfmt
+ {\csname glossary@\@glo@type @sortcount\endcsname}}%
+ \@glo@storeentry{##1}%
+ \fi
+ }%
+% \end{macrocode}
+% This sort option is allowed with \cs{makeglossaries} and
+% \cs{makenoidxglossaries}.
+% \begin{macrocode}
+ \let\@glo@check@sortallowed\@gobble
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setupsort@none}
+%\changes{4.30}{2017-06-11}{new}
+% Slightly improves efficiency in the event that no indexing is
+% required.
+% \begin{macrocode}
+\newcommand*{\@gls@setupsort@none}{%
+% \end{macrocode}
+% Don't store entry index information.
+% \begin{macrocode}
+ \def\do@glo@storeentry##1{}%
+% \end{macrocode}
+% No count register required for standard sort.
+% \begin{macrocode}
+ \def\@gls@defsortcount##1{}%
+% \end{macrocode}
+% Don't modify sort value.
+% \begin{macrocode}
+ \def\@gls@defsort##1##2{%
+ \expandafter\global\expandafter\let\csname glo@##2@sort\endcsname\@glo@sort
+ }%
+% \end{macrocode}
+% Don't need to do anything when the entry is used.
+% \begin{macrocode}
+ \def\@gls@setsort##1{}%
+% \end{macrocode}
+% This sort option isn't allowed with \cs{makeglossaries} or
+% \cs{makenoidxglossaries}.
+% \begin{macrocode}
+ \renewcommand\@glo@check@sortallowed[1]{\PackageError{glossaries}
+ {Option sort=none not allowed with \string##1}%
+ {(Use sort=def instead)}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdefmain}
+%\changes{2.01}{2009 May 30}{new}
+%\changes{3.04}{2012-11-18}{added check for doc package}
+% Define the main glossary. This will be the first glossary to
+% be displayed when using \ics{printglossaries}. The default
+% extensions conflict if used with \sty{doc}, so provide different
+% extensions if \sty{doc} loaded. (If these extensions are
+% inappropriate, use \pkgopt{nomain} and manually define the main
+% glossary with the desired extensions.)
+% \begin{macrocode}
+\newcommand*{\glsdefmain}{%
+ \if@gls@docloaded
+ \newglossary[glg2]{main}{gls2}{glo2}{\glossaryname}%
+ \else
+ \newglossary{main}{gls}{glo}{\glossaryname}%
+ \fi
+% \end{macrocode}
+% Define hook to set the toc title when \sty{translator} is in use.
+%\changes{4.06}{2014-03-12}{added hook to set toc title}
+% \begin{macrocode}
+ \newcommand*{\gls@tr@set@main@toctitle}{%
+ \translatelet{\glossarytoctitle}{Glossary}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Keep track of the default glossary. This is initialised to
+% the main glossary, but can be changed if for some reason
+% you want to make a secondary glossary the main glossary. This
+% affects any commands that can optionally take a glossary name
+% as an argument (or as the value of the
+% \gloskey{type}\igloskey[printglossary]{type} key in
+%a key-value list). This was mainly done so that
+% \ics{loadglsentries} can temporarily change
+% \cs{glsdefaulttype} while it loads a file containing
+% new glossary entries (see \autoref{sec:load}).
+%\begin{macro}{\glsdefaulttype}
+% \begin{macrocode}
+\newcommand*{\glsdefaulttype}{main}
+% \end{macrocode}
+%\end{macro}
+% Keep track of which glossary the acronyms are in. This is
+% initialised to \cs{glsdefaulttype}, but is changed by
+% the \pkgopt{acronym} package option.
+%\begin{macro}{\acronymtype}
+% \begin{macrocode}
+\newcommand*{\acronymtype}{\glsdefaulttype}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{nomain}
+%\changes{2.01}{2009 May 30}{added nomain package option}
+% The \pkgopt{nomain} option suppress the creation of the main
+% glossary.
+% \begin{macrocode}
+\@gls@declareoption{nomain}{%
+ \let\glsdefaulttype\relax
+ \renewcommand*{\glsdefmain}{}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{acronym}
+% The \pkgopt{acronym} option sets an associated conditional
+% which is used in \autoref{sec:code:acronym} to determine whether
+% or not to define a separate glossary for acronyms.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{acronym}[true]{%
+ \ifglsacronym
+ \renewcommand{\@gls@do@acronymsdef}{%
+ \DeclareAcronymList{acronym}%
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}%
+ \renewcommand*{\acronymtype}{acronym}%
+% \end{macrocode}
+% Define hook to set the toc title when \sty{translator} is in use.
+%\changes{4.06}{2014-03-12}{added hook to set toc title}
+% \begin{macrocode}
+ \newcommand*{\gls@tr@set@acronym@toctitle}{%
+ \translatelet{\glossarytoctitle}{Acronyms}%
+ }%
+ }%
+ \else
+ \let\@gls@do@acronymsdef\relax
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%\begin{macro}{\printacronyms}
+% Define \cs{printacronyms} at the start of the document if
+% \pkgopt{acronym} is set and compatibility mode isn't on and
+% \cs{printacronyms} hasn't already been defined.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \ifglsacronym
+ \ifbool{glscompatible-3.07}%
+ {}%
+ {%
+ \providecommand*{\printacronyms}[1][]{%
+ \printglossary[type=\acronymtype,#1]}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@do@acronymsdef}
+% Set default value
+% \begin{macrocode}
+\newcommand*{\@gls@do@acronymsdef}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{acronyms}
+%\changes{3.14a}{2013-11-12}{new}
+% Provide a synonym for \pkgopt[true]{acronym} that can be passed
+% via the document class options.
+% \begin{macrocode}
+\@gls@declareoption{acronyms}{%
+ \glsacronymtrue
+ \renewcommand{\@gls@do@acronymsdef}{%
+ \DeclareAcronymList{acronym}%
+ \newglossary[alg]{acronym}{acr}{acn}{\acronymname}%
+ \renewcommand*{\acronymtype}{acronym}%
+% \end{macrocode}
+% Define hook to set the toc title when \sty{translator} is in use.
+%\changes{4.06}{2014-03-12}{added hook to set toc title}
+% \begin{macrocode}
+ \newcommand*{\gls@tr@set@acronym@toctitle}{%
+ \translatelet{\glossarytoctitle}{Acronyms}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%\begin{macro}{\@glsacronymlists}
+%\changes{2.04}{2009-11-10}{new}
+% Comma-separated list of glossary labels indicating which
+% glossaries contain acronyms. Note that \ics{SetAcronymStyle}
+% must be used after adding labels to this macro.
+% \begin{macrocode}
+\newcommand*{\@glsacronymlists}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@addtoacronynlists}
+% \begin{macrocode}
+\newcommand*{\@addtoacronymlists}[1]{%
+ \ifx\@glsacronymlists\@empty
+ \protected@xdef\@glsacronymlists{#1}%
+ \else
+ \protected@xdef\@glsacronymlists{\@glsacronymlists,#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DeclareAcronymList}
+%\changes{2.04}{2009-11-10}{new}%
+% Identifies the named glossary as a list of acronyms and adds
+% to the list. (Doesn't check if the glossary exists, but checks
+% if label already in list. Use \ics{SetAcronymStyle} after
+% identifying all the acronym lists.)
+% \begin{macrocode}
+\newcommand*{\DeclareAcronymList}[1]{%
+ \glsIfListOfAcronyms{#1}{}{\@addtoacronymlists{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsIfListOfAcronyms}
+%\begin{definition}
+%\cs{glsIfListOfAcronyms}\marg{label}\marg{true part}\marg{false part}
+%\end{definition}
+% Determines if the glossary with the given label has been identified
+% as being a list of acronyms.
+% \begin{macrocode}
+\newcommand{\glsIfListOfAcronyms}[1]{%
+ \edef\@do@gls@islistofacronyms{%
+ \noexpand\@gls@islistofacronyms{#1}{\@glsacronymlists}}%
+ \@do@gls@islistofacronyms
+}
+% \end{macrocode}
+% Internal command requires label and list to be expanded:
+% \begin{macrocode}
+\newcommand{\@gls@islistofacronyms}[4]{%
+ \def\gls@islistofacronyms##1,#1,##2\end@gls@islistofacronyms{%
+ \def\@before{##1}\def\@after{##2}}%
+ \gls@islistofacronyms,#2,#1,\@nil\end@gls@islistofacronyms
+ \ifx\@after\@nnil
+% \end{macrocode}
+% Not found
+% \begin{macrocode}
+ #4%
+ \else
+% \end{macrocode}
+% Found
+% \begin{macrocode}
+ #3%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\if@glsisacronymlist}
+% Convenient boolean.
+% \begin{macrocode}
+\newif\if@glsisacronymlist
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@checkisacronymlist}
+% Sets the above boolean if argument is a label representing
+% a list of acronyms.
+% \begin{macrocode}
+\newcommand*{\gls@checkisacronymlist}[1]{%
+ \glsIfListOfAcronyms{#1}%
+ {\@glsisacronymlisttrue}{\@glsisacronymlistfalse}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetAcronymLists}
+%\changes{2.04}{2009-11-10}{new}%
+% Sets the ``list of acronyms'' list. Argument must be a
+% comma-separated list of glossary labels. (Doesn't check at this
+% point if the glossaries exists.)
+% \begin{macrocode}
+\newcommand*{\SetAcronymLists}[1]{%
+ \renewcommand*{\@glsacronymlists}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{acronymlists}
+%\changes{2.04}{2009-11-10}{new}%
+%\changes{3.11a}{2013-10-15}{replaced \cs{@addtoacronymlists} with
+%\cs{DeclareAcronymList}}
+% \begin{macrocode}
+\define@key{glossaries.sty}{acronymlists}{%
+ \DeclareAcronymList{#1}%
+}
+% \end{macrocode}
+%\end{option}
+%
+% The default counter associated with the numbers in the glossary
+% is stored in \cs{glscounter}. This is initialised to the
+% page counter. This is used as the default counter when a
+% new glossary is defined, unless a different counter is specified
+% in the optional argument to \ics{newglossary} (see
+% \autoref{sec:newglos}).
+%\begin{macro}{\glscounter}
+% \begin{macrocode}
+\newcommand{\glscounter}{page}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{counter}
+% The \pkgopt{counter} option changes the default counter. (This
+% just redefines \cs{glscounter}.)
+% \begin{macrocode}
+\define@key{glossaries.sty}{counter}{%
+ \renewcommand*{\glscounter}{#1}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@nohyperlist}
+%\changes{3.05}{2013/04/21}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@nohyperlist}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsDeclareNoHyperList}
+%\changes{3.05}{2013/04/21}{new}
+% \begin{macrocode}
+\newcommand*{\GlsDeclareNoHyperList}[1]{%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \appto\@gls@nohyperlist{,#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{nohypertypes}
+%\changes{3.05}{2013/04/21}{new}
+% \begin{macrocode}
+\define@key{glossaries.sty}{nohypertypes}{%
+ \GlsDeclareNoHyperList{#1}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\GlossariesWarning}
+% Prints a warning message.
+% \begin{macrocode}
+\newcommand*{\GlossariesWarning}[1]{%
+ \PackageWarning{glossaries}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlossariesWarningNoLine}
+% Prints a warning message without the line number.
+% \begin{macrocode}
+\newcommand*{\GlossariesWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glosortentrieswarning}
+%\changes{4.30}{2017-06-11}{new}
+%Warn user that sorting may take a long time. This is actually an
+%informational message rather than a warning so just use
+%\cs{typeout}.
+% \begin{macrocode}
+\newcommand{\glosortentrieswarning}{%
+ \typeout{Using TeX to sort glossary entries---this may
+ take a while}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{nowarn}
+% Define package option to suppress warnings
+% \begin{macrocode}
+\@gls@declareoption{nowarn}{%
+ \if@gls@debug
+ \GlossariesWarning{Warnings can't be suppressed in debug mode}%
+ \else
+ \renewcommand*{\GlossariesWarning}[1]{}%
+ \renewcommand*{\GlossariesWarningNoLine}[1]{}%
+ \renewcommand*{\glosortentrieswarning}{}%
+ \renewcommand*{\@gls@missinglang@warn}[2]{}%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@missinglang@warn}
+%\changes{4.33}{2017-09-20}{new}
+%Missing language warning.
+% \begin{macrocode}
+\newcommand*{\@gls@missinglang@warn}[2]{%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `#1'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-#2' or similar}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{nolangwarn}
+% Suppress warning if language support not found.
+% \begin{macrocode}
+\@gls@declareoption{nolangwarn}{%
+ \renewcommand*{\@gls@missinglang@warn}[2]{}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@warnonglossdefined}
+%\changes{4.04}{2014-03-06}{new}
+% Issue a warning if overriding \cs{printglossary}
+% \begin{macrocode}
+\newcommand*{\@gls@warnonglossdefined}{%
+ \GlossariesWarning{Overriding \string\printglossary}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@warnontheglossdefined}
+%\changes{4.04}{2014-03-06}{new}
+% Issue a warning if overriding \env{theglossary}
+% \begin{macrocode}
+\newcommand*{\@gls@warnontheglossdefined}{%
+ \GlossariesWarning{Overriding `theglossary' environment}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{noredefwarn}
+% Suppress warning on redefinition of \cs{printglossary}
+% \begin{macrocode}
+\@gls@declareoption{noredefwarn}{%
+ \renewcommand*{\@gls@warnonglossdefined}{}%
+ \renewcommand*{\@gls@warnontheglossdefined}{}%
+}
+% \end{macrocode}
+%\end{option}
+%
+% As from version 3.08a, the only information written to the external
+% glossary files are the label and sort values. Therefore, now, the
+% only sanitize option that makes sense is the one for the sort key.
+% so the sanitize option is now deprecated and there is only a
+% \pkgopt{sanitizesort} option.
+%
+%\begin{macro}{\@gls@sanitizedesc}
+% \begin{macrocode}
+\newcommand*{\@gls@sanitizedesc}{%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetexpandfield}
+%\changes{3.13a}{2013-11-05}{new}
+%\begin{definition}
+%\cs{glssetexpandfield}\marg{field}
+%\end{definition}
+% Sets field to always expand.
+% \begin{macrocode}
+\newcommand*{\glssetexpandfield}[1]{%
+ \csdef{gls@assign@#1@field}##1##2{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetnoexpandfield}
+%\changes{3.13a}{2013-11-05}{new}
+%\begin{definition}
+%\cs{glssetnoexpandfield}\marg{field}
+%\end{definition}
+% Sets field to never expand.
+% \begin{macrocode}
+\newcommand*{\glssetnoexpandfield}[1]{%
+ \csdef{gls@assign@#1@field}##1##2{%
+ \@@gls@noexpand@field{##1}{#1}{##2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@assign@type@field}
+%\changes{3.10a}{2013-09-28}{new}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{glssetexpandfield}}
+% The type must always be expandable.
+% \begin{macrocode}
+\glssetexpandfield{type}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@assign@desc@field}
+%\changes{3.08a}{2013-09-28}{new}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{glssetnoexpandfield}}
+% The description is not expanded by default:
+% \begin{macrocode}
+\glssetnoexpandfield{desc}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@assign@descplural@field}
+%\changes{3.08a}{2013-09-28}{new}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{glssetnoexpandfield}}
+% \begin{macrocode}
+\glssetnoexpandfield{descplural}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@sanitizename}
+% \begin{macrocode}
+\newcommand*{\@gls@sanitizename}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@assign@name@field}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{glssetnoexpandfield}}
+% Don't expand name by default.
+% \begin{macrocode}
+\glssetnoexpandfield{name}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@sanitizesymbol}
+% \begin{macrocode}
+\newcommand*{\@gls@sanitizesymbol}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@assign@symbol@field}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{glssetnoexpandfield}}
+% Don't expand symbol by default.
+% \begin{macrocode}
+\glssetnoexpandfield{symbol}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@assign@symbolplural@field}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{glssetnoexpandfield}}
+%\changes{3.09a}{2013-10-09}{new}
+% \begin{macrocode}
+\glssetnoexpandfield{symbolplural}
+% \end{macrocode}
+%\end{macro}
+%
+% Sanitizing stuff:
+%\begin{macro}{\@gls@sanitizesort}
+%\changes{3.03}{2012/09/21}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@sanitizesort}{%
+ \ifglssanitizesort
+ \@@gls@sanitizesort
+ \else
+ \@@gls@nosanitizesort
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@gls@sanitizesort}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*\@@gls@sanitizesort{%
+ \@onelevel@sanitize\@glo@sort
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@gls@nosanitizesort}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@@gls@nosanitizesort}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@gls@noidx@sanitizesort}
+%\changes{4.04}{2014-03-06}{new}
+% Remove braces around first character (if present) before
+% sanitizing.
+% \begin{macrocode}
+\newcommand*\@gls@noidx@sanitizesort{%
+ \ifdefvoid\@glo@sort
+ {}%
+ {%
+ \expandafter\@@gls@noidx@sanitizesort\@glo@sort\gls@end@sanitizesort
+ }%
+}
+\def\@@gls@noidx@sanitizesort#1#2\gls@end@sanitizesort{%
+ \def\@glo@sort{#1#2}%
+ \@onelevel@sanitize\@glo@sort
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@gls@noidx@nosanitizesort}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@@gls@noidx@nosanitizesort}{%
+ \ifdefvoid\@glo@sort
+ {}%
+ {%
+ \expandafter\@@gls@noidx@no@sanitizesort\@glo@sort\gls@end@sanitizesort
+ }%
+}
+\def\@@gls@noidx@no@sanitizesort#1#2\gls@end@sanitizesort{%
+ \bgroup
+ \glsnoidxstripaccents
+ \protected@xdef\@@glo@sort{#1#2}%
+ \egroup
+ \let\@glo@sort\@@glo@sort
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxstripaccents}
+%\changes{4.04}{2014-03-06}{new}
+%This strips accents by redefining the standard accent commands to
+%just do their argument. (This will be localised since
+%\cs{glsnoidxstripaccents} is used within a group.) Anything outside
+%this standard set really shouldn't be using
+%\cs{makenoidxglossaries}.
+% \begin{macrocode}
+\newcommand*\glsnoidxstripaccents{%
+ \let\IeC\@firstofone
+ \let\'\@firstofone
+ \let\`\@firstofone
+ \let\^\@firstofone
+ \let\"\@firstofone
+ \let\u\@firstofone
+ \let\t\@firstofone
+ \let\d\@firstofone
+ \let\r\@firstofone
+ \let\=\@firstofone
+ \let\.\@firstofone
+ \let\~\@firstofone
+ \let\v\@firstofone
+ \let\H\@firstofone
+ \let\c\@firstofone
+ \let\b\@firstofone
+% \end{macrocode}
+%\changes{4.30}{2017-06-11}{added \cs{a}}
+% \begin{macrocode}
+ \let\a\@secondoftwo
+ \def\AE{AE}%
+ \def\ae{ae}%
+ \def\OE{OE}%
+ \def\oe{oe}%
+ \def\AA{AA}%
+ \def\aa{aa}%
+ \def\L{L}%
+ \def\l{l}%
+ \def\O{O}%
+ \def\o{o}%
+ \def\SS{SS}%
+ \def\ss{ss}%
+ \def\th{th}%
+% \end{macrocode}
+%\changes{4.30}{2017-06-11}{added \cs{TH}, \cs{dh} and \cs{DH}}
+% \begin{macrocode}
+ \def\TH{TH}%
+ \def\dh{dh}%
+ \def\DH{DH}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Before defining the \pkgopt{sanitize} package option, The
+% key-value list for the \pkgopt{sanitize} value needs to be defined.
+% These are all boolean keys. If they are not given a value, assume
+% \texttt{true}.
+%
+% \begin{macrocode}
+\define@boolkey[gls]{sanitize}{description}[true]{%
+ \GlossariesWarning{sanitize={description} package option deprecated}%
+ \ifgls@sanitize@description
+ \glssetnoexpandfield{desc}%
+ \glssetnoexpandfield{descplural}%
+ \else
+ \glssetexpandfield{desc}%
+ \glssetexpandfield{descplural}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@boolkey[gls]{sanitize}{name}[true]{%
+ \GlossariesWarning{sanitize={name} package option deprecated}%
+ \ifgls@sanitize@name
+ \glssetnoexpandfield{name}%
+ \else
+ \glssetexpandfield{name}%
+ \fi
+}
+% \end{macrocode}
+% \begin{macrocode}
+\define@boolkey[gls]{sanitize}{symbol}[true]{%
+ \GlossariesWarning{sanitize={symbol} package option deprecated}%
+ \ifgls@sanitize@symbol
+ \glssetnoexpandfield{symbol}%
+ \glssetnoexpandfield{symbolplural}%
+ \else
+ \glssetexpandfield{symbol}%
+ \glssetexpandfield{symbolplural}%
+ \fi
+}
+% \end{macrocode}
+%
+%\begin{option}{sanitizesort}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{sanitizesort}[true]{%
+ \ifglssanitizesort
+ \glssetnoexpandfield{sortvalue}%
+ \renewcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesorttrue
+ \glssetnoexpandfield{sortvalue}%
+ }%
+ \else
+ \glssetexpandfield{sortvalue}%
+ \renewcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesortfalse
+ \glssetexpandfield{sortvalue}%
+ }%
+ \fi
+}
+% \end{macrocode}
+% Default setting:
+% \begin{macrocode}
+\glssanitizesorttrue
+\glssetnoexpandfield{sortvalue}%
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@noidx@setsanitizesort}
+% Default behaviour for \ics{makenoidxglossaries} is
+% sanitizesort=false.
+% \begin{macrocode}
+\newcommand*{\@gls@noidx@setsanitizesort}{%
+ \glssanitizesortfalse
+ \glssetexpandfield{sortvalue}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\define@choicekey[gls]{sanitize}{sort}{true,false}[true]{%
+ \setbool{glssanitizesort}{#1}%
+ \ifglssanitizesort
+ \glssetnoexpandfield{sortvalue}%
+ \else
+ \glssetexpandfield{sortvalue}%
+ \fi
+ \GlossariesWarning{sanitize={sort} package option
+ deprecated. Use sanitizesort instead}%
+}
+% \end{macrocode}
+%
+%\begin{option}{sanitize}
+% \changes{4.02}{2013-12-05}{fixed bug that caused an error here}
+% \changes{4.11}{2014-09-01}{fixed backward compatibility support of
+% deprecated sanitize=none option}
+% \begin{macrocode}
+\define@key{glossaries.sty}{sanitize}[description=true,symbol=true,name=true]{%
+ \ifthenelse{\equal{#1}{none}}%
+ {%
+ \GlossariesWarning{sanitize package option deprecated}%
+ \glssetexpandfield{name}%
+ \glssetexpandfield{symbol}%
+ \glssetexpandfield{symbolplural}%
+ \glssetexpandfield{desc}%
+ \glssetexpandfield{descplural}%
+ }%
+ {%
+ \setkeys[gls]{sanitize}{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\ifglstranslate}
+% As from version 3.13a, the \pkgopt{translator} package option is a
+% choice rather than boolean option so now need to define
+% conditional:
+% \begin{macrocode}
+\newif\ifglstranslate
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@notranslatorhook}
+%\changes{3.13a}{2013-11-05}{new}
+%\changes{4.12}{2014-11-22}{removed}
+%\cs{@gls@notranslatorhook} has been removed.
+%\end{macro}
+%\begin{macro}{\@gls@usetranslator}
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*\@gls@usetranslator{%
+% \end{macrocode}
+% \sty{polyglossia} tricks \cs{@ifpackageloaded} into thinking that
+% \sty{babel} has been loaded, so check for \sty{polyglossia} as well.
+% \begin{macrocode}
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \@ifpackageloaded{babel}%
+ {%
+ \IfFileExists{translator.sty}%
+ {%
+ \RequirePackage{translator}%
+ \let\glsifusetranslator\@firstoftwo
+ }%
+ {}%
+ }%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsifusedtranslatordict}
+%\changes{4.12}{2014-11-22}{new}
+% Checks if given \sty{translator} dictionary has been loaded.
+% \begin{macrocode}
+\newcommand{\glsifusedtranslatordict}[3]{%
+ \glsifusetranslator
+ {\ifcsdef{ver@glossaries-dictionary-#1.dict}{#2}{#3}}%
+ {#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{notranslate}
+%\changes{3.14a}{2013-11-12}{new}
+% Provide a synonym for \pkgopt[false]{translate} that can be passed
+% via the document class.
+% \begin{macrocode}
+\@gls@declareoption{notranslate}{%
+ \glstranslatefalse
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{translate}
+%\changes{1.1}{2008-02-22}{translate option added}
+% Define \pkgopt{translate} option. If false don't set up
+% multi-lingual support.
+%\changes{4.41}{2018-07-23}{changed \cs{val} and \cs{nr} to
+%\cs{gls@translate@val} and \cs{gls@translate@nr}}
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{translate}%
+ [\gls@translate@val\gls@translate@nr]%
+ {true,false,babel}[true]%
+ {%
+ \ifcase\gls@translate@nr\relax
+ \glstranslatetrue
+ \renewcommand*\@gls@usetranslator{%
+ \@ifpackageloaded{polyglossia}%
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \@ifpackageloaded{babel}%
+ {%
+ \IfFileExists{translator.sty}%
+ {%
+ \RequirePackage{translator}%
+ \let\glsifusetranslator\@firstoftwo
+ }%
+ {}%
+ }%
+ {}%
+ }%
+ }%
+ \or
+ \glstranslatefalse
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+ \or
+ \glstranslatetrue
+ \let\@gls@usetranslator\relax
+ \let\glsifusetranslator\@secondoftwo
+ \fi
+ }
+% \end{macrocode}
+%\end{option}
+% Set the default value:
+% \begin{macrocode}
+\glstranslatefalse
+\let\glsifusetranslator\@secondoftwo
+\@ifpackageloaded{translator}%
+{%
+ \glstranslatetrue
+ \let\glsifusetranslator\@firstoftwo
+}%
+{%
+ \@for\gls@thissty:=tracklang,babel,ngerman,polyglossia\do
+ {
+ \@ifpackageloaded{\gls@thissty}%
+ {%
+ \glstranslatetrue
+ \@endfortrue
+ }%
+ {}%
+ }
+}
+% \end{macrocode}
+%
+%\begin{option}{indexonlyfirst}
+%\changes{3.02}{2012-05-21}{new}
+% Set whether to only index on first use.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{indexonlyfirst}[true]{}
+\glsindexonlyfirstfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{hyperfirst}
+%\changes{2.03}{2009-09-23}{new}
+% Set whether or not terms should have a hyperlink on first use.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{hyperfirst}[true]{}
+\glshyperfirsttrue
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@setacrstyle}
+% Keep track of whether an acronym style has been set (for the
+% benefit of \cs{setupglossaries}):
+% \begin{macrocode}
+\newcommand*{\@gls@setacrstyle}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{option}{footnote}
+% Set the long form of the acronym in footnote on first use.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[glsacr]{footnote}[true]{%
+ \ifbool{glsacrdescription}%
+ {}%
+ {%
+ \renewcommand*{\@gls@sanitizedesc}{}%
+ }%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{description}
+% Allow acronyms to have a description (needs to be set using
+% the \gloskey{description} key in the optional argument of
+% \ics{newacronym}).
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[glsacr]{description}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{smallcaps}
+% Define \ics{newacronym} to set the short form in small capitals.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[glsacr]{smallcaps}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{smaller}
+% Define \ics{newacronym} to set the short form using \cs{smaller}
+% which obviously needs to be defined by loading the appropriate
+% package.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[glsacr]{smaller}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{dua}
+% Define \ics{newacronym} to always use the long forms
+% (i.e.\ don't use acronyms)
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[glsacr]{dua}[true]{%
+ \renewcommand*{\@gls@sanitizesymbol}{}%
+ \renewcommand*{\@gls@setacrstyle}{\SetAcronymStyle}%
+}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{shotcuts}
+% Define acronym shortcuts.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[glsacr]{shortcuts}[true]{}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsorder}
+% Stores the glossary ordering. This may either be \qt{word}
+% or \qt{letter}. This passes the relevant information to
+% \app{makeglossaries}. The default is word ordering.
+% \begin{macrocode}
+\newcommand*{\glsorder}{word}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsorder}
+% The ordering information is written to the auxiliary file
+% for \app{makeglossaries}, so ignore the auxiliary
+% information.
+% \begin{macrocode}
+\newcommand*{\@glsorder}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{order}
+%\changes{1.17}{2008-12-26}{order package option added}
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{order}{word,letter}{%
+ \def\glsorder{#1}}
+% \end{macrocode}
+%\end{option}
+%
+%\changes{1.17}{2008-12-26}{added xindy support}
+%\begin{macro}{\ifglsxindy}
+%\changes{1.17}{2008-12-26}{new}
+% Provide boolean to determine whether \gls{xindy} or
+% \gls{makeindex} will be used to sort the glossaries.
+% \begin{macrocode}
+\newif\ifglsxindy
+% \end{macrocode}
+%\end{macro}
+% The default is \app{makeindex}:
+% \begin{macrocode}
+\glsxindyfalse
+% \end{macrocode}
+%
+%\begin{option}{makeindex}
+% Define package option to specify that \app{makeindex} will
+% be used to sort the glossaries:
+% \begin{macrocode}
+\@gls@declareoption{makeindex}{\glsxindyfalse}
+% \end{macrocode}
+%\end{option}
+%
+% The \pkgopt{xindy} package option may have a value which in
+% turn can be a key=value list. First define the keys for this
+% sub-list. The boolean "glsnumbers" determines whether to
+% automatically add the \texttt{glsnumbers} letter group.
+% \begin{macrocode}
+\define@boolkey[gls]{xindy}{glsnumbers}[true]{}
+\gls@xindy@glsnumberstrue
+% \end{macrocode}
+%
+%\begin{macro}{\@xdy@main@language}
+%\changes{3.06}{2013/06/17}{Changed back to using \cs{languagename}}
+% Define what language to use for each glossary type (if a
+% language is not defined for a particular glossary type
+% the language specified for the main glossary is used.)
+% \begin{macrocode}
+\def\@xdy@main@language{\languagename}%
+% \end{macrocode}
+%\end{macro}
+% Define key to set the language
+% \begin{macrocode}
+\define@key[gls]{xindy}{language}{\def\@xdy@main@language{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\gls@codepage}
+% Define the code page. If \ics{inputencodingname} is defined
+% use that, otherwise have initialise with no codepage.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{inputencodingname}{%
+ \def\gls@codepage{}}{%
+ \def\gls@codepage{\inputencodingname}
+}
+% \end{macrocode}
+% Define a key to set the code page.
+% \begin{macrocode}
+\define@key[gls]{xindy}{codepage}{\def\gls@codepage{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{xindy}
+% Define package option to specify that \app{xindy} will be
+% used to sort the glossaries:
+% \begin{macrocode}
+\define@key{glossaries.sty}{xindy}[]{%
+ \glsxindytrue
+ \setkeys[gls]{xindy}{#1}%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{xindygloss}
+%\changes{3.14a}{2013-11-12}{new}
+% Provide a synonym for \pkgopt[]{xindy} that can be passed via the
+% document class options.
+% \begin{macrocode}
+\@gls@declareoption{xindygloss}{%
+ \glsxindytrue
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{xindynoglsnumbers}
+%\changes{4.02}{2013-12-05}{new}
+% Provide a synonym for \texttt{xindy={glsnumbers=false}} that can
+% be passed via the document class options.
+% \begin{macrocode}
+\@gls@declareoption{xindynoglsnumbers}{%
+ \glsxindytrue
+ \gls@xindy@glsnumbersfalse
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\ifglsautomake}
+%\changes{4.42}{2019-01-06}{now defined explicitly instead of through
+%boolean key}
+% \begin{macrocode}
+\newif\ifglsautomake
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@automake@nr}
+%\changes{4.42}{2019-01-06}{new}
+% \begin{macrocode}
+\newcommand{\gls@automake@nr}{1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{automake}
+%\changes{4.08}{2014-07-30}{new}
+%\changes{4.42}{2019-01-06}{switch from boolean to choice}
+% If this setting is on, automatically run
+% \gls{makeindex}\slash\gls{xindy} at the end of the document.
+% Must be used with \ics{makeglossaries}.
+% Default is false. As from v4.42, this is now a choice rather than
+% boolean key.
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{automake}%
+ [\gls@automake@val\gls@automake@nr]{true,false,immediate}[true]{%
+ \ifnum\gls@automake@nr=1\relax
+ \glsautomakefalse
+ \else
+ \glsautomaketrue
+ \fi
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \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.%
+ }%
+ }%
+ \else
+ \renewcommand*{\@gls@doautomake}{}%
+ \fi
+}
+\glsautomakefalse
+% \end{macrocode}
+%\end{option}
+%\begin{macro}{\@gls@doautomake}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@doautomake}{}
+\AtEndDocument{\@gls@doautomake}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{savewrites}
+%\changes{3.0}{2011-04-02}{new}
+% The \pkgopt{savewrites} package option is provided to save on
+% the number of write registers.
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{savewrites}[true]{%
+ \ifglssavewrites
+ \renewcommand*{\glswritefiles}{\@glswritefiles}%
+ \else
+ \let\glswritefiles\@empty
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+% Set default:
+%\changes{4.03}{2014-01-17}{changed default to \cs{@empty} instead
+%of \cs{relax}}
+% \begin{macrocode}
+\glssavewritesfalse
+\let\glswritefiles\@empty
+% \end{macrocode}
+%
+%\begin{option}{compatible-3.07}
+%\changes{3.11a}{2013-10-15}{cnew}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{compatible-3.07}[true]{}
+\boolfalse{glscompatible-3.07}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{compatible-2.07}
+%\changes{3.0}{2011-04-02}{compatible-2.07 option added}
+% \begin{macrocode}
+\define@boolkey{glossaries.sty}[gls]{compatible-2.07}[true]{%
+% \end{macrocode}
+% Also set 3.07 compatibility if this option is set.
+%\changes{3.14a}{2013-11-12}{added check for 2.07 before setting 3.07
+%compatibility}
+% \begin{macrocode}
+ \ifbool{glscompatible-2.07}%
+ {%
+ \booltrue{glscompatible-3.07}%
+ }%
+ {}%
+}
+\boolfalse{glscompatible-2.07}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\gls@original@makeglossary}
+%Store the original definition.
+%\changes{4.41}{2018-07-23}{new}
+% \begin{macrocode}
+\let\gls@original@makeglossary\makeglossary
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@original@glossary}
+%Store the original definition.
+%\changes{4.41}{2018-07-23}{new}
+% \begin{macrocode}
+\let\gls@original@glossary\glossary
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\makeglossary}
+% The \cs{makeglossary} command is redefined to be
+% identical to \cs{makeglossaries}. (This is done partly to
+% reinforce the message that you must either use
+% \cs{@makeglossary} for all the glossaries or for none
+% of them, but is also a legacy from the old \styfmt{glossary} package.)
+%\changes{4.41}{2018-07-23}{added warning}
+% \begin{macrocode}
+\def\makeglossary{%
+ \GlossariesWarning{Use of \string\makeglossary\space with
+ glossaries.sty is \MessageBreak deprecated. Use \string\makeglossaries\space
+ instead. If you \MessageBreak need the original definition of
+ \string\makeglossary\space use \MessageBreak the package options
+ kernelglossredefs=false (to \MessageBreak restore the former definition of
+ \string\makeglossary) and \MessageBreak nomain (if the file extensions cause a
+ conflict)}%
+ \makeglossaries
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@override@glossary}
+%\changes{4.41}{2018-07-23}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@override@glossary}[1][main]{%
+ \GlossariesWarning{Use of \string\glossary\space with
+ glossaries.sty is deprecated. \MessageBreak Indexing should be performed
+ with the user level \MessageBreak commands, such as \string\gls\space or
+ \string\glsadd. If you need the \MessageBreak original definition of
+ \string\glossary\space use the package \MessageBreak options
+ kernelglossredefs=false (to restore the \MessageBreak former definition of
+ \string\glossary) and nomain (if the \MessageBreak file extensions cause a
+ conflict)}%
+ \gls@glossary{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% In v4.10, the redefinition of \cs{glossary} was removed since it
+% was never intended as a user level command (and wasn't documented
+% in the user manual), however it seems there are packages that have
+% hacked the internal macros used by \styfmt{glossaries} and no longer
+% work with this redefinition removed, so it's been restored in v4.11
+% but is not used at all by \styfmt{glossaries}.
+% (This may be removed or moved to a compatibility mode in future.)
+% As from v4.41, the use of \cs{glossary} now triggers a warning.
+% The package option \pkgopt[nowarn]{kernelglossredefs} may be used to
+% remove the warning, but it's better not to use \cs{glossary}.
+%\begin{macro}{\glossary}
+%\changes{4.41}{2018-07-23}{added warning}
+% \begin{macrocode}
+\if@gls@docloaded
+\else
+ \def\glossary{\@gls@override@glossary}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{kernelglossredefs}
+%\changes{4.41}{2018-07-23}{new}
+%The \sty{glossaries} package redefines the kernel commands
+%\cs{makeglossary} and \cs{glossary} as a legacy action from the
+%former \sty{glossary} package. In hindsight that wasn't a good idea
+%as it's possible that the \sty{glossaries} package may need to be
+%used with another class or package that needs these commands.
+%Neither of these commands are documented in the main user manual
+%and their use is not encouraged. The preferred commands are
+%\cs{makeglossaries} (to open all associated glossary files) and
+%\cs{gls}, \cs{glstext} etc or \cs{glsadd} for indexing.
+% \begin{macrocode}
+\define@choicekey{glossaries.sty}{kernelglossredefs}%
+ [\gls@debug@val\gls@debug@nr]{true,false,nowarn}[true]%
+{%
+ \ifcase\gls@debug@nr\relax
+ \def\glossary{\@gls@override@glossary}%
+ \def\makeglossary{%
+ \GlossariesWarning{Use of \string\makeglossary\space with
+ glossaries.sty is deprecated. Use \string\makeglossaries\space
+ instead. If you need the original definition of
+ \string\makeglossary\space use the package options
+ kernelglossredefs=false (to prevent redefinition of
+ \string\makeglossary) and nomain (if the file extensions cause a
+ conflict)}%
+ \makeglossaries
+ }%
+ \or
+ \let\glossary\gls@original@glossary
+ \let\makeglossary\gls@original@makeglossary
+ \or
+ \def\makeglossary{\makeglossaries}%
+ \renewcommand*{\@gls@override@glossary}[1][main]{%
+ \gls@glossary{##1}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{symbols}
+% Create a \qt{symbols} glossary type
+%\changes{3.11a}{2013-10-15}{new}
+% \begin{macrocode}
+\@gls@declareoption{symbols}{%
+ \let\@gls@do@symbolsdef\@gls@symbolsdef
+}
+% \end{macrocode}
+% Default is not to define the symbols glossary:
+% \begin{macrocode}
+\newcommand*{\@gls@do@symbolsdef}{}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@symbolsdef}
+%\changes{4.02}{2013-12-05}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@symbolsdef}{%
+ \newglossary[slg]{symbols}{sls}{slo}{\glssymbolsgroupname}%
+ \newcommand*{\printsymbols}[1][]{\printglossary[type=symbols,##1]}%
+% \end{macrocode}
+% Define hook to set the toc title when \sty{translator} is in use.
+%\changes{4.06}{2014-03-12}{added hook to set toc title}
+% \begin{macrocode}
+ \newcommand*{\gls@tr@set@symbols@toctitle}{%
+ \translatelet{\glossarytoctitle}{Symbols (glossaries)}%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{numbers}
+% Create a \qt{symbols} glossary type
+%\changes{3.11a}{2013-10-15}{new}
+% \begin{macrocode}
+\@gls@declareoption{numbers}{%
+ \let\@gls@do@numbersdef\@gls@numbersdef
+}
+% \end{macrocode}
+% Default is not to define the numbers glossary:
+% \begin{macrocode}
+\newcommand*{\@gls@do@numbersdef}{}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@gls@numbersdef}
+%\changes{4.02}{2013-12-05}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@numbersdef}{%
+ \newglossary[nlg]{numbers}{nls}{nlo}{\glsnumbersgroupname}%
+ \newcommand*{\printnumbers}[1][]{\printglossary[type=numbers,##1]}%
+% \end{macrocode}
+% Define hook to set the toc title when \sty{translator} is in use.
+%\changes{4.06}{2014-03-12}{added hook to set toc title}
+% \begin{macrocode}
+ \newcommand*{\gls@tr@set@numbers@toctitle}{%
+ \translatelet{\glossarytoctitle}{Numbers (glossaries)}%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{index}
+% Create an \qt{index} glossary type
+%\changes{4.02}{2013-12-05}{new}
+% \begin{macrocode}
+\@gls@declareoption{index}{%
+ \ifx\@gls@do@indexdef\@empty
+ \let\@gls@do@indexdef\@gls@indexdef
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%\begin{option}{noglossaryindex}
+% Counteract \pkgopt{index} if it happens to be globally used in the document class.
+%\changes{4.42}{2019-01-06}{new}
+% \begin{macrocode}
+\@gls@declareoption{noglossaryindex}{%
+ \let\@gls@do@indexdef\relax
+}
+% \end{macrocode}
+%\end{option}
+% Default is not to define index glossary:
+% \begin{macrocode}
+\newcommand*{\@gls@do@indexdef}{}
+% \end{macrocode}
+%
+%\begin{macro}{\@gls@indexdef}
+%\changes{4.02}{2013-12-05}{new}
+%\cs{indexname} isn't set by \sty{glossaries}.
+% \begin{macrocode}
+\newcommand*{\@gls@indexdef}{%
+ \newglossary[ilg]{index}{ind}{idx}{\indexname}%
+ \newcommand*{\printindex}[1][]{\printglossary[type=index,##1]}%
+ \newcommand*{\newterm}[2][]{%
+ \newglossaryentry{##2}%
+ {type={index},name={##2},description={\nopostdesc},##1}}
+ \let\@gls@do@indexdef\relax
+}%
+% \end{macrocode}
+%\end{macro}
+%
+% Process package options. First process any options that have been
+% passed via the document class.
+% \begin{macrocode}
+\@for\CurrentOption :=\@declaredoptions\do{%
+ \ifx\CurrentOption\@empty
+ \else
+ \@expandtwoargs
+ \in@ {,\CurrentOption ,}{,\@classoptionslist,\@curroptions,}%
+ \ifin@
+ \@use@ption
+ \expandafter \let\csname ds@\CurrentOption\endcsname\@empty
+ \fi
+ \fi
+}
+% \end{macrocode}
+% Now process options passed to the package:
+% \begin{macrocode}
+\ProcessOptionsX
+% \end{macrocode}
+% Load backward compatibility stuff:
+% \begin{macrocode}
+\RequirePackage{glossaries-compatible-307}
+% \end{macrocode}
+%
+%\begin{macro}{\setupglossaries}
+%\changes{3.11a}{2013-10-15}{new}
+% Provide way to set options after package has been loaded. However,
+% some options must be set before \cs{ProcessOptionsX}, so they have
+% to be disabled:
+% \begin{macrocode}
+\disable@keys{glossaries.sty}{compatible-2.07,%
+ xindy,xindygloss,xindynoglsnumbers,makeindex,%
+ acronym,translate,notranslate,nolong,nosuper,notree,nostyles,%
+ nomain,noglossaryindex}
+% \end{macrocode}
+%Now define \cs{setupglossaries}:
+% \begin{macrocode}
+\newcommand*{\setupglossaries}[1]{%
+ \renewcommand*{\@gls@setacrstyle}{}%
+ \ifglsacrshortcuts
+ \def\@gls@setupshortcuts{\glsacrshortcutstrue}%
+ \else
+ \def\@gls@setupshortcuts{%
+ \ifglsacrshortcuts
+ \DefineAcronymSynonyms
+ \fi
+ }%
+ \fi
+ \glsacrshortcutsfalse
+ \let\@gls@do@numbersdef\relax
+ \let\@gls@do@symbolssdef\relax
+ \let\@gls@do@indexdef\relax
+ \let\@gls@do@acronymsdef\relax
+ \ifglsentrycounter
+ \let\@gls@doentrycounterdef\relax
+ \else
+ \let\@gls@doentrycounterdef\@gls@define@glossaryentrycounter
+ \fi
+ \ifglssubentrycounter
+ \let\@gls@dosubentrycounterdef\relax
+ \else
+ \let\@gls@dosubentrycounterdef\@gls@define@glossarysubentrycounter
+ \fi
+ \setkeys{glossaries.sty}{#1}%
+ \@gls@setacrstyle
+ \@gls@setupshortcuts
+ \@gls@do@acronymsdef
+ \@gls@do@numbersdef
+ \@gls@do@symbolssdef
+ \@gls@do@indexdef
+ \@gls@doentrycounterdef
+ \@gls@dosubentrycounterdef
+}
+% \end{macrocode}
+%\end{macro}
+%
+% If chapters are defined and the user has requested the
+% section counter as a package option, \cs{@chapter} will
+% be modified so
+% that it adds a \texttt{section.}\meta{n}\texttt{.0} target,
+% otherwise entries placed before the first section of a chapter
+% will have undefined links.
+%
+% The same problem will also occur if a lower sectional unit is
+% used, but this is less likely to happen. If it does, or if
+% you change \cs{glscounter} to "section" later, you
+% will have to specify a different counter for the entries
+% that give rise to a \texttt{name}"{"\meta{section-level}"."\meta{n}".0}"
+% non-existent warning (e.g. "\gls[counter=chapter]{label}").
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifthenelse{\equal{\glscounter}{section}}%
+{%
+ \ifcsundef{chapter}{}%
+ {%
+ \let\@gls@old@chapter\@chapter
+ \def\@chapter[#1]#2{\@gls@old@chapter[{#1}]{#2}%
+ \ifcsundef{hyperdef}{}{\hyperdef{section}{\thesection}{}}}%
+ }%
+}%
+{}
+% \end{macrocode}
+%
+%\begin{macro}{\@gls@onlypremakeg}
+% Some commands only have an effect when used before
+% \ics{makeglossaries}. So define a list of commands that
+% should be disabled after \ics{makeglossaries}
+% \begin{macrocode}
+\newcommand*{\@gls@onlypremakeg}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@onlypremakeg}
+% Adds the specified control sequence to the list of commands that
+% must be disabled after \ics{makeglossaries}.
+% \begin{macrocode}
+\newcommand*{\@onlypremakeg}[1]{%
+ \ifx\@gls@onlypremakeg\@empty
+ \def\@gls@onlypremakeg{#1}%
+ \else
+ \expandafter\toks@\expandafter{\@gls@onlypremakeg}%
+ \edef\@gls@onlypremakeg{\the\toks@,\noexpand#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@disable@onlypremakeg}
+% Disable all commands listed in \cs{@gls@onlypremakeg}
+% \begin{macrocode}
+\newcommand*{\@disable@onlypremakeg}{%
+\@for\@thiscs:=\@gls@onlypremakeg\do{%
+ \expandafter\@disable@premakecs\@thiscs%
+}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@disable@premakecs}
+% Disables the given command.
+% \begin{macrocode}
+\newcommand*{\@disable@premakecs}[1]{%
+ \def#1{\PackageError{glossaries}{\string#1\space may only be
+ used before \string\makeglossaries}{You can't use
+ \string#1\space after \string\makeglossaries}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Predefined Text}\label{sec:predefinednames}
+% Set up default textual tags that are used by this
+% package. Some of the names may already be defined (e.g.\ by
+% \isty{babel}) so \cs{providecommand} is used.
+%
+% Main glossary title:
+%\begin{macro}{\glossaryname}
+% \begin{macrocode}
+\providecommand*{\glossaryname}{Glossary}
+% \end{macrocode}
+%\end{macro}
+% The title for the "acronym" glossary type (which is defined if
+% \pkgopt{acronym} package option is used) is given by
+% \cs{acronymname}. If the \pkgopt{acronym}
+% package option is not used, \cs{acronymname} won't be used.
+%\begin{macro}{\acronymname}
+% \begin{macrocode}
+\providecommand*{\acronymname}{Acronyms}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glssettoctitle}
+% Sets the TOC title for the given glossary.
+%\changes{1.15}{2008-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glssettoctitle}[1]{%
+ \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}
+% \end{macrocode}
+%\end{macro}
+%
+% The following commands provide text for the headers used by
+% some of the tabular-like glossary
+% styles. Whether or not they get used in the glossary depends on
+% the glossary style.
+%\begin{macro}{\entryname}
+% \begin{macrocode}
+\providecommand*{\entryname}{Notation}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\descriptionname}
+% \begin{macrocode}
+\providecommand*{\descriptionname}{Description}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\symbolname}
+% \begin{macrocode}
+\providecommand*{\symbolname}{Symbol}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\pagelistname}
+% \begin{macrocode}
+\providecommand*{\pagelistname}{Page List}
+% \end{macrocode}
+%\end{macro}
+% Labels for \app{makeindex}'s symbol and number groups:
+%\begin{macro}{\glssymbolsgroupname}
+% \begin{macrocode}
+\providecommand*{\glssymbolsgroupname}{Symbols}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsnumbersgroupname}
+% \begin{macrocode}
+\providecommand*{\glsnumbersgroupname}{Numbers}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glspluralsuffix}
+% The default plural is formed by appending \cs{glspluralsuffix} to
+% the singular form.
+% \begin{macrocode}
+\newcommand*{\glspluralsuffix}{s}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsacrpluralsuffix}
+% Default plural suffix for acronyms
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsacrpluralsuffix}{\glspluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsupacrpluralsuffix}
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsupacrpluralsuffix}{\glstextup{\glsacrpluralsuffix}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\seename}
+% \begin{macrocode}
+\providecommand*{\seename}{see}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\andname}
+% \begin{macrocode}
+\providecommand*{\andname}{\&}
+% \end{macrocode}
+%\end{macro}
+% Add multi-lingual support\changes{1.08}{2007-10-13}{Added
+% babel support}. Thanks to everyone who contributed to the
+% translations from both comp.text.tex and via email.
+%\begin{macro}{\RequireGlossariesLang}
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\RequireGlossariesLang}[1]{%
+ \@ifundefined{ver@glossaries-#1.ldf}{\input{glossaries-#1.ldf}}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ProvidesGlossariesLang}
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\ProvidesGlossariesLang}[1]{%
+ \ProvidesFile{glossaries-#1.ldf}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\addglossarytocaptions}
+% Does nothing if \sty{translator} hasn't been loaded.
+% \begin{macrocode}
+\newcommand*{\addglossarytocaptions}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% As from v4.12, multlingual support has been split off into
+% independently-maintained language modules.
+% \begin{macrocode}
+\ifglstranslate
+% \end{macrocode}
+% Load \sty{tracklang}
+% \begin{macrocode}
+ \RequirePackage{tracklang}
+% \end{macrocode}
+% Load \sty{translator} if required.
+% \begin{macrocode}
+ \@gls@usetranslator
+% \end{macrocode}
+% If using \isty{translator}, \ics{glossaryname} should be defined
+% in terms of \ics{translate}, but if babel is also loaded, it will
+% redefine \cs{glossaryname} whenever the language is set, so
+% override it. (Don't use \ics{addto} as \isty{polyglossia} doesn't
+% define it.)
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+ \@ifpackageloaded{translator}
+ {%
+% \end{macrocode}
+% If the language options have been specified through the
+% document class, then \sty{translator} can pick them up. If not,
+% \sty{translator} will default to English and any language
+% option passed to \sty{babel} won't be detected, so if
+% \cs{trans@languages} is just \texttt{English} and \cs{bbl@loaded}
+% isn't simply \texttt{english}, then don't use the \sty{translator}
+% dictionaries.
+% \begin{macrocode}
+ \ifboolexpr
+ {
+ test {\ifdefstring{\trans@languages}{English}}
+ and not
+ test {\ifdefstring{bbl@loaded}{english}}
+ }
+ {%
+ \let\glsifusetranslator\@secondoftwo
+ }%
+ {%
+ \usedictionary{glossaries-dictionary}%
+ \renewcommand*{\addglossarytocaptions}[1]{%
+ \ifcsundef{captions#1}{}%
+ {%
+ \expandafter\let\expandafter\@gls@tmp\csname captions#1\endcsname
+ \expandafter\toks@\expandafter{\@gls@tmp
+ \renewcommand*{\glossaryname}{\translate{Glossary}}%
+ }%
+ \expandafter\edef\csname captions#1\endcsname{\the\toks@}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+% Check for tracked languages
+% \begin{macrocode}
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \@gls@missinglang@warn\this@dialect\CurrentTrackedLanguage
+ }%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+% if using \sty{translator} use translator interface.
+% \begin{macrocode}
+ \glsifusetranslator
+ {%
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{gls@tr@set@#1@toctitle}%
+ {%
+ \csuse{gls@tr@set@#1@toctitle}%
+ }%
+ {%
+ \def\glossarytoctitle{\csname @glotype@#1@title\endcsname}%
+ }%
+ }%
+ \renewcommand*{\glossaryname}{\translate{Glossary}}%
+ \renewcommand*{\acronymname}{\translate{Acronyms}}%
+ \renewcommand*{\entryname}{\translate{Notation (glossaries)}}%
+ \renewcommand*{\descriptionname}{%
+ \translate{Description (glossaries)}}%
+ \renewcommand*{\symbolname}{\translate{Symbol (glossaries)}}%
+ \renewcommand*{\pagelistname}{%
+ \translate{Page List (glossaries)}}%
+ \renewcommand*{\glssymbolsgroupname}{%
+ \translate{Symbols (glossaries)}}%
+ \renewcommand*{\glsnumbersgroupname}{%
+ \translate{Numbers (glossaries)}}%
+ }{}%
+\fi
+% \end{macrocode}
+%
+%\begin{macro}{\nopostdesc}
+% Provide a means to suppress description terminator for a given
+% entry. (Useful for entries with no description.) Has no
+% effect outside the glossaries.
+%\changes{1.17}{2008-12-26}{new}
+%\changes{3.05}{2013-04-21}{made robust}
+% \begin{macrocode}
+\DeclareRobustCommand*{\nopostdesc}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@nopostdesc}
+% Suppress next description terminator.
+% \begin{macrocode}
+\newcommand*{\@nopostdesc}{%
+ \let\org@glspostdescription\glspostdescription
+ \def\glspostdescription{%
+ \let\glspostdescription\org@glspostdescription}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@no@post@desc}
+% Used for comparison purposes.
+% \begin{macrocode}
+\newcommand*{\@no@post@desc}{\nopostdesc}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspar}
+% Provide means of having a paragraph break in glossary entries
+% \begin{macrocode}
+\newcommand{\glspar}{\par}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\setStyleFile}
+% Sets the style file. The relevant extension is appended.
+% \begin{macrocode}
+\newcommand{\setStyleFile}[1]{%
+ \renewcommand*{\gls@istfilebase}{#1}%
+% \end{macrocode}
+% Just in case \cs{istfilename} has been modified.
+% \begin{macrocode}
+ \ifglsxindy
+ \def\istfilename{\gls@istfilebase.xdy}
+ \else
+ \def\istfilename{\gls@istfilebase.ist}
+ \fi
+}
+% \end{macrocode}
+% This command only has an effect prior to using
+% \ics{makeglossaries}.
+% \begin{macrocode}
+\@onlypremakeg\setStyleFile
+% \end{macrocode}
+%\end{macro}
+%
+% The name of the \app{makeindex} or \app{xindy} style file
+% is given by \cs{istfilename}. This file is
+% created by \ics{writeist} (which is used by
+% \ics{makeglossaries}) so
+% redefining this command will only have an effect if it is
+% done \emph{before} \cs{makeglossaries}. As from v1.17, use
+% \ics{setStyleFile} instead of directly redefining \cs{istfilename}.
+%\begin{macro}{\istfilename}
+%\changes{1.17}{2008-12-26}{added xindy support}
+% \begin{macrocode}
+\ifglsxindy
+ \def\istfilename{\gls@istfilebase.xdy}
+\else
+ \def\istfilename{\gls@istfilebase.ist}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@istfilebase}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\gls@istfilebase}{\jobname}
+% \end{macrocode}
+%\end{macro}
+% The \app{makeglossaries} Perl script picks up this name
+% from the auxiliary file. If the name ends with \filetype{.xdy}
+% it calls \app{xindy} otherwise it calls \app{makeindex}.
+% Since its not required by
+% \LaTeX, \cs{@istfilename} ignores its argument.
+%\begin{macro}{\@istfilename}
+% \begin{macrocode}
+\newcommand*{\@istfilename}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% This command is the value of the \istkey{page\_compositor}
+% \app{makeindex} key. Again, any redefinition of this command
+% must take place \emph{before} \cs{writeist} otherwise it
+% will have no effect. As from 1.17, use \ics{glsSetCompositor}
+% instead of directly redefining \cs{glscompositor}.
+%\begin{macro}{\glscompositor}
+% \begin{macrocode}
+\newcommand*{\glscompositor}{.}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsSetCompositor}
+% Sets the compositor.
+% \begin{macrocode}
+\newcommand*{\glsSetCompositor}[1]{%
+ \renewcommand*{\glscompositor}{#1}}
+% \end{macrocode}
+% Only use before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\glsSetCompositor
+% \end{macrocode}
+%\end{macro}
+%
+% (The page compositor is usually defined as a dash when using
+% \app{makeindex}, but most of the standard counters used
+% by \LaTeX\ use a full stop as the compositor, which is why I
+% have used it as the default.) If \app{xindy} is used
+% \cs{glscompositor} only affects the \texttt{arabic-page-numbers}
+% location class.
+%\begin{macro}{\@glsAlphacompositor}
+% This is only used by \app{xindy}. It specifies the
+% compositor to use when location numbers are in the form
+% \meta{letter}\meta{compositor}\meta{number}. For example,
+% if \cs{@glsAlphacompositor} is set to ``.'' then it allows
+% locations such as A.1 whereas if \cs{@glsAlphacompositor} is
+% set to ``-'' then it allows locations such as A-1.
+% \begin{macrocode}
+\newcommand*{\@glsAlphacompositor}{\glscompositor}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsSetAlphaCompositor}
+% Sets the alpha compositor.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \renewcommand*\@glsAlphacompositor{#1}}
+\else
+ \newcommand*\glsSetAlphaCompositor[1]{%
+ \glsnoxindywarning\glsSetAlphaCompositor}
+\fi
+% \end{macrocode}
+% Can only be used before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\glsSetAlphaCompositor
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@suffixF}
+%\changes{1.17}{2008-12-26}{new}
+% Suffix to use for a two page list. This overrides the separator
+% and the closing page number if set to something other than
+% an empty macro.
+% \begin{macrocode}
+\newcommand*{\gls@suffixF}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsSetSuffixF}
+%\changes{1.17}{2008-12-26}{new}
+% Sets the suffix to use for a two page list.
+% \begin{macrocode}
+\newcommand*{\glsSetSuffixF}[1]{%
+ \renewcommand*{\gls@suffixF}{#1}}
+% \end{macrocode}
+% Only has an effect when used before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\glsSetSuffixF
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@suffixFF}
+%\changes{1.17}{2008-12-26}{new}
+% Suffix to use for a three page list. This overrides the separator
+% and the closing page number if set to something other than
+% an empty macro.
+% \begin{macrocode}
+\newcommand*{\gls@suffixFF}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsSetSuffixFF}
+%\changes{1.17}{2008-12-26}{new}
+% Sets the suffix to use for a three page list.
+% \begin{macrocode}
+\newcommand*{\glsSetSuffixFF}[1]{%
+ \renewcommand*{\gls@suffixFF}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnumberformat}
+% The command \cs{glsnumberformat} indicates the default
+% format for the page numbers in the glossary. (Note that this
+% is not the same as \ics{glossaryentrynumbers}, but applies
+% to individual numbers or groups of numbers within an entry's
+% associated number list.) If hyperlinks are defined, it will use
+% \ics{glshypernumber}, otherwise it will simply display its
+% argument ``as is''.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{hyperlink}%
+{%
+ \newcommand*{\glsnumberformat}[1]{#1}%
+}%
+{%
+ \newcommand*{\glsnumberformat}[1]{\glshypernumber{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Individual numbers in an entry's associated number list are
+% delimited using \cs{delimN} (which corresponds to the
+% \istkey{delim\_n} \app{makeindex} keyword). The default value
+% is a comma followed by a space.
+%\begin{macro}{\delimN}
+% \begin{macrocode}
+\newcommand{\delimN}{, }
+% \end{macrocode}
+%\end{macro}
+% A range of numbers within an entry's associated number list is
+% delimited using \cs{delimR} (which corresponds to the
+% \istkey{delim\_r} \app{makeindex} keyword). The default is
+% an en-dash.
+%\begin{macro}{\delimR}
+% \begin{macrocode}
+\newcommand{\delimR}{--}
+% \end{macrocode}
+%\end{macro}
+%
+% The glossary preamble is given by \cs{glossarypreamble}. This
+% will appear after the glossary sectioning command, and before the
+% \env{theglossary} environment. It is designed to allow the
+% user to add information pertaining to the glossary (e.g.\ ``page
+% numbers in italic indicate the primary definition'') therefore
+% \cs{glossarypremable} shouldn't be affected by the glossary
+% style. (So if you define your own glossary style, don't have it
+% change \cs{glossarypreamble}.) The preamble is empty by
+% default. If you have multiple glossaries, and you want a
+% different preamble for each glossary, you will need to use
+% \ics{printglossary} for each glossary type, instead of
+% \ics{printglossaries}, and redefine \cs{glossarypreamble}
+% before each \ics{printglossary}.
+%\begin{macro}{\glossarypreamble}
+%\changes{3.07}{2013-07-05}{modified to work with
+%\cs{setglossarypreamble}}
+% \begin{macrocode}
+\newcommand*{\glossarypreamble}{%
+ \csuse{@glossarypreamble@\currentglossary}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\setglossarypreamble}
+%\begin{definition}
+%\cs{setglossarypreamble}\oarg{type}\marg{text}
+%\end{definition}
+% Code provided by Michael Pock.
+%\changes{3.07}{2013-07-05}{new}
+% \begin{macrocode}
+\newcommand{\setglossarypreamble}[2][\glsdefaulttype]{%
+ \ifglossaryexists{#1}{%
+ \csgdef{@glossarypreamble@#1}{#2}%
+ }{%
+ \GlossariesWarning{%
+ Glossary `#1' is not defined%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% The glossary postamble is given by \cs{glossarypostamble}.
+% This is provided to allow the user to
+% add something after the end of the \env{theglossary}
+% environment (again, this shouldn't be affected by the
+% glossary style). It is, of course, possible to simply add the
+% text after \ics{printglossary}, but if you only want the
+% postamble to appear after the first glossary, but not after
+% subsequent glossaries, you can do something like:
+%\begin{verbatim}
+%\renewcommand{\glossarypostamble}{For a complete list of terms
+%see \cite{blah}\gdef\glossarypreamble{}}
+%\end{verbatim}
+%\begin{macro}{\glossarypostamble}
+% \begin{macrocode}
+\newcommand*{\glossarypostamble}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossarysection}
+% The sectioning command that starts a glossary is given by
+% \cs{glossarysection}. (This does not form part of the
+% glossary style, and so should not be changed by a glossary
+% style.) If \ics{phantomsection}
+% is defined, it uses \cs{\@p@glossarysection}, otherwise it
+% uses \cs{@glossarysection}.
+%\changes{1.05}{2007-08-10}{added \cs{@mkboth} to
+%\cs{glossarysection}}
+%\changes{2.02}{2009-07-13}{changed \cs{@mkboth} to
+%\cs{glossarymark}}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\newcommand*{\glossarysection}[2][\@gls@title]{%
+ \def\@gls@title{#2}%
+ \ifcsundef{phantomsection}%
+ {%
+ \@glossarysection{#1}{#2}%
+ }%
+ {%
+ \@p@glossarysection{#1}{#2}%
+ }%
+% \end{macrocode}
+%\changes{3.13a}{2013-11-05}{changed \cs{glossarymark} to \cs{glsglossarymark}}
+% \begin{macrocode}
+ \glsglossarymark{\glossarytoctitle}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsglossarymark}
+%\changes{2.02}{2009-07-13}{New}
+%\changes{2.03}{2009-09-23}{Added check to see if it's already
+%defined}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+%\changes{3.11a}{2013-10-15}{replaced \cs{MakeUppercase} with
+%\cs{mfirstucMakeUppercase}}
+%\changes{3.13a}{2013-11-05}{renamed \cs{glossarymark} to
+%\cs{glsglossarymark} to avoid conflict with memoir}
+% Sets the header mark for the glossary. Takes the glossary short
+% (TOC) title as the argument.
+% \begin{macrocode}
+\ifcsundef{glossarymark}%
+{%
+ \newcommand{\glsglossarymark}[1]{\glossarymark{#1}}
+}%
+{%
+ \@ifclassloaded{memoir}
+ {%
+ \newcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \markboth{\memUChead{#1}}{\memUChead{#1}}%
+ \else
+ \markboth{#1}{#1}%
+ \fi
+ }
+ }%
+ {%
+ \newcommand{\glsglossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\mfirstucMakeUppercase{#1}}{\mfirstucMakeUppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+ }
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glossarymark}
+% Provided for backward compatibility:
+% \begin{macrocode}
+\providecommand{\glossarymark}[1]{%
+ \ifglsucmark
+ \@mkboth{\mfirstucMakeUppercase{#1}}{\mfirstucMakeUppercase{#1}}%
+ \else
+ \@mkboth{#1}{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The required sectional unit is given by \cs{@@glossarysec}
+% which was defined by the \pkgopt{section} package option. The
+% starred form of the command is chosen. If you don't want any sectional
+% command, you will need to redefine \cs{glossarysection}.
+% The sectional unit can be changed, if different sectional units
+% are required.
+%\begin{macro}{\setglossarysection}
+%\changes{1.1}{2008-02-22}{new}
+% \begin{macrocode}
+\newcommand*{\setglossarysection}[1]{%
+\setkeys{glossaries.sty}{section=#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%The command \cs{@glossarysection} indicates how to start
+% the glossary section if \ics{phantomsection} is not defined.
+%\begin{macro}{\@glossarysection}
+%\changes{1.1}{2008-02-22}{numbered sections and auto label added}
+%\changes{4.07}{2014-04-04}{added optional argument when using unstarred
+%version}
+% \begin{macrocode}
+\newcommand*{\@glossarysection}[2]{%
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname[#1]{#2}%
+ }%
+ {%
+ \csname\@@glossarysec\endcsname*{#2}%
+ \@gls@toc{#1}{\@@glossarysec}%
+ }%
+% \end{macrocode}
+% Do automatic labelling if required
+% \begin{macrocode}
+ \@@glossaryseclabel
+}
+% \end{macrocode}
+%\end{macro}
+%
+% As \cs{@glossarysection}, but put in
+% \ics{phantomsection}, and swap where \cs{@gls@toc} goes.
+% If using chapters do a \cs{clearpage}. This ensures that
+% the hyper link from the table of contents leads to the line above
+% the heading, rather than the line below it.
+%\begin{macro}{\@p@glossarysection}
+%\changes{1.1}{2008-02-22}{numbered sections and auto label added}
+% \begin{macrocode}
+\newcommand*{\@p@glossarysection}[2]{%
+ \glsclearpage
+ \phantomsection
+ \ifdefempty\@@glossarysecstar
+ {%
+ \csname\@@glossarysec\endcsname{#2}%
+ }%
+ {%
+ \@gls@toc{#1}{\@@glossarysec}%
+ \csname\@@glossarysec\endcsname*{#2}%
+ }%
+% \end{macrocode}
+% Do automatic labelling if required
+% \begin{macrocode}
+ \@@glossaryseclabel
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@doclearpage}
+%The \cs{gls@doclearpage} command is used to issue a
+% \cs{clearpage} (or \cs{cleardoublepage}) depending
+% on whether the glossary sectional unit is a chapter. If the
+% sectional unit is something else, do nothing.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+%\changes{3.07}{2013-07-05}{added check for openright}
+% \begin{macrocode}
+\newcommand*{\gls@doclearpage}{%
+ \ifthenelse{\equal{\@@glossarysec}{chapter}}%
+ {%
+ \ifcsundef{cleardoublepage}%
+ {%
+ \clearpage
+ }%
+ {%
+ \ifcsdef{if@openright}%
+ {%
+ \if@openright
+ \cleardoublepage
+ \else
+ \clearpage
+ \fi
+ }%
+ {%
+ \cleardoublepage
+ }%
+ }%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsclearpage}
+% This just calls \cs{gls@doclearpage}, but it makes it easier to
+% have a user command so that the user can override it.
+%\changes{1.19}{2009-03-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsclearpage}{\gls@doclearpage}
+% \end{macrocode}
+%\end{macro}
+%
+% The glossary is added to the table of contents if glstoc flag set.
+% If it is set, \cs{@gls@toc} will add a line to the
+% \filetype{.toc} file, otherwise it will do nothing.
+% (The first argument to \cs{@gls@toc} is the title for the
+% table of contents, the second argument is the sectioning type.)
+%\begin{macro}{\@gls@toc}
+%\changes{1.1}{2008-02-22}{numberline added}
+%\changes{4.12}{2014-11-22}{added \cs{protect} to \cs{numberline}}
+% \begin{macrocode}
+\newcommand*{\@gls@toc}[2]{%
+ \ifglstoc
+ \ifglsnumberline
+ \addcontentsline{toc}{#2}{\protect\numberline{}#1}%
+ \else
+ \addcontentsline{toc}{#2}{#1}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Xindy}
+% This section defines commands that only have an effect if
+% \app{xindy} is used to sort the glossaries.
+%\begin{macro}{\glsnoxindywarning}
+% Issues a warning if \app{xindy} hasn't been specified.
+% These warnings can be suppressed by redefining
+% \cs{glsnoxindywarning} to ignore its argument
+% \begin{macrocode}
+\newcommand*{\glsnoxindywarning}[1]{%
+ \GlossariesWarning{Not in xindy mode --- ignoring \string#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsnomakeindexwarning}
+%\changes{4.24}{2016-05-27}{new}
+% Reverse for commands that may only be used with \app{makeindex}.
+% \begin{macrocode}
+\newcommand*{\glsnomakeindexwarning}[1]{%
+ \GlossariesWarning{Not in makeindex mode --- ignoring \string#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyattributes}
+% Define list of attributes (\cs{string} is used in case
+% the double quote character has been made active)
+% \begin{macrocode}
+\ifglsxindy
+ \edef\@xdyattributes{\string"default\string"}%
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@xdyattributelist}
+% Comma-separated list of attributes.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\ifglsxindy
+ \edef\@xdyattributelist{}%
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@xdylocref}
+% Define list of markup location references.
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdylocref{}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@ifinlist}
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@ifinlist}[4]{%
+ \def\@do@ifinlist##1,#1,##2\end@doifinlist{%
+ \def\@gls@listsuffix{##2}%
+ \ifx\@gls@listsuffix\@empty
+ #4%
+ \else
+ #3%
+ \fi
+ }%
+ \@do@ifinlist,#2,#1,\end@doifinlist
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddXdyCounters}
+%\changes{3.0}{2011-04-02}{new}
+% Need to know all the counters that will be used in location
+% numbers for Xindy. Argument may be a single counter name or a
+% comma-separated list of counter names.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@xdycounters}{\glscounter}
+ \newcommand*\GlsAddXdyCounters[1]{%
+ \@for\@gls@ctr:=#1\do{%
+% \end{macrocode}
+% Check if already in list before adding.
+% \begin{macrocode}
+ \edef\@do@addcounter{%
+ \noexpand\@gls@ifinlist{\@gls@ctr}{\@xdycounters}{}%
+ {%
+ \noexpand\edef\noexpand\@xdycounters{\@xdycounters,%
+ \noexpand\@gls@ctr}%
+ }%
+ }%
+ \@do@addcounter
+ }
+ }
+% \end{macrocode}
+% Only has an effect before \ics{writeist}:
+% \begin{macrocode}
+ \@onlypremakeg\GlsAddXdyCounters
+\else
+ \newcommand*\GlsAddXdyCounters[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@disabled@glsaddxdycounters}
+% Counters must all be identified before adding attributes.
+% \begin{macrocode}
+\newcommand*\@disabled@glsaddxdycounters{%
+ \PackageError{glossaries}{\string\GlsAddXdyCounters\space
+ can't be used after \string\GlsAddXdyAttribute}{Move all
+ occurrences of \string\GlsAddXdyCounters\space before the first
+ instance of \string\GlsAddXdyAttribute}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddXdyAttribute}
+% Adds an attribute.
+% \begin{macrocode}
+\ifglsxindy
+% \end{macrocode}
+% First define internal command that adds an attribute for a given
+% counter (2nd argument is the counter):
+% \begin{macrocode}
+ \newcommand*\@glsaddxdyattribute[2]{%
+% \end{macrocode}
+% Add to xindy attribute list
+% \begin{macrocode}
+ \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string" ^^J
+ \string"#2#1\string"}%
+% \end{macrocode}
+% Add to xindy markup location.
+% \begin{macrocode}
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\glstildechar n%
+ \expandafter\string\csname glsX#2X#1\endcsname
+ \string" ^^J
+ :close \string"\string" ^^J
+ :attr \string"#2#1\string")}%
+% \end{macrocode}
+% Define associated attribute command
+% \cs{glsX}\meta{counter}"X"\meta{attribute}\marg{Hprefix}\marg{n}
+% \begin{macrocode}
+ \expandafter\gdef\csname glsX#2X#1\endcsname##1##2{%
+ \setentrycounter[##1]{#2}\csname #1\endcsname{##2}%
+ }%
+ }
+% \end{macrocode}
+% High-level command:
+% \begin{macrocode}
+ \newcommand*\GlsAddXdyAttribute[1]{%
+% \end{macrocode}
+% Add to comma-separated attribute list
+% \begin{macrocode}
+ \ifx\@xdyattributelist\@empty
+ \edef\@xdyattributelist{#1}%
+ \else
+ \edef\@xdyattributelist{\@xdyattributelist,#1}%
+ \fi
+% \end{macrocode}
+% Iterate through all specified counters and add counter-dependent
+% attributes:
+% \begin{macrocode}
+ \@for\@this@counter:=\@xdycounters\do{%
+ \protected@edef\gls@do@addxdyattribute{%
+ \noexpand\@glsaddxdyattribute{#1}{\@this@counter}%
+ }
+ \gls@do@addxdyattribute
+ }%
+% \end{macrocode}
+% All occurrences of \cs{GlsAddXdyCounters} must be used before this
+% command
+% \begin{macrocode}
+ \let\GlsAddXdyCounters\@disabled@glsaddxdycounters
+ }
+% \end{macrocode}
+% Only has an effect before \ics{writeist}:
+% \begin{macrocode}
+ \@onlypremakeg\GlsAddXdyAttribute
+\else
+ \newcommand*\GlsAddXdyAttribute[1]{%
+ \glsnoxindywarning\GlsAddXdyAttribute}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@addpredefinedattributes}
+% Add known attributes for all defined counters
+% \begin{macrocode}
+\ifglsxindy
+\newcommand*{\@gls@addpredefinedattributes}{%
+ \GlsAddXdyAttribute{glsnumberformat}
+ \GlsAddXdyAttribute{textrm}
+ \GlsAddXdyAttribute{textsf}
+ \GlsAddXdyAttribute{texttt}
+ \GlsAddXdyAttribute{textbf}
+ \GlsAddXdyAttribute{textmd}
+ \GlsAddXdyAttribute{textit}
+ \GlsAddXdyAttribute{textup}
+ \GlsAddXdyAttribute{textsl}
+ \GlsAddXdyAttribute{textsc}
+ \GlsAddXdyAttribute{emph}
+ \GlsAddXdyAttribute{glshypernumber}
+ \GlsAddXdyAttribute{hyperrm}
+ \GlsAddXdyAttribute{hypersf}
+ \GlsAddXdyAttribute{hypertt}
+ \GlsAddXdyAttribute{hyperbf}
+ \GlsAddXdyAttribute{hypermd}
+ \GlsAddXdyAttribute{hyperit}
+ \GlsAddXdyAttribute{hyperup}
+ \GlsAddXdyAttribute{hypersl}
+ \GlsAddXdyAttribute{hypersc}
+ \GlsAddXdyAttribute{hyperemph}
+% \end{macrocode}
+%\changes{4.12}{2014-11-22}{Added glsignore attribute}
+% \begin{macrocode}
+ \GlsAddXdyAttribute{glsignore}
+}
+\else
+ \let\@gls@addpredefinedattributes\relax
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyuseralphabets}
+% List of additional alphabets
+% \begin{macrocode}
+\def\@xdyuseralphabets{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddXdyAlphabet}
+% \cs{GlsAddXdyAlphabet}\marg{name}\marg{definition}
+% adds a new alphabet called \meta{name}. The definition
+% must use \app{xindy} syntax.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \edef\@xdyuseralphabets{%
+ \@xdyuseralphabets ^^J
+ (define-alphabet "#1" (#2))}}
+\else
+ \newcommand*{\GlsAddXdyAlphabet}[2]{%
+ \glsnoxindywarning\GlsAddXdyAlphabet}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+% This code is only required for xindy:
+% \begin{macrocode}
+\ifglsxindy
+% \end{macrocode}
+%
+%\begin{macro}{\@gls@xdy@locationlist}
+%\changes{3.0}{2011-04-02}{new}
+% List of predefined location names.
+% \begin{macrocode}
+ \newcommand*{\@gls@xdy@locationlist}{%
+ roman-page-numbers,%
+ Roman-page-numbers,%
+ arabic-page-numbers,%
+ alpha-page-numbers,%
+ Alpha-page-numbers,%
+ Appendix-page-numbers,%
+ arabic-section-numbers%
+ }
+% \end{macrocode}
+%\end{macro}
+% Each location class \meta{name} has the format stored in
+% \cs{@gls@xdy@Lclass@}\meta{name}. Set up predefined
+% formats.
+%
+%\begin{macro}{\@gls@xdy@Lclass@roman-page-numbers}
+% Lower case Roman numerals (i, ii, \ldots). In the event that
+% \ics{roman} has been redefined to produce a fancy form of
+% roman numerals, attempt to work out how it will be written
+% to the output file.
+% \begin{macrocode}
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@tmp
+ \ifx\@tmp\@gls@roman
+ \expandafter
+ \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{%
+ \string"roman-numbers-lowercase\string"%
+ }%
+ \else
+ \expandafter
+ \edef\csname @gls@xdy@Lclass@roman-page-numbers\endcsname{
+ :sep \string"\@gls@roman\string"%
+ }%
+ \fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdy@Lclass@Roman-page-numbers}
+% Upper case Roman numerals (I, II, \ldots).
+% \begin{macrocode}
+ \expandafter\def\csname @gls@xdy@Lclass@Roman-page-numbers\endcsname{%
+ \string"roman-numbers-uppercase\string"%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdy@Lclass@arabic-page-numbers}
+% Arabic numbers (1, 2, \ldots).
+% \begin{macrocode}
+ \expandafter\def\csname @gls@xdy@Lclass@arabic-page-numbers\endcsname{%
+ \string"arabic-numbers\string"%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdy@Lclass@alpha-page-numbers}
+% Lower case alphabetical (a, b, \ldots).
+% \begin{macrocode}
+ \expandafter\def\csname @gls@xdy@Lclass@alpha-page-numbers\endcsname{%
+ \string"alpha\string"%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdy@Lclass@Alpha-page-numbers}
+% Upper case alphabetical (A, B, \ldots).
+% \begin{macrocode}
+ \expandafter\def\csname @gls@xdy@Lclass@Alpha-page-numbers\endcsname{%
+ \string"ALPHA\string"%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdy@Lclass@Appendix-page-numbers}
+% Appendix style locations (e.g.\ A-1, A-2, \ldots, B-1, B-2,
+% \ldots). The separator is given by \ics{@glsAlphacompositor}.
+% \begin{macrocode}
+ \expandafter\def\csname @gls@xdy@Lclass@Appendix-page-numbers\endcsname{%
+ \string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string"%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdy@Lclass@arabic-section-numbers}
+% Section number style locations (e.g.\ 1.1, 1.2, \ldots). The
+% compositor is given by \ics{glscompositor}.
+% \begin{macrocode}
+ \expandafter\def\csname @gls@xdy@Lclass@arabic-section-numbers\endcsname{%
+ \string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string"%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyuserlocationdefs}
+% List of additional location definitions
+% (separated by "^^J")
+% \begin{macrocode}
+ \def\@xdyuserlocationdefs{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@xdyuserlocationnames}
+% List of additional user location names
+% \begin{macrocode}
+ \def\@xdyuserlocationnames{}
+% \end{macrocode}
+%\end{macro}
+%
+% End of xindy-only block:
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+%\begin{macro}{\@xdycrossrefhook}
+%\changes{4.30}{2017-06-11}{new}
+%Hook used after writing cross-reference class information.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand\@xdycrossrefhook{}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddXdyLocation}
+% \cs{GlsAddXdyLocation}\oarg{prefix-loc}\marg{name}\marg{definition}
+% Define a new location called \meta{name}. The definition
+% must use \app{xindy} syntax. (Note that this doesn't
+% check to see if the location is already defined. That is left
+% to \app{xindy} to complain about.)
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsAddXdyLocation}[3][]{%
+ \def\@gls@tmp{#1}%
+ \ifx\@gls@tmp\@empty
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#2\string"^^J\space\space
+ \space(:sep \string"{}\glsopenbrace\string" #3
+ :sep \string"\glsclosebrace\string"))
+ }%
+ \else
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#2\string"^^J\space\space
+ \space(:sep "\glsopenbrace"
+ #1
+ :sep "\glsclosebrace\glsopenbrace" #3
+ :sep "\glsclosebrace"))
+ }%
+ \fi
+% \end{macrocode}
+%\changes{4.30}{2017-06-11}{bug fix: changed \#1 to \#2}
+% \begin{macrocode}
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#2\string"}%
+ }
+% \end{macrocode}
+% Only has an effect before \ics{writeist}:
+% \begin{macrocode}
+ \@onlypremakeg\GlsAddXdyLocation
+\else
+ \newcommand*{\GlsAddXdyLocation}[2]{%
+ \glsnoxindywarning\GlsAddXdyLocation}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdylocationclassorder}
+% Define location class order
+%\changes{4.30}{2017-06-11}{bug fix: changed \cs{edef} to \cs{def}}
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdylocationclassorder{^^J\space\space\space
+ \string"roman-page-numbers\string"^^J\space\space\space
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ \string"Appendix-page-numbers\string"
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"see\string"
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+% Change the location order.
+%\begin{macro}{\GlsSetXdyLocationClassOrder}
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \def\@xdylocationclassorder{#1}}
+\else
+ \newcommand*\GlsSetXdyLocationClassOrder[1]{%
+ \glsnoxindywarning\GlsSetXdyLocationClassOrder}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdysortrules}
+% Define sort rules
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdysortrules{}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddSortRule}
+% Add a sort rule
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsAddSortRule[2]{%
+ \expandafter\toks@\expandafter{\@xdysortrules}%
+ \protected@edef\@xdysortrules{\the\toks@ ^^J
+ (sort-rule \string"#1\string" \string"#2\string")}%
+ }
+\else
+ \newcommand*\GlsAddSortRule[2]{%
+ \glsnoxindywarning\GlsAddSortRule}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdyrequiredstyles}
+% Define list of required styles (this should be a comma-separated
+% list of \app{xindy} styles)
+% \begin{macrocode}
+\ifglsxindy
+ \def\@xdyrequiredstyles{tex}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddXdyStyle}
+% Add a \app{xindy} style to the list of required styles
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \edef\@xdyrequiredstyles{\@xdyrequiredstyles,#1}}%
+\else
+ \newcommand*\GlsAddXdyStyle[1]{%
+ \glsnoxindywarning\GlsAddXdyStyle}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsSetXdyStyles}
+% Reset the list of required styles
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \edef\@xdyrequiredstyles{#1}}
+\else
+ \newcommand*\GlsSetXdyStyles[1]{%
+ \glsnoxindywarning\GlsSetXdyStyles}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\findrootlanguage}
+%\changes{3.06}{2013/06/17}{Obsoleted}
+% This used to determine the root language, using a~bit of trickery
+% since \sty{babel} doesn't supply the information, but now that
+% \sty{babel} is once again actively maintained, we can't do this
+% any more, so \cs{findrootlanguage} is no longer available. Now
+% provide a command that does nothing (in case it's been patched),
+% but this may be removed completely in the future.
+% \begin{macrocode}
+\newcommand*{\findrootlanguage}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdylanguage}
+% The \app{xindy} language setting is required by
+% \app{makeglossaries}, so provide a command for
+% \app{makeglossaries} to pick up the information
+% from the auxiliary file. This command is not needed by the
+% \sty{glossaries} package, so define it to ignore its arguments.
+% \begin{macrocode}
+\def\@xdylanguage#1#2{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetXdyLanguage}
+% Define a command that allows the user to set the language
+% for a given glossary type. The first argument indicates the
+% glossary type. If omitted the main glossary is assumed.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*\GlsSetXdyLanguage[2][\glsdefaulttype]{%
+ \ifglossaryexists{#1}{%
+ \expandafter\def\csname @xdy@#1@language\endcsname{#2}%
+ }{%
+ \PackageError{glossaries}{Can't set language type for
+ glossary type `#1' --- no such glossary}{%
+ You have specified a glossary type that doesn't exist}}}
+\else
+ \newcommand*\GlsSetXdyLanguage[2][]{%
+ \glsnoxindywarning\GlsSetXdyLanguage}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@codepage}
+% The \app{xindy} codepage setting is required by
+% \app{makeglossaries}, so provide a command for
+% \app{makeglossaries} to pick up the information
+% from the auxiliary file. This command is not needed by the
+% \sty{glossaries} package, so define it to ignore its arguments.
+% \begin{macrocode}
+\def\@gls@codepage#1#2{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetXdyCodePage}
+% Define command to set the code page.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \renewcommand*{\gls@codepage}{#1}%
+ }
+% \end{macrocode}
+%\changes{3.07}{2013-07-05}{Added check for fontspec}
+% Suggested by egreg:
+% \begin{macrocode}
+ \AtBeginDocument{%
+ \ifx\gls@codepage\@empty
+ \@ifpackageloaded{fontspec}{\def\gls@codepage{utf8}}{}%
+ \fi
+ }
+\else
+ \newcommand*{\GlsSetXdyCodePage}[1]{%
+ \glsnoxindywarning\GlsSetXdyCodePage}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdylettergroups}
+% Store letter group definitions.
+% \begin{macrocode}
+\ifglsxindy
+ \ifgls@xindy@glsnumbers
+ \def\@xdylettergroups{(define-letter-group
+ \string"glsnumbers\string"^^J\space\space\space
+ :prefixes (\string"0\string" \string"1\string"
+ \string"2\string" \string"3\string" \string"4\string"
+ \string"5\string" \string"6\string" \string"7\string"
+ \string"8\string" \string"9\string")^^J\space\space\space
+ \@xdynumbergrouporder)}
+ \else
+ \def\@xdylettergroups{}
+ \fi
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsAddLetterGroup}
+% Add a new letter group. The first argument is the name
+% of the letter group. The second argument is the \app{xindy}
+% code specifying prefixes and ordering.
+% \begin{macrocode}
+ \newcommand*\GlsAddLetterGroup[2]{%
+ \expandafter\toks@\expandafter{\@xdylettergroups}%
+ \protected@edef\@xdylettergroups{\the\toks@^^J%
+ (define-letter-group \string"#1\string"^^J\space\space\space#2)}%
+ }%
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Loops and conditionals}
+%\begin{macro}{\forallglossaries}
+% To iterate through all glossaries (or comma-separated list of
+% glossary names given in optional argument) use:
+%\begin{definition}
+% \cs{forallglossaries}\oarg{glossary list}\marg{cmd}\marg{code}
+%\end{definition}
+% where \meta{cmd} is
+% a control sequence which will be set to the name of the
+% glossary in the current iteration.
+%\changes{2.01}{2009 May 30}{replaced \cs{ifthenelse} with \cs{ifx}}
+% \begin{macrocode}
+\newcommand*{\forallglossaries}[3][\@glo@types]{%
+ \@for#2:=#1\do{\ifx#2\@empty\else#3\fi}%
+}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\forallacronyms}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\forallacronyms}[2]{%
+ \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\forglsentries}
+% To iterate through all entries in a given glossary use:
+%\begin{definition}
+%\cs{forglsentries}\oarg{type}\marg{cmd}\marg{code}
+%\end{definition}
+%where \meta{type} is the glossary label and \meta{cmd} is a
+% control sequence which will be set to the entry label in the
+% current iteration.
+%\changes{2.01}{2009 May 30}{replaced \cs{ifthenelse} with \cs{ifx}}
+%\changes{3.11a}{2013-10-15}{replaced \cs{ifx} with \cs{ifdefempty}}
+% \begin{macrocode}
+\newcommand*{\forglsentries}[3][\glsdefaulttype]{%
+ \edef\@@glo@list{\csname glolist@#1\endcsname}%
+ \@for#2:=\@@glo@list\do
+ {%
+ \ifdefempty{#2}{}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\forallglsentries}
+% To iterate through all glossary entries over all glossaries listed
+% in the optional argument (the default is all glossaries) use:
+%\begin{definition}
+% \cs{forallglsentries}\oarg{glossary list}\marg{cmd}\marg{code}
+%\end{definition}
+% Within \cs{forallglsentries}, the current glossary type
+% is given by \cs{@@this@glo@}.
+% \begin{macrocode}
+\newcommand*{\forallglsentries}[3][\@glo@types]{%
+ \expandafter\forallglossaries\expandafter[#1]{\@@this@glo@}%
+ {%
+ \forglsentries[\@@this@glo@]{#2}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglossaryexists}
+% To check to see if a glossary exists use:
+%\begin{definition}
+%\cs{ifglossaryexists}\marg{type}\marg{true-text}\marg{false-text}
+%\end{definition}
+%where \meta{type} is the glossary's label.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\newcommand{\ifglossaryexists}[3]{%
+ \ifcsundef{@glotype@#1@out}{#3}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Since the label is used to form the name of control sequences, by
+% default UTF8 etc characters can't be used in the label. A possible
+% workaround is to use \ics{scantokens}, but commands such as
+% \ics{glsentrytext} will no longer be usable in sectioning, caption
+% etc commands. If the user really wants to be able to construct a
+% label with UTF8 characters, allow them the means to do so (but on
+% their own head be it, if they then use entries in \ics{section}
+% etc). This can be done via:
+%\begin{verbatim}
+%\renewcommand*{\glsdetoklabel}[1]{\scantokens{#1\noexpand}}
+%\end{verbatim}
+% (Note, don't use \ics{detokenize} or it will cause commands like
+% \ics{glsaddall} to fail.)
+% Since redefining \cs{glsdetoklabel} can cause things to go
+% badly wrong, I'm not going to mention it in the main user guide.
+% Only advanced users who know what they're doing ought to attempt
+% it.
+%\begin{macro}{\glsdetoklabel}
+%\changes{4.03}{2014-01-20}{new}
+% \begin{macrocode}
+\newcommand*{\glsdetoklabel}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsentryexists}
+% To check to see if a glossary entry has been defined use:
+%\begin{definition}
+% \cs{ifglsentryexists}\marg{label}\marg{true text}\marg{false text}
+%\end{definition}
+%where \meta{label} is the entry's label.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand{\ifglsentryexists}[3]{%
+ \ifcsundef{glo@\glsdetoklabel{#1}@name}{#3}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsused}
+% To determine if given glossary entry has been
+% used in the document text yet use:
+%\begin{definition}
+% \cs{ifglsused}\marg{label}\marg{true text}\marg{false text}
+%\end{definition}
+% where \meta{label} is the entry's label.
+% If true it will do \meta{true text}
+% otherwise it will do \meta{false text}.
+%\changes{3.11a}{2013-10-15}{replaced \cs{ifthenelse} with
+%\cs{ifbool}}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\ifglsused}[3]{%
+ \ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%The following two commands will cause an error if the given
+% condition fails:
+%
+%\begin{macro}{\glsdoifexists}
+%\begin{definition}
+%\cs{glsdoifexists}\marg{label}\marg{code}
+%\end{definition}
+% Generate an error if entry specified by \meta{label} doesn't
+% exists, otherwise do \meta{code}.
+% \begin{macrocode}
+\newcommand{\glsdoifexists}[2]{%
+ \ifglsentryexists{#1}{#2}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry before you
+ can use it.}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdoifnoexists}
+%\cs{glsdoifnoexists}\marg{label}\marg{code}\par
+% The opposite: only do second argument if the entry doesn't
+% exists. Generate an error message if it exists.
+% \begin{macrocode}
+\newcommand{\glsdoifnoexists}[2]{%
+ \ifglsentryexists{#1}{%
+ \PackageError{glossaries}{Glossary entry `\glsdetoklabel{#1}' has already
+ been defined}{}}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdoifexistsorwarn}
+%\begin{definition}
+%\cs{glsdoifexistsorwarn}\marg{label}\marg{code}
+%\end{definition}
+% Generate a warning if entry specified by \meta{label} doesn't
+% exists, otherwise do \meta{code}.
+%\changes{4.03}{2014-01-20}{new}
+% \begin{macrocode}
+\newcommand{\glsdoifexistsorwarn}[2]{%
+ \ifglsentryexists{#1}{#2}{%
+ \GlossariesWarning{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdoifexistsordo}
+%\begin{definition}
+%\cs{glsdoifexistsordo}\marg{label}\marg{code}\marg{undef code}
+%\end{definition}
+% Generate an error and do \meta{undef code} if entry specified by \meta{label} doesn't
+% exists, otherwise do \meta{code}.
+%\changes{4.19}{2015-11-22}{new}
+% \begin{macrocode}
+\newcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}{%
+ \PackageError{glossaries}{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}
+%\begin{definition}
+%\cs{doifglossarynoexistsordo}\marg{label}\marg{code}\marg{else code}
+%\end{definition}
+%\changes{4.19}{2015-11-22}{new}
+%If glossary given by \meta{label} doesn't exist do \meta{code}
+%otherwise generate an error and do \meta{else code}.
+% \begin{macrocode}
+\newcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists{#1}%
+ {%
+ \PackageError{glossaries}{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshaschildren}
+% \cs{ifglshaschildren}\marg{label}\marg{true part}\marg{false part}
+%\changes{3.02}{2012-05-21}{new}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand{\ifglshaschildren}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \def\do@glshaschildren{#3}%
+ \edef\@gls@thislabel{\glsdetoklabel{#1}}%
+ \expandafter\forglsentries\expandafter
+ [\csname glo@\@gls@thislabel @type\endcsname]
+ {\glo@label}%
+ {%
+ \letcs\glo@parent{glo@\glo@label @parent}%
+ \ifdefequal\@gls@thislabel\glo@parent
+ {%
+ \def\do@glshaschildren{#2}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ \do@glshaschildren
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshasparent}
+%\begin{definition}
+% \cs{ifglshasparent}\marg{label}\marg{true part}\marg{false part}
+%\end{definition}
+%\changes{3.02}{2012-05-21}{new}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand{\ifglshasparent}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \ifcsempty{glo@\glsdetoklabel{#1}@parent}{#3}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshasdesc}
+%\cs{ifglshasdesc}\marg{label}\marg{true part}\marg{false part}
+%\changes{3.08a}{2013-09-28}{new}
+%\changes{3.11a}{2013-10-15}{replaced \cs{ifdefempty} with
+%\cs{ifcsempty}}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\ifglshasdesc}[3]{%
+ \ifcsempty{glo@\glsdetoklabel{#1}@desc}%
+ {#3}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsdescsuppressed}
+%\cs{ifglsdescsuppressed}\marg{label}\marg{true part}\marg{false part}
+%\changes{3.08a}{2013-09-28}{new}
+% Does \meta{true part} if the description is just \cs{nopostdesc}
+% otherwise does \meta{false part}.
+%\changes{4.03}{2014-01-20}{fixed typo}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\ifglsdescsuppressed}[3]{%
+ \ifcsequal{glo@\glsdetoklabel{#1}@desc}{@no@post@desc}%
+ {#2}%
+ {#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshassymbol}
+%\cs{ifglshassymbol}\marg{label}\marg{true part}\marg{false part}
+%\changes{3.08a}{2013-09-28}{new}
+%\changes{3.09a}{2013-10-09}{changed test to check for
+%\cs{@gls@default@symbol}}
+%\changes{3.11a}{2013-10-15}{replaced \cs{ifdefempty} with
+%\cs{ifcsempty}}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.03}{2014-01-20}{replaced \cs{ifcsempty} with
+%\cs{ifdefempty} and replaced \cs{ifx} with \cs{ifdefequal}}
+% \begin{macrocode}
+\newcommand*{\ifglshassymbol}[3]{%
+ \letcs{\@glo@symbol}{glo@\glsdetoklabel{#1}@symbol}%
+ \ifdefempty\@glo@symbol
+ {#3}%
+ {%
+ \ifdefequal\@glo@symbol\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshaslong}
+%\cs{ifglshaslong}\marg{label}\marg{true part}\marg{false part}
+%\changes{3.11a}{2013-10-15}{new}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\ifglshaslong}[3]{%
+ \letcs{\@glo@long}{glo@\glsdetoklabel{#1}@long}%
+ \ifdefempty\@glo@long
+ {#3}%
+ {%
+ \ifdefequal\@glo@long\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshasshort}
+%\cs{ifglshasshort}\marg{label}\marg{true part}\marg{false part}
+%\changes{3.11a}{2013-10-15}{new}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\ifglshasshort}[3]{%
+ \letcs{\@glo@short}{glo@\glsdetoklabel{#1}@short}%
+ \ifdefempty\@glo@short
+ {#3}%
+ {%
+ \ifdefequal\@glo@short\@gls@default@value
+ {#3}%
+ {#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglshasfield}
+%\changes{4.03}{2014-01-20}{new}
+%\begin{definition}
+%\cs{ifglshasfield}\marg{field}\marg{label}\marg{true part}\marg{false
+%part}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\ifglshasfield}[4]{%
+ \glsdoifexists{#2}%
+ {%
+ \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@#1}%
+% \end{macrocode}
+% First check supplied field label is defined.
+% \begin{macrocode}
+ \ifdef\@glo@thisvalue
+ {%
+% \end{macrocode}
+% Is defined, so now check if empty.
+% \begin{macrocode}
+ \ifdefempty\@glo@thisvalue
+ {%
+% \end{macrocode}
+% Is empty, so doesn't have field set.
+% \begin{macrocode}
+ #4%
+ }%
+ {%
+% \end{macrocode}
+% Not empty, so check if set to \cs{@gls@default@value}
+% \begin{macrocode}
+ \ifdefequal\@glo@thisvalue\@gls@default@value
+ {%
+% \end{macrocode}
+% Value is set to the default value.
+% \begin{macrocode}
+ #4%
+ }%
+ {%
+% \end{macrocode}
+% Non-empty, non-default value. Allow user to access this value
+% through \cs{glscurrentfieldvalue}.
+%\changes{4.23}{2016-04-30}{added \cs{glscurrentfieldvalue}}
+% \begin{macrocode}
+ \let\glscurrentfieldvalue\@glo@thisvalue
+ #3%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Field given isn't defined, so check if mapping exists.
+% \begin{macrocode}
+ \@gls@fetchfield{\@gls@thisfield}{#1}%
+% \end{macrocode}
+% If \cs{@gls@thisfield} is defined, we've found a map. If not, the
+% field supplied doesn't exist.
+% \begin{macrocode}
+ \ifdef\@gls@thisfield
+ {%
+% \end{macrocode}
+% Is defined, so now check if empty.
+% \begin{macrocode}
+ \letcs{\@glo@thisvalue}{glo@\glsdetoklabel{#2}@\@gls@thisfield}%
+ \ifdefempty\@glo@thisvalue
+ {%
+% \end{macrocode}
+% Is empty so field hasn't been set.
+% \begin{macrocode}
+ #4%
+ }%
+ {%
+% \end{macrocode}
+% Isn't empty so check if it's been set to \cs{@gls@default@value}.
+% \begin{macrocode}
+ \ifdefequal\@glo@thisvalue\@gls@default@value
+ {%
+% \end{macrocode}
+% Value is set to the default value.
+% \begin{macrocode}
+ #4%
+ }%
+ {%
+% \end{macrocode}
+% Non-empty, non-default value. Allow user to access this value
+% through \cs{glscurrentfieldvalue}.
+%\changes{4.23}{2016-04-30}{added \cs{glscurrentfieldvalue}}
+% \begin{macrocode}
+ \let\glscurrentfieldvalue\@glo@thisvalue
+ #3%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Not defined.
+% \begin{macrocode}
+ \GlossariesWarning{Unknown entry field `#1'}%
+ #4%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glscurrentfieldvalue}
+%\changes{4.23}{2016-04-30}{new}
+% \begin{macrocode}
+\newcommand*{\glscurrentfieldvalue}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Defining new glossaries}\label{sec:newglos}
+% A comma-separated list of glossary names is stored
+% in \cs{@glo@types}. When a new glossary type
+% is created, its identifying name is added to this list.
+% This is used by commands that iterate through all glossaries
+% (such as \ics{makeglossaries} and \ics{printglossaries}).
+%\begin{macro}{\@glo@types}
+% \begin{macrocode}
+\newcommand*{\@glo@types}{,}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@provide@newglossary}
+%\changes{3.10a}{2013-10-13}{new}
+% If the user removes the glossary package from their document,
+% ensure the next run doesn't throw a load of undefined control
+% sequence errors when the aux file is parsed.
+% \begin{macrocode}
+\newcommand*\@gls@provide@newglossary{%
+ \protected@write\@auxout{}{\string\providecommand\string\@newglossary[4]{}}%
+% \end{macrocode}
+% Only need to do this once.
+% \begin{macrocode}
+ \let\@gls@provide@newglossary\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\defglsentryfmt}
+%\changes{3.11a}{2013-10-15}{new}
+% Allow different glossaries to have different display styles.
+% \begin{macrocode}
+\newcommand*{\defglsentryfmt}[2][\glsdefaulttype]{%
+ \csgdef{gls@#1@entryfmt}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@doentryfmt}
+%\changes{3.11a}{2013-10-15}{new}
+% \begin{macrocode}
+\newcommand*{\gls@doentryfmt}[1]{\csuse{gls@#1@entryfmt}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@forbidtexext}
+%\changes{4.08}{2014-07-30}{new}
+% As a security precaution, don't allow the user to specify a `tex'
+% extension for any of the glossary files. (Just in case a seriously
+% confused novice user doesn't know what they're doing.) The
+% argument must be a control sequence whose replacement text is the
+% requested extension.
+% \begin{macrocode}
+\newcommand*{\@gls@forbidtexext}[1]{%
+ \ifboolexpr{test {\ifdefstring{#1}{tex}}
+ or test {\ifdefstring{#1}{TEX}}}
+ {%
+ \def#1{nottex}%
+ \PackageError{glossaries}%
+ {Forbidden `.tex' extension replaced with `.nottex'}%
+ {I'm sorry, I can't allow you to do something so reckless.\MessageBreak
+ Don't use `.tex' as an extension for a temporary file.}%
+ }%
+ {%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@gobbleopt}
+% Discard optional argument.
+%\changes{4.19}{2015-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\gls@gobbleopt}{\new@ifnextchar[{\@gls@gobbleopt}{}}
+\def\@gls@gobbleopt[#1]{}
+% \end{macrocode}
+%\end{macro}
+%
+% A new glossary type is defined using \cs{newglossary}.
+% Syntax:
+%\begin{definition}
+%\cs{newglossary}\oarg{log-ext}\marg{name}\marg{in-ext}\marg{out-ext}%
+%\marg{title}\oarg{counter}
+%\end{definition}
+% where \meta{log-ext} is the extension of the \app{makeindex}
+% transcript file, \meta{in-ext} is the extension of the glossary
+% input file (read in by \ics{printglossary} and created by
+% \app{makeindex}), \meta{out-ext} is the extension of the
+% glossary output file which is read in by \app{makeindex}
+% (lines are written to this file by the \ics{glossary} command),
+% \meta{title} is the title of the glossary that is used in
+% \ics{glossarysection} and
+% \meta{counter} is the default counter to be used by entries
+% belonging to this glossary. The \app{makeglossaries} Perl
+% script reads in the relevant extensions from the auxiliary file,
+% and passes the appropriate file names and switches to
+% \app{makeindex}.
+%\begin{macro}{\newglossary}
+%\changes{4.08}{2014-07-30}{added starred version}
+% \begin{macrocode}
+\newcommand*{\newglossary}{\@ifstar\s@newglossary\ns@newglossary}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\s@newglossary}
+% The starred version will construct the extension based on the
+% label.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\s@newglossary}[2]{%
+ \ns@newglossary[#1-glg]{#1}{#1-gls}{#1-glo}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ns@newglossary}
+%\changes{4.08}{2014-07-30}{new}
+% Define the unstarred version.
+% \begin{macrocode}
+\newcommand*{\ns@newglossary}[5][glg]{%
+ \doifglossarynoexistsordo{#2}%
+ {%
+% \end{macrocode}
+% Check if default has been set
+% \begin{macrocode}
+ \ifundef\glsdefaulttype
+ {%
+ \gdef\glsdefaulttype{#2}%
+ }{}%
+% \end{macrocode}
+% Add this to the list of glossary types:
+% \begin{macrocode}
+ \toks@{#2}\edef\@glo@types{\@glo@types\the\toks@,}%
+% \end{macrocode}
+% Define a comma-separated list of labels for this glossary type,
+% so that all the entries for this glossary can be reset with a
+% single command. When a new entry is created, its label is added
+% to this list.
+% \begin{macrocode}
+ \expandafter\gdef\csname glolist@#2\endcsname{,}%
+% \end{macrocode}
+% Store the file extensions:
+%\changes{4.08}{2014-07-30}{added \cs{@glotype@\meta{name}@log}}
+% \begin{macrocode}
+ \expandafter\edef\csname @glotype@#2@log\endcsname{#1}%
+ \expandafter\edef\csname @glotype@#2@in\endcsname{#3}%
+ \expandafter\edef\csname @glotype@#2@out\endcsname{#4}%
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@log\endcsname
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@in\endcsname
+ \expandafter\@gls@forbidtexext\csname @glotype@#2@out\endcsname
+% \end{macrocode}
+% Store the title:
+% \begin{macrocode}
+ \expandafter\def\csname @glotype@#2@title\endcsname{#5}%
+% \end{macrocode}
+%\changes{3.10a}{2013-10-13}{added \cs{@gls@provide@newglossary}}
+% \begin{macrocode}
+ \@gls@provide@newglossary
+ \protected@write\@auxout{}{\string\@newglossary{#2}{#1}{#3}{#4}}%
+% \end{macrocode}
+% How to display this entry in the document text (uses
+% \cs{glsentry} by
+% default). This can be redefined by the user later if required
+% (see \ics{defglsentry}). This
+% may already have been defined if this has been specified as
+% a list of acronyms.
+%\changes{2.04}{2009-11-10}{added check to determine if
+% \cs{gls@\meta{type}@display} and \cs{gls@\meta{type}@displayfirst}
+% have been defined.}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+%\changes{3.11a}{2013-10-15}{replaced \cs{glsdisplay} and
+%\cs{glsdisplayfirst} with \cs{glsentryfmt}}
+% \begin{macrocode}
+ \ifcsundef{gls@#2@entryfmt}%
+ {%
+ \defglsentryfmt[#2]{\glsentryfmt}%
+ }%
+ {}%
+% \end{macrocode}
+% Define sort counter if required:
+%\changes{3.0}{2011-04-02}{added \cs{@gls@defsortcount}}
+% \begin{macrocode}
+ \@gls@defsortcount{#2}%
+% \end{macrocode}
+% Find out if the final optional argument has been specified, and
+% use it to set the counter associated with this glossary. (Uses
+% \ics{glscounter} if no optional argument is present.)
+% \begin{macrocode}
+ \@ifnextchar[{\@gls@setcounter{#2}}%
+ {\@gls@setcounter{#2}[\glscounter]}%
+ }%
+ {%
+ \gls@gobbleopt
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\altnewglossary}
+%\changes{2.06}{2010-06-14}{new}
+% \begin{macrocode}
+\newcommand*{\altnewglossary}[3]{%
+ \newglossary[#2-glg]{#1}{#2-gls}{#2-glo}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+% Only define new glossaries in the preamble:
+% \begin{macrocode}
+\@onlypreamble{\newglossary}
+% \end{macrocode}
+% Only define new glossaries before \ics{makeglossaries}
+% \begin{macrocode}
+\@onlypremakeg\newglossary
+% \end{macrocode}
+%\cs{@newglossary} is used to specify the file extensions
+% for the \app{makeindex} input, output and transcript files.
+% It is written to the auxiliary file by \ics{newglossary}.
+% Since it is not used by \LaTeX, \cs{@newglossary} simply
+% ignores its arguments.
+%\begin{macro}{\@newglossary}
+% \begin{macrocode}
+\newcommand*{\@newglossary}[4]{}
+% \end{macrocode}
+%\end{macro}
+% Store counter to be used for given glossary type (the first
+% argument is the glossary label, the second argument is the name
+% of the counter):
+%\begin{macro}{\@gls@setcounter}
+% \begin{macrocode}
+\def\@gls@setcounter#1[#2]{%
+ \expandafter\def\csname @glotype@#1@counter\endcsname{#2}%
+% \end{macrocode}
+% Add counter to xindy list, if not already added:
+% \begin{macrocode}
+ \ifglsxindy
+ \GlsAddXdyCounters{#2}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+% Get counter associated with given glossary (the argument is
+% the glossary label):
+%\begin{macro}{\@gls@getcounter}
+% \begin{macrocode}
+\newcommand*{\@gls@getcounter}[1]{%
+ \csname @glotype@#1@counter\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define the main glossary. This will be the first glossary to
+% be displayed when using \ics{printglossaries}.
+% \begin{macrocode}
+\glsdefmain
+% \end{macrocode}
+% Define the \qt{acronym} glossaries if required.
+% \begin{macrocode}
+\@gls@do@acronymsdef
+% \end{macrocode}
+% Define the \qt{symbols}, \qt{numbers} and \qt{index} glossaries if required.
+% \begin{macrocode}
+\@gls@do@symbolsdef
+\@gls@do@numbersdef
+\@gls@do@indexdef
+% \end{macrocode}
+%
+%\begin{macro}{\newignoredglossary}
+% Creates a new glossary that doesn't have associated files.
+% This glossary is ignored by and commands that iterate over
+% glossaries, such as \ics{printglossaries}, and won't work with
+% commands like \ics{printglossary}. It's intended for entries that
+% are so commonly-known they don't require a glossary.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\newignoredglossary}[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}{\@ignored@glossaries}
+% List of ignored glossaries.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\@ignored@glossaries}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifignoredglossary}
+% Tests if the given glossary is an ignored glossary.
+% Expansion is used in case the first argument is a control
+% sequence.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\ifignoredglossary}[3]{%
+ \edef\@gls@igtype{#1}%
+ \expandafter\DTLifinlist\expandafter
+ {\@gls@igtype}{\@ignored@glossaries}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Defining new entries}\label{sec:newentry}
+% New glossary entries are defined using \cs{newglossaryentry}.
+% This command requires a label and a key-value list that defines
+% the relevant information for that entry. The definition for these
+% keys follows. Note that the \gloskey{name},
+% \gloskey{description} and \gloskey{symbol} keys will be
+% sanitized later, depending on the value of the package option
+% \pkgopt{sanitize} (this means that if some of the keys haven't
+% been defined, they can be constructed from the \gloskey{name}
+% and \gloskey{description} key before they are sanitized).
+%
+%
+%\begin{key}{name}
+%The \gloskey{name} key indicates the name
+% of the term being defined. This is how the term will appear in
+% the glossary. The \gloskey{name} key is required when defining
+% a new glossary entry.
+% \begin{macrocode}
+\define@key{glossentry}{name}{%
+\def\@glo@name{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{description}
+% The \gloskey{description} key is usually only used in
+% the glossary, but can be made to appear in the text by redefining
+% \ics{glsentryfmt} or using \ics{defglsentryfmt}. The
+% \gloskey{description} key is required when
+% defining a new glossary entry. If a long description is required,
+% use \ics{longnewglossaryentry} instead of \ics{newglossaryentry}.
+% \begin{macrocode}
+\define@key{glossentry}{description}{%
+\def\@glo@desc{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{descriptionplural}
+% \changes{1.12}{2008-03-08}{new}
+% \begin{macrocode}
+\define@key{glossentry}{descriptionplural}{%
+\def\@glo@descplural{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{sort}
+% The \gloskey{sort} key needs to be sanitized here
+% (the sort key is provided for \app{makeindex}'s benefit,
+% not for use in the document). The \gloskey{sort} key is optional
+% when defining a new glossary entry. If omitted, the value
+% is given by \meta{name} \meta{description}.
+%\changes{1.18}{2009-01-14}{moved sanitization to
+%\cs{newglossaryentry}}
+% \begin{macrocode}
+\define@key{glossentry}{sort}{%
+\def\@glo@sort{#1}}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{text}
+% The \gloskey{text} key determines how the term should appear when
+% used in the document (i.e.\ outside of the glossary). If omitted,
+% the value of the \gloskey{name} key is used instead.
+% \begin{macrocode}
+\define@key{glossentry}{text}{%
+\def\@glo@text{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{plural}
+% The \gloskey{plural} key determines how the plural form of the term
+% should be displayed in the document. If omitted, the plural is
+% constructed by appending \ics{glspluralsuffix} to the value of the
+% \gloskey{text} key.
+% \begin{macrocode}
+\define@key{glossentry}{plural}{%
+\def\@glo@plural{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{first}
+% The \gloskey{first} key determines how the entry should be displayed
+% in the document when it is first used. If omitted, it is taken
+% to be the same as the value of the \gloskey{text} key.
+% \begin{macrocode}
+\define@key{glossentry}{first}{%
+\def\@glo@first{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{firstplural}
+% The \gloskey{firstplural} key is used to set the plural form for
+% first use, in the event that the plural is required the first
+% time the term is used. If omitted, it is constructed by
+% appending \ics{glspluralsuffix} to the value of the \gloskey{first} key.
+% \begin{macrocode}
+\define@key{glossentry}{firstplural}{%
+\def\@glo@firstplural{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{macro}{\@gls@default@value}
+%\changes{3.09a}{2013-10-09}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@default@value}{\relax}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{key}{symbol}
+% The \gloskey{symbol} key is ignored by most of the predefined
+% glossary styles, and defaults to \cs{relax} if omitted.
+% It is provided for glossary styles that require an associated
+% symbol, as well as a name and description. To make this value
+% appear in the glossary, you need to redefine
+% \ics{glossentry}.
+% If you want this value to appear in the text when the term is used
+% by commands like \ics{gls}, you will need to change
+% \ics{glsentryfmt} (or use for \ics{defglsentryfmt} individual glossaries).
+% \begin{macrocode}
+\define@key{glossentry}{symbol}{%
+\def\@glo@symbol{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{symbolplural}
+% \changes{1.12}{2008-03-08}{new}
+% \begin{macrocode}
+\define@key{glossentry}{symbolplural}{%
+\def\@glo@symbolplural{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{type}
+% The \gloskey{type} key specifies to which glossary this
+% entry belongs. If omitted, the default glossary is used.
+% \begin{macrocode}
+\define@key{glossentry}{type}{%
+\def\@glo@type{#1}}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{counter}
+% The \gloskey{counter} key specifies the name of the counter
+% associated with this glossary entry:
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\define@key{glossentry}{counter}{%
+ \ifcsundef{c@#1}%
+ {%
+ \PackageError{glossaries}%
+ {There is no counter called `#1'}%
+ {%
+ The counter key should have the name of a valid counter
+ as its value%
+ }%
+ }%
+ {%
+ \def\@glo@counter{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{see}
+% The \gloskey{see} key specifies a list of cross-references
+% \changes{1.17}{2008-12-26}{new}
+% \changes{3.0}{2011-04-02}{added \cs{@glo@seeautonumberlist}}
+%\changes{3.13a}{2013-11-05}{added \cs{gls@checkseeallowed}}
+% \begin{macrocode}
+\define@key{glossentry}{see}{%
+ \gls@set@xr@key{see}{\@glo@see}{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{macro}{\gls@set@xr@key}
+%\changes{4.30}{2017-06-11}{new}
+%\begin{definition}
+%\cs{gls@set@xr@key}\marg{key name}\marg{cs}\marg{value}
+%\end{definition}
+%Assign a cross-reference key.
+% \begin{macrocode}
+\newcommand*{\gls@set@xr@key}[3]{%
+ \renewcommand*{\gls@xr@key}{#1}%
+ \gls@checkseeallowed
+ \def#2{#3}%
+ \@glo@seeautonumberlist
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@xr@key}
+%\changes{4.30}{2017-06-11}{new}
+% \begin{macrocode}
+\newcommand*{\gls@xr@key}{see}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@checkseeallowed}
+%\changes{3.13a}{2013-11-05}{new}
+% \begin{macrocode}
+\newcommand*{\gls@checkseeallowed}{%
+ \@gls@see@noindex
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@checkseeallowed@preambleonly}
+%\changes{4.20}{2015-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\gls@checkseeallowed@preambleonly}{%
+ \GlossariesWarning{glossaries}%
+ {`\gls@xr@key' key doesn't have any effect when used in the document
+ environment. Move the definition to the preamble
+ after \string\makeglossaries\space
+ or \string\makenoidxglossaries}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{key}{parent}
+% The \gloskey{parent} key specifies the parent entry, if
+% required.
+% \changes{1.17}{2008-12-26}{new}
+% \begin{macrocode}
+\define@key{glossentry}{parent}{%
+\def\@glo@parent{#1}}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{nonumberlist}
+% The \gloskey{nonumberlist} key suppresses or activates the number list
+% for the given entry.
+%\changes{1.17}{2008-12-26}{new}
+%\changes{3.0}{2011-04-02}{now boolean}
+%\changes{4.41}{2018-07-23}{changed \cs{val} and \cs{nr} to
+%\cs{gls@nonumberlist@val} and \cs{gls@nonumberlist@nr}}
+% \begin{macrocode}
+\define@choicekey{glossentry}{nonumberlist}%
+ [\gls@nonumberlist@val\gls@nonumberlist@nr]{true,false}[true]%
+{%
+ \ifcase\gls@nonumberlist@nr\relax
+ \def\@glo@prefix{\glsnonextpages}%
+ \@gls@savenonumberlist{true}%
+ \else
+ \def\@glo@prefix{\glsnextpages}%
+ \@gls@savenonumberlist{false}%
+ \fi
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{macro}{\@gls@savenonumberlist}
+%\changes{4.25}{2016-06-09}{new}
+%The \gloskey{nonumberlist} option isn't saved by default (as it
+%just sets the prefix) which isn't a problem when the entries are
+%defined in the preamble, but causes a problem when entries are
+%defined in the document. In this case, the value needs to be saved
+%so that it can be written to the \texttt{.glsdefs} file.
+% \begin{macrocode}
+\newcommand*{\@gls@savenonumberlist}[1]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@initnonumberlist}
+%\changes{4.25}{2016-06-09}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@initnonumberlist}{}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@initnonumberlist}
+%\changes{4.25}{2016-06-09}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@storenonumberlist}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@enablesavenonumberlist}
+%\changes{4.25}{2016-06-09}{new}
+% Allow the \gloskey{nonumberlist} value to be saved.
+% \begin{macrocode}
+\newcommand*{\@gls@enablesavenonumberlist}{%
+ \renewcommand*{\@gls@initnonumberlist}{%
+ \undef\@glo@nonumberlist
+ }%
+ \renewcommand*{\@gls@savenonumberlist}[1]{%
+ \def\@glo@nonumberlist{##1}%
+ }%
+ \renewcommand*{\@gls@storenonumberlist}[1]{%
+ \ifdef\@glo@nonumberlist
+ {%
+ \cslet{glo@\glsdetoklabel{##1}@nonumberlist}{\@glo@nonumberlist}%
+ }%
+ {}%
+ }%
+ \appto\@gls@keymap{,{nonumberlist}{nonumberlist}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define some generic user keys. (Additional keys can be added by
+% the user.)
+%\begin{key}{user1}
+% \begin{macrocode}
+\define@key{glossentry}{user1}{%
+ \def\@glo@useri{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{user2}
+% \begin{macrocode}
+\define@key{glossentry}{user2}{%
+ \def\@glo@userii{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{user3}
+% \begin{macrocode}
+\define@key{glossentry}{user3}{%
+ \def\@glo@useriii{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{user4}
+% \begin{macrocode}
+\define@key{glossentry}{user4}{%
+ \def\@glo@useriv{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{user5}
+% \begin{macrocode}
+\define@key{glossentry}{user5}{%
+ \def\@glo@userv{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{user6}
+% \begin{macrocode}
+\define@key{glossentry}{user6}{%
+ \def\@glo@uservi{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{short}
+%\changes{3.0}{2011-04-02}{new}
+% This key is provided for use by \ics{newacronym}. It's not
+% designed for general purpose use, so isn't described in the user
+% manual.
+% \begin{macrocode}
+\define@key{glossentry}{short}{%
+ \def\@glo@short{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{shortplural}
+%\changes{3.0}{2011-04-02}{new}
+% This key is provided for use by \ics{newacronym}.
+% \begin{macrocode}
+\define@key{glossentry}{shortplural}{%
+ \def\@glo@shortpl{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{long}
+%\changes{3.0}{2011-04-02}{new}
+% This key is provided for use by \ics{newacronym}.
+% \begin{macrocode}
+\define@key{glossentry}{long}{%
+ \def\@glo@long{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{key}{longplural}
+%\changes{3.0}{2011-04-02}{new}
+% This key is provided for use by \ics{newacronym}.
+% \begin{macrocode}
+\define@key{glossentry}{longplural}{%
+ \def\@glo@longpl{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%
+%\begin{macro}{\@glsnoname}
+% \changes{1.17}{2008-12-26}{new}
+% Define command to generate error if \gloskey{name} key is missing.
+% \begin{macrocode}
+\newcommand*{\@glsnoname}{%
+ \PackageError{glossaries}{name key required in
+ \string\newglossaryentry\space for entry `\@glo@label'}{You
+ haven't specified the entry name}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsnodesc}
+% \changes{3.10a}{2013-10-13}{new}
+% Define command to generate error if \gloskey{description} key is missing.
+% \begin{macrocode}
+\newcommand*\@glsnodesc{%
+ \PackageError{glossaries}
+ {%
+ description key required in \string\newglossaryentry\space
+ for entry `\@glo@label'%
+ }%
+ {%
+ You haven't specified the entry description%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsdefaultplural}
+% \changes{1.17}{2008-12-26}{new}
+%\changes{3.10a}{2013-10-13}{Obsolete}
+% Now obsolete. Don't use.
+% \begin{macrocode}
+\newcommand*{\@glsdefaultplural}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@missingnumberlist}
+%\changes{3.02}{2012-05-21}{new}
+% Define a command to generate warning when numberlist not set.
+% \begin{macrocode}
+\newcommand*{\@gls@missingnumberlist}[1]{%
+ ??%
+ \ifglssavenumberlist
+ \GlossariesWarning{Missing number list for entry `#1'.
+ Maybe makeglossaries + rerun required}%
+ \else
+ \PackageError{glossaries}%
+ {Package option `savenumberlist=true' required}%
+ {%
+ You must use the `savenumberlist' package option
+ to reference location lists.%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsdefaultsort}
+% Define command to set default sort.
+% \changes{1.17}{2008-12-26}{new}
+% \begin{macrocode}
+\newcommand*{\@glsdefaultsort}{\@glo@name}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@level}
+% Register to increment entry levels.
+% \begin{macrocode}
+\newcount\gls@level
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@noexpand@field}
+% \begin{macrocode}
+\newcommand{\@@gls@noexpand@field}[3]{%
+ \expandafter\global\expandafter
+ \let\csname glo@#1@#2\endcsname#3%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@noexpand@fields}
+% \begin{macrocode}
+\newcommand{\@gls@noexpand@fields}[4]{%
+ \ifcsdef{gls@assign@#3@field}
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \csuse{gls@assign@#3@field}{#2}{\@gls@value}%
+ }%
+ {%
+ \csuse{gls@assign@#3@field}{#2}{#4}%
+ }%
+ }%
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{Fixed bug \texttt{expand} replaced with
+%\texttt{noexpand}}
+% \begin{macrocode}
+ \@@gls@noexpand@field{#2}{#3}{\@gls@value}%
+ }%
+ {%
+ \@@gls@noexpand@field{#2}{#3}{#4}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@@gls@expand@field}
+% \begin{macrocode}
+\newcommand{\@@gls@expand@field}[3]{%
+ \expandafter
+ \protected@xdef\csname glo@#1@#2\endcsname{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{@gls@expand@fields}
+% \begin{macrocode}
+\newcommand{\@gls@expand@fields}[4]{%
+ \ifcsdef{gls@assign@#3@field}
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \edef\@gls@value{\expandonce{#1}}%
+ \csuse{gls@assign@#3@field}{#2}{\@gls@value}%
+ }%
+ {%
+ \expandafter\@gls@startswithexpandonce#4\relax\relax\gls@endcheck
+ {%
+ \@@gls@expand@field{#2}{#3}{#4}%
+ }%
+ {%
+ \csuse{gls@assign@#3@field}{#2}{#4}%
+ }%
+ }%
+ }%
+ {%
+ \ifdefequal{#4}{\@gls@default@value}%
+ {%
+ \@@gls@expand@field{#2}{#3}{#1}%
+ }%
+ {%
+ \@@gls@expand@field{#2}{#3}{#4}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@startswithexpandonce}
+% \begin{macrocode}
+\def\@gls@expandonce{\expandonce}
+\def\@gls@startswithexpandonce#1#2\gls@endcheck#3#4{%
+ \def\@gls@tmp{#1}%
+ \ifdefequal{\@gls@expandonce}{\@gls@tmp}{#3}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@assign@field}
+%\begin{definition}
+%\cs{gls@assign@field}\marg{def value}\marg{label}\marg{field}\marg{tmp
+%cs}
+%\end{definition}
+% Assigns an entry field. Expansion performed by default (except for
+% name, symbol and description where backward compatibility required).
+% If \meta{tmp cs} is \meta{@gls@default@value}, \meta{def value} is
+% used instead.
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\let\gls@assign@field\@gls@expand@fields
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsexpandfields}
+%\changes{3.08a}{2013-09-28}{new}
+% Fully expand values when assigning fields (except for specific
+% fields that are overridden by \cs{glssetnoexpandfield}).
+% \begin{macrocode}
+\newcommand*{\glsexpandfields}{%
+ \let\gls@assign@field\@gls@expand@fields
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsnoexpandfields}
+%\changes{3.08a}{2013-09-28}{new}
+% Don't expand values when assigning fields (except for specific
+% fields that are overridden by \cs{glssetexpandfield}).
+% \begin{macrocode}
+\newcommand*{\glsnoexpandfields}{%
+ \let\gls@assign@field\@gls@noexpand@fields
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\newglossaryentry}
+% Define \cs{newglossaryentry}%
+% \marg{label} \marg{key-val list}.
+% There are two required fields in \meta{key-val list}:
+% \gloskey{name} (or \gloskey{parent}) and
+% \gloskey{description}. (See above.)
+%\changes{3.0}{2011-04-02}{replaced \cs{DeclareRobustCommand} with
+%\cs{newrobustcmd}}
+% \begin{macrocode}
+\newrobustcmd{\newglossaryentry}[2]{%
+% \end{macrocode}
+% Check to see if this glossary entry has already been defined:
+% \begin{macrocode}
+ \glsdoifnoexists{#1}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@defdocnewglossaryentry}
+%\changes{4.14}{2015-02-28}{new}
+% The definition of \cs{newglossaryentry} is changed at the start of
+% the \env{document} environment. The \gloskey{see} key doesn't work
+% for entries that have been defined in the document environment.
+% \begin{macrocode}
+\newcommand*{\gls@defdocnewglossaryentry}{%
+ \let\gls@checkseeallowed\gls@checkseeallowed@preambleonly
+ \let\newglossaryentry\new@glossaryentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\provideglossaryentry}
+% Like \cs{newglossaryentry} but does nothing if the entry has
+% already been defined.
+%\changes{3.14a}{2013-11-12}{new}
+% \begin{macrocode}
+\newrobustcmd{\provideglossaryentry}[2]{%
+ \ifglsentryexists{#1}%
+ {}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+}
+\@onlypreamble{\provideglossaryentry}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\new@glossaryentry}
+%\changes{3.10a}{2013-10-13}{new}
+% For use in document environment. This opens the \texttt{.glsdefs}
+% file, if not already open, so that the entry definition can be
+% saved for the next \LaTeX\ run. This means that any glossaries at
+% the start of the document can access the entry information.
+% \begin{macrocode}
+\newrobustcmd{\new@glossaryentry}[2]{%
+ \ifundef\@gls@deffile
+ {%
+ \global\newwrite\@gls@deffile
+ \immediate\openout\@gls@deffile=\jobname.glsdefs
+ }%
+ {}%
+ \ifglsentryexists{#1}{}%
+ {%
+ \gls@defglossaryentry{#1}{#2}%
+ }%
+ \@gls@writedef{#1}%
+}
+% \end{macrocode}
+%At the start of the document input the \texttt{.glsdefs} file if it
+%exists. This is now done by \cs{gls@begindocdefs}, which is
+%redefined by \sty{glossaries-extra}, so that
+%this step can be skipped to avoid loading an obsolete
+%\texttt{.glsdefs} file if the user switches to
+%\sty{glossaries-extra} with \texttt{docdef=restricted}.
+% \begin{macrocode}
+\AtBeginDocument{\gls@begindocdefs}
+% \end{macrocode}
+%The end of the document needs to check if the \texttt{.glsdefs}
+%file has been opened, in which case it needs to be closed.
+% \begin{macrocode}
+\AtEndDocument{\ifdef\@gls@deffile{\closeout\@gls@deffile}{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@begindocdefs}
+%\changes{4.37}{2018-04-07}{new}
+%Input the \verb|.glsdefs| file if it exists and enable document
+%definitions if permitted.
+% \begin{macrocode}
+\newcommand*{\gls@begindocdefs}{%
+ \@gls@enablesavenonumberlist
+ \edef\@gls@restoreat{\noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}%
+ \makeatletter
+ \InputIfFileExists{\jobname.glsdefs}{}{}%
+ \@gls@restoreat
+ \undef\@gls@restoreat
+ \gls@defdocnewglossaryentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@writedef}
+%\changes{3.10a}{2013-10-13}{new}
+% Writes glossary entry definition to \cs{@gls@deffile}.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\@gls@writedef}[1]{%
+ \immediate\write\@gls@deffile
+ {%
+ \string\ifglsentryexists{#1}{}\glspercentchar^^J%
+ \expandafter\@gobble\string\{\glspercentchar^^J%
+ \string\gls@defglossaryentry{\glsdetoklabel{#1}}\glspercentchar^^J%
+ \expandafter\@gobble\string\{\glspercentchar%
+ }%
+% \end{macrocode}
+% Write key value information:
+% \begin{macrocode}
+ \@for\@gls@map:=\@gls@keymap\do
+ {%
+ \letcs\glo@value{glo@\glsdetoklabel{#1}@\expandafter\@secondoftwo\@gls@map}%
+ \ifdef\glo@value
+ {%
+ \@onelevel@sanitize\glo@value
+ \immediate\write\@gls@deffile
+ {%
+ \expandafter\@firstoftwo\@gls@map
+ =\expandafter\@gobble\string\{\glo@value\expandafter\@gobble\string\},%
+ \glspercentchar
+ }%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% Provide hook:
+% \begin{macrocode}
+ \glswritedefhook
+ \immediate\write\@gls@deffile
+ {%
+ \glspercentchar^^J%
+ \expandafter\@gobble\string\}\glspercentchar^^J%
+ \expandafter\@gobble\string\}\glspercentchar%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@keymap}
+%\changes{3.10a}{2013-10-13}{new}
+% List of entry definition key names and corresponding tag in
+% control sequence used to store the value.
+% \begin{macrocode}
+\newcommand*{\@gls@keymap}{%
+ {name}{name},%
+ {sort}{sortvalue},% unescaped sort value
+ {type}{type},%
+ {first}{first},%
+ {firstplural}{firstpl},%
+ {text}{text},%
+ {plural}{plural},%
+ {description}{desc},%
+ {descriptionplural}{descplural},%
+ {symbol}{symbol},%
+ {symbolplural}{symbolplural},%
+ {user1}{useri},%
+ {user2}{userii},%
+ {user3}{useriii},%
+ {user4}{useriv},%
+ {user5}{userv},%
+ {user6}{uservi},%
+ {long}{long},%
+ {longplural}{longpl},%
+ {short}{short},%
+ {shortplural}{shortpl},%
+ {counter}{counter},%
+ {parent}{parent}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@fetchfield}
+%\changes{4.03}{2014-01-20}{new}
+%\begin{definition}
+%\cs{@gls@fetchfield}\marg{cs}\marg{field}
+%\end{definition}
+% Fetches the internal field label from the given user \meta{field} and
+% stores in \meta{cs}.
+% \begin{macrocode}
+\newcommand*{\@gls@fetchfield}[2]{%
+% \end{macrocode}
+% Ensure user field name is fully expanded
+% \begin{macrocode}
+ \edef\@gls@thisval{#2}%
+% \end{macrocode}
+% Iterate through known mappings until we find the one for this
+% field.
+% \begin{macrocode}
+ \@for\@gls@map:=\@gls@keymap\do{%
+ \edef\@this@key{\expandafter\@firstoftwo\@gls@map}%
+ \ifdefequal{\@this@key}{\@gls@thisval}%
+ {%
+% \end{macrocode}
+% Found it.
+% \begin{macrocode}
+ \edef#1{\expandafter\@secondoftwo\@gls@map}%
+% \end{macrocode}
+% Break out of loop.
+% \begin{macrocode}
+ \@endfortrue
+ }%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaddstoragekey}
+%\begin{definition}
+%\cs{glsaddstoragekey}\marg{key}\marg{default value}\marg{no link cs}
+%\end{definition}
+%\changes{4.16}{2015-06-18}{new}
+% Similar to \cs{glsaddkey} but intended for keys whose values
+% aren't explicitly used in the document, but might be required
+% behind the scenes by other commands.
+% \begin{macrocode}
+\newcommand*{\glsaddstoragekey}{\@ifstar\@sglsaddstoragekey\@glsaddstoragekey}
+% \end{macrocode}
+% Starred version switches on expansion for this key.
+% \begin{macrocode}
+\newcommand*{\@sglsaddstoragekey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsaddstoragekey{#1}%
+}
+% \end{macrocode}
+% Unstarred version doesn't override default expansion.
+% \begin{macrocode}
+\newcommand*{\@glsaddstoragekey}[3]{%
+% \end{macrocode}
+% Check the specified key doesn't already exist.
+% \begin{macrocode}
+ \key@ifundefined{glossentry}{#1}%
+ {%
+% \end{macrocode}
+% Set up the key.
+% \begin{macrocode}
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+% \end{macrocode}
+% Set the default value.
+% \begin{macrocode}
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+% \end{macrocode}
+% Assignment code.
+% \begin{macrocode}
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+% \end{macrocode}
+% Define the no-link commands.
+% \begin{macrocode}
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaddkey}
+%\begin{definition}
+%\cs{glsaddkey}\marg{key}\marg{default value}\marg{no link cs}\marg{no link ucfirst
+%cs}\marg{link cs}\marg{link ucfirst cs}\marg{link allcaps cs}
+%\end{definition}
+%\changes{3.12a}{2013-10-16}{new}
+% Allow user to add their own custom keys.
+% \begin{macrocode}
+\newcommand*{\glsaddkey}{\@ifstar\@sglsaddkey\@glsaddkey}
+% \end{macrocode}
+% Starred version switches on expansion for this key.
+% \begin{macrocode}
+\newcommand*{\@sglsaddkey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsaddkey{#1}%
+}
+% \end{macrocode}
+% Unstarred version doesn't override default expansion.
+% \begin{macrocode}
+\newcommand*{\@glsaddkey}[7]{%
+% \end{macrocode}
+% Check the specified key doesn't already exist.
+% \begin{macrocode}
+ \key@ifundefined{glossentry}{#1}%
+ {%
+% \end{macrocode}
+% Set up the key.
+% \begin{macrocode}
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+% \end{macrocode}
+% Set the default value.
+% \begin{macrocode}
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+% \end{macrocode}
+% Assignment code.
+% \begin{macrocode}
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+% \end{macrocode}
+% Define the no-link commands.
+% \begin{macrocode}
+ \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:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@field@link}}
+% \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}%
+ {}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+%\changes{4.08}{2014-07-30}{removed \cs{@sgls@user@\meta{key}}}
+%\changes{4.09}{2014-08-12}{fixed bug in user commands}
+% \begin{macrocode}
+ \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:
+% \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}%
+ {}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGls@user@\meta{key}}}
+% \begin{macrocode}
+ \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}{#4{##2}##3}%
+ }%
+ \newrobustcmd*{#6}{%
+ \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}%
+ }%
+% \end{macrocode}
+% Finally the all caps version:
+% \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}%
+ {}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLS@user@\meta{key}}}
+% \begin{macrocode}
+ \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}{\mfirstucMakeUppercase{#3{##2}##3}}%
+ }%
+ \newrobustcmd*{#7}{%
+ \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#1' already exists}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfieldxdef}
+%\begin{definition}
+%\cs{glsfieldxdef}\marg{label}\marg{field}\marg{definition}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+%\changes{4.42}{2019-01-06}{changed from \cs{edef} to \cs{protected@csxdef}}
+% \begin{macrocode}
+\newcommand{\glsfieldxdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csxdef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfieldedef}
+%\begin{definition}
+%\cs{glsfieldedef}\marg{label}\marg{field}\marg{definition}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+%\changes{4.42}{2019-01-06}{changed from \cs{edef} to \cs{protected@csedef}}
+% \begin{macrocode}
+\newcommand{\glsfieldedef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \protected@csedef{glo@\@glo@label @#2}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfieldgdef}
+%\begin{definition}
+%\cs{glsfieldgdef}\marg{label}\marg{field}\marg{definition}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+% \begin{macrocode}
+\newcommand{\glsfieldgdef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\gdef\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfielddef}
+%\begin{definition}
+%\cs{glsfielddef}\marg{label}\marg{field}\marg{definition}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+% \begin{macrocode}
+\newcommand{\glsfielddef}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\def\csname glo@\@glo@label @#2\endcsname{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfieldfetch}
+%\begin{definition}
+%\cs{glsfieldfetch}\marg{label}\marg{field}\marg{cs}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+% Fetches the value of the given field and stores in the given
+% control sequence.
+% \begin{macrocode}
+\newcommand{\glsfieldfetch}[3]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \letcs#3{glo@\@glo@label @#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsfieldeq}
+%\begin{definition}
+%\cs{ifglsfieldeq}\marg{label}\marg{field}\marg{string}\marg{true}\marg{false}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+% Tests if the value of the given field is equal to the given
+% string.
+% \begin{macrocode}
+\newcommand{\ifglsfieldeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstring{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsfielddefeq}
+%\begin{definition}
+%\cs{ifglsfielddefeq}\marg{label}\marg{field}\marg{command}\marg{true}\marg{false}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+% Tests if the value of the given field is equal to the replacement
+% text of the given command.
+% \begin{macrocode}
+\newcommand{\ifglsfielddefeq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \expandafter\ifdefstrequal
+ \csname glo@\@glo@label @#2\endcsname{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsfieldcseq}
+%\begin{definition}
+%\cs{ifglsfieldcseq}\marg{label}\marg{field}\marg{cs name}\marg{true}\marg{false}
+%\end{definition}
+%\changes{4.16}{2015-07-08}{new}
+%As above but uses \cs{ifcsstrequal} instead of \cs{ifdefstrequal}
+% \begin{macrocode}
+\newcommand{\ifglsfieldcseq}[5]{%
+ \glsdoifexists{#1}%
+ {%
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \ifcsdef{glo@\@glo@label @#2}%
+ {%
+ \ifcsstrequal{glo@\@glo@label @#2}{#3}{#4}{#5}%
+ }%
+ {%
+ \PackageError{glossaries}{Key `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glswritedefhook}
+%\changes{3.10a}{2013-10-13}{new}
+% \begin{macrocode}
+\newcommand*{\glswritedefhook}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@assign@desc}
+%\changes{3.11a}{2013-10-15}{new}
+% \begin{macrocode}
+\newcommand*{\gls@assign@desc}[1]{%
+ \gls@assign@field{}{#1}{desc}{\@glo@desc}%
+ \gls@assign@field{\@glo@desc}{#1}{descplural}{\@glo@descplural}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\longnewglossaryentry}
+%\changes{3.11a}{2013-10-15}{new}
+% \begin{macrocode}
+\newcommand{\longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3\leavevmode\unskip\nopostdesc}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@desc}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }
+}
+% \end{macrocode}
+% Only allowed in the preamble. (Otherwise a long description could
+% cause problems when writing the entry definition to the temporary
+% file.)
+% \begin{macrocode}
+\@onlypreamble{\longnewglossaryentry}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\longprovideglossaryentry}
+%\changes{3.14a}{2013-11-12}{new}
+% As the above but only defines the entry if it doesn't already
+% exist.
+% \begin{macrocode}
+\newcommand{\longprovideglossaryentry}[3]{%
+ \ifglsentryexists{#1}{}%
+ {\longnewglossaryentry{#1}{#2}{#3}}%
+}
+\@onlypreamble{\longprovideglossaryentry}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@defglossaryentry}
+%\begin{definition}
+%\cs{gls@defglossaryentry}\marg{label}\marg{key-val list}
+%\end{definition}
+% Defines a new entry without checking if it already exists.
+%\changes{3.10a}{2013-10-13}{new}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand{\gls@defglossaryentry}[2]{%
+% \end{macrocode}
+% Prevent any further use of \cs{GlsSetQuote}:
+% \begin{macrocode}
+ \let\GlsSetQuote\gls@nosetquote
+% \end{macrocode}
+% Store label
+% \begin{macrocode}
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+% \end{macrocode}
+% \changes{3.12a}{2013-10-16}{added \cs{glslabel}}
+% Provide a means for user defined keys to reference the label:
+% \begin{macrocode}
+ \let\glslabel\@glo@label
+% \end{macrocode}
+% Set up defaults. If the \gloskey{name} or \gloskey{description}
+% keys are omitted, an error will be generated.
+% \begin{macrocode}
+ \let\@glo@name\@glsnoname
+ \let\@glo@desc\@glsnodesc
+% \end{macrocode}
+% \changes{1.12}{2008-03-08}{descriptionplural support added}
+% \begin{macrocode}
+ \let\@glo@descplural\@gls@default@value
+% \end{macrocode}
+% \begin{macrocode}
+ \let\@glo@type\@gls@default@value
+ \let\@glo@symbol\@gls@default@value
+% \end{macrocode}
+% \changes{1.12}{2008-03-08}{symbolplural support added}
+% \begin{macrocode}
+ \let\@glo@symbolplural\@gls@default@value
+% \end{macrocode}
+% \begin{macrocode}
+ \let\@glo@text\@gls@default@value
+% \end{macrocode}
+% \begin{macrocode}
+ \let\@glo@plural\@gls@default@value
+% \end{macrocode}
+% \changes{1.13}{2008-05-10}{Changed default first value}
+% Using \cs{let} instead of \cs{def} to make later comparison
+% avoid expansion issues. (Thanks to Ulrich~Diez for suggesting
+% this.)
+% \changes{1.16}{2008-08-27}{Changed def to let}
+%\changes{3.10a}{2013-10-13}{Changed to using \cs{@gls@default@value}}
+% \begin{macrocode}
+ \let\@glo@first\@gls@default@value
+% \end{macrocode}
+% \changes{1.12}{2008-03-08}{Changed default first plural to be first
+% key with s appended (was text key with s appended)}
+% \changes{1.13}{2008-05-10}{Changed default firstplural value}
+% \begin{macrocode}
+ \let\@glo@firstplural\@gls@default@value
+% \end{macrocode}
+% Set the default sort:
+%\changes{3.10a}{2013-10-13}{Changed to using \cs{@gls@default@value}}
+%\changes{1.05}{2007-08-10}{Changed the default value of the sort
+% key to just the value of the name key}%
+%\changes{1.18}{2009-01-14}{Changed default value of sort
+% to \cs{@glsdefaultsort}}
+% \begin{macrocode}
+ \let\@glo@sort\@gls@default@value
+% \end{macrocode}
+% Set the default counter:
+% \begin{macrocode}
+ \let\@glo@counter\@gls@default@value
+% \end{macrocode}
+%\changes{1.17}{2008-12-26}{added see key}
+% \begin{macrocode}
+ \def\@glo@see{}%
+% \end{macrocode}
+%\changes{1.17}{2008-12-26}{added parent key}
+% \begin{macrocode}
+ \def\@glo@parent{}%
+% \end{macrocode}
+%\changes{1.17}{2008-12-26}{added nonumberlist key}
+% \begin{macrocode}
+ \def\@glo@prefix{}%
+% \end{macrocode}
+% Initialise nonumberlist setting if we're in the \env{document}
+% environment.
+% \begin{macrocode}
+ \@gls@initnonumberlist
+% \end{macrocode}
+%\changes{2.04}{2009-11-10}{added user1-6 keys}
+% \begin{macrocode}
+ \def\@glo@useri{}%
+ \def\@glo@userii{}%
+ \def\@glo@useriii{}%
+ \def\@glo@useriv{}%
+ \def\@glo@userv{}%
+ \def\@glo@uservi{}%
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added short and long keys}
+% \begin{macrocode}
+ \def\@glo@short{}%
+ \def\@glo@shortpl{}%
+ \def\@glo@long{}%
+ \def\@glo@longpl{}%
+% \end{macrocode}
+% Add start hook in case another package wants to add extra keys.
+% \begin{macrocode}
+ \@newglossaryentryprehook
+% \end{macrocode}
+% Extract key-val information from third parameter:
+% \begin{macrocode}
+ \setkeys{glossentry}{#2}%
+% \end{macrocode}
+%\changes{3.14a}{2013-11-12}{added check for existence of default glossary}
+% Check there is a default glossary.
+% \begin{macrocode}
+ \ifundef\glsdefaulttype
+ {%
+ \PackageError{glossaries}%
+ {No default glossary type (have you used `nomain' by mistake?)}%
+ {If you use package option `nomain' you must define
+ a new glossary before you can define entries}%
+ }%
+ {}%
+% \end{macrocode}
+% Assign type. This must be fully expandable
+%\changes{4.03}{2014-01-20}{replaced \#1 with \cs{@glo@label}}
+% \begin{macrocode}
+ \gls@assign@field{\glsdefaulttype}{\@glo@label}{type}{\@glo@type}%
+ \edef\@glo@type{\glsentrytype{\@glo@label}}%
+% \end{macrocode}
+% Check to see if this glossary type has been defined, if it has,
+% add this label to the relevant list, otherwise generate an error.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+ \ifcsundef{glolist@\@glo@type}%
+ {%
+ \PackageError{glossaries}%
+ {Glossary type `\@glo@type' has not been defined}%
+ {You need to define a new glossary type, before making entries
+ in it}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{added check for ignored glossary}
+% Check if it's an ignored glossary
+% \begin{macrocode}
+ \ifignoredglossary\@glo@type
+ {%
+% \end{macrocode}
+% The description may be omitted for an entry in an ignored
+% glossary.
+% \begin{macrocode}
+ \ifx\@glo@desc\@glsnodesc
+ \let\@glo@desc\@empty
+ \fi
+ }%
+ {%
+ }%
+ \protected@edef\@glolist@{\csname glolist@\@glo@type\endcsname}%
+ \expandafter\xdef\csname glolist@\@glo@type\endcsname{%
+ \@glolist@{\@glo@label},}%
+ }%
+% \end{macrocode}
+% Initialise level to 0.
+% \begin{macrocode}
+ \gls@level=0\relax
+% \end{macrocode}
+% Has this entry been assigned a parent?
+% \begin{macrocode}
+ \ifx\@glo@parent\@empty
+% \end{macrocode}
+% Doesn't have a parent. Set \cs{glo@}\meta{label}"@parent" to
+% empty.
+% \begin{macrocode}
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ \else
+% \end{macrocode}
+% Has a parent. Check to ensure this entry isn't its own parent.
+%\changes{4.03}{2014-01-20}{replaced \cs{ifthenelse} with
+%\cs{ifdefequal}}
+% \begin{macrocode}
+ \ifdefequal\@glo@label\@glo@parent%
+ {%
+ \PackageError{glossaries}{Entry `\@glo@label' can't be its own parent}{}%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ }%
+ {%
+% \end{macrocode}
+% Check the parent exists:
+% \begin{macrocode}
+ \ifglsentryexists{\@glo@parent}%
+ {%
+% \end{macrocode}
+% Parent exists. Set \cs{glo@}\meta{label}"@parent".
+% \begin{macrocode}
+ \expandafter\xdef\csname glo@\@glo@label @parent\endcsname{%
+ \@glo@parent}%
+% \end{macrocode}
+% Determine level.
+% \begin{macrocode}
+ \gls@level=\csname glo@\@glo@parent @level\endcsname\relax
+ \advance\gls@level by 1\relax
+% \end{macrocode}
+% If name hasn't been specified, use same as the parent name
+% \begin{macrocode}
+ \ifx\@glo@name\@glsnoname
+ \expandafter\let\expandafter\@glo@name
+ \csname glo@\@glo@parent @name\endcsname
+% \end{macrocode}
+% If name and plural haven't been specified, use same as the parent
+% \begin{macrocode}
+ \ifx\@glo@plural\@gls@default@value
+ \expandafter\let\expandafter\@glo@plural
+ \csname glo@\@glo@parent @plural\endcsname
+ \fi
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Parent doesn't exist, so issue an error message and change this
+% entry to have no parent
+% \begin{macrocode}
+ \PackageError{glossaries}%
+ {%
+ Invalid parent `\@glo@parent'
+ for entry `\@glo@label' - parent doesn't exist%
+ }%
+ {%
+ Parent entries must be defined before their children%
+ }%
+ \def\@glo@parent{}%
+ \expandafter\gdef\csname glo@\@glo@label @parent\endcsname{}%
+ }%
+ }%
+ \fi
+% \end{macrocode}
+% Set the level for this entry
+% \begin{macrocode}
+ \expandafter\xdef\csname glo@\@glo@label @level\endcsname{\number\gls@level}%
+% \end{macrocode}
+% Define commands associated with this entry:
+% \begin{macrocode}
+ \gls@assign@field{\@glo@name}{\@glo@label}{sortvalue}{\@glo@sort}%
+ \letcs\@glo@sort{glo@\@glo@label @sortvalue}%
+ \gls@assign@field{\@glo@name}{\@glo@label}{text}{\@glo@text}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @text\endcsname\glspluralsuffix}%
+ {\@glo@label}{plural}{\@glo@plural}%
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @text\endcsname}%
+ {\@glo@label}{first}{\@glo@first}%
+% \end{macrocode}
+%\changes{3.14a}{2013-11-12}{set the default for firstplural to be the value
+%of plural}
+%\changes{4.0}{2013-11-14}{added check for first key}
+% If \gloskey{first} has been specified, make the default by appending
+% \cs{glspluralsuffix}, otherwise make the default the value of the
+% \gloskey{plural} key.
+% \begin{macrocode}
+ \ifx\@glo@first\@gls@default@value
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @plural\endcsname}%
+ {\@glo@label}{firstpl}{\@glo@firstplural}%
+ \else
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @first\endcsname\glspluralsuffix}%
+ {\@glo@label}{firstpl}{\@glo@firstplural}%
+ \fi
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{Fixed default counter if none supplied}
+% \begin{macrocode}
+ \ifcsundef{@glotype@\@glo@type @counter}%
+ {%
+ \def\@glo@defaultcounter{\glscounter}%
+ }%
+ {%
+ \letcs\@glo@defaultcounter{@glotype@\@glo@type @counter}%
+ }%
+ \gls@assign@field{\@glo@defaultcounter}{\@glo@label}{counter}{\@glo@counter}%
+ \gls@assign@field{}{\@glo@label}{useri}{\@glo@useri}%
+ \gls@assign@field{}{\@glo@label}{userii}{\@glo@userii}%
+ \gls@assign@field{}{\@glo@label}{useriii}{\@glo@useriii}%
+ \gls@assign@field{}{\@glo@label}{useriv}{\@glo@useriv}%
+ \gls@assign@field{}{\@glo@label}{userv}{\@glo@userv}%
+ \gls@assign@field{}{\@glo@label}{uservi}{\@glo@uservi}%
+ \gls@assign@field{}{\@glo@label}{short}{\@glo@short}%
+ \gls@assign@field{}{\@glo@label}{shortpl}{\@glo@shortpl}%
+ \gls@assign@field{}{\@glo@label}{long}{\@glo@long}%
+ \gls@assign@field{}{\@glo@label}{longpl}{\@glo@longpl}%
+ \ifx\@glo@name\@glsnoname
+ \@glsnoname
+ \let\@gloname\@gls@default@value
+ \fi
+ \gls@assign@field{}{\@glo@label}{name}{\@glo@name}%
+% \end{macrocode}
+%\changes{3.02}{2012-05-21}{added numberlist element}
+% Set default numberlist if not defined:
+% \begin{macrocode}
+ \ifcsundef{glo@\@glo@label @numberlist}%
+ {%
+ \csxdef{glo@\@glo@label @numberlist}{%
+ \noexpand\@gls@missingnumberlist{\@glo@label}}%
+ }%
+ {}%
+% \end{macrocode}
+% Store nonumberlist setting if we're in the \env{document}
+% environment.
+% \begin{macrocode}
+ \@gls@storenonumberlist{\@glo@label}%
+% \end{macrocode}
+% The smaller and smallcaps options set the description to
+% \cs{@glo@first}. Need to check for this, otherwise it won't get
+% expanded if the description gets sanitized.
+%\changes{1.15}{2008-08-15}{check for \cs{@glo@first} in description}%
+% \begin{macrocode}
+ \def\@glo@@desc{\@glo@first}%
+ \ifx\@glo@desc\@glo@@desc
+ \let\@glo@desc\@glo@first
+ \fi
+ \ifx\@glo@desc\@glsnodesc
+ \@glsnodesc
+ \let\@glodesc\@gls@default@value
+ \fi
+ \gls@assign@desc{\@glo@label}%
+% \end{macrocode}
+%\changes{1.18}{2009-01-14}{moved sort sanitization to
+% \cs{newglossaryentry}}
+%\changes{3.0}{2011-04-02}{added \cs{@gls@defsort}}
+% Set the sort key for this entry:
+% \begin{macrocode}
+ \@gls@defsort{\@glo@type}{\@glo@label}%
+% \end{macrocode}
+%\changes{1.15}{2008-08-15}{check for \cs{@glo@text} in symbol}%
+% \begin{macrocode}
+ \def\@glo@@symbol{\@glo@text}%
+ \ifx\@glo@symbol\@glo@@symbol
+ \let\@glo@symbol\@glo@text
+ \fi
+ \gls@assign@field{\relax}{\@glo@label}{symbol}{\@glo@symbol}%
+ \expandafter
+ \gls@assign@field\expandafter
+ {\csname glo@\@glo@label @symbol\endcsname}
+ {\@glo@label}{symbolplural}{\@glo@symbolplural}%
+% \end{macrocode}
+% Define an associated boolean variable to determine whether this
+% entry has been used yet (needs to be defined globally):
+% \begin{macrocode}
+ \expandafter\xdef\csname glo@\@glo@label @flagfalse\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iffalse
+ }%
+ \expandafter\xdef\csname glo@\@glo@label @flagtrue\endcsname{%
+ \noexpand\global
+ \noexpand\let\expandafter\noexpand
+ \csname ifglo@\@glo@label @flag\endcsname\noexpand\iftrue
+ }%
+ \csname glo@\@glo@label @flagfalse\endcsname
+% \end{macrocode}
+% Sort out any cross-referencing if required.
+%\changes{4.04}{2014-03-06}{replaced \cs{ifx} with \cs{ifdefvoid}}
+% \begin{macrocode}
+ \@glo@autosee
+% \end{macrocode}
+% Determine and store main part of the entry's index format.
+%\changes{1.17}{2008-12-26}{Stored main part of entry
+% format when entry
+% is defined}%
+% \begin{macrocode}
+ \ifignoredglossary\@glo@type
+ {%
+ \csdef{glo@\@glo@label @index}{}%
+ }
+ {%
+ \do@glo@storeentry{\@glo@label}%
+ }%
+% \end{macrocode}
+% Define entry counters if enabled:
+% \begin{macrocode}
+ \@newglossaryentry@defcounters
+% \end{macrocode}
+% Add end hook in case another package wants to add extra keys.
+% \begin{macrocode}
+ \@newglossaryentryposthook
+}
+% \end{macrocode}
+%\changes{1.13}{2008-05-10}{Removed restriction on only using
+% \cs{newglossaryentry} in the preamble}
+%\end{macro}
+%
+%\begin{macro}{\@glo@autosee}
+%\changes{4.30}{2017-06-11}{new}
+%Automatically implement \cs{glssee}.
+% \begin{macrocode}
+\newcommand*{\@glo@autosee}{%
+ \ifdefvoid\@glo@see{}%
+ {%
+ \protected@edef\@do@glssee{%
+ \noexpand\@gls@fixbraces\noexpand\@glo@list\@glo@see\noexpand\@nil
+ \noexpand\expandafter\noexpand\@glssee\noexpand\@glo@list{\@glo@label}}%
+ \@do@glssee
+ }%
+ \@glo@autoseehook
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@autoseehook}
+%\changes{4.30}{2017-06-11}{new}
+% \begin{macrocode}
+\newcommand*{\@glo@autoseehook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@newglossaryentryprehook}
+% Allow extra information to be added to glossary entries:
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\@newglossaryentryprehook}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@newglossaryentryposthook}
+% Allow extra information to be added to glossary entries:
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\@newglossaryentryposthook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@newglossaryentry@defcounters}
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@newglossaryentry@defcounters}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsmoveentry}
+%\changes{3.02}{2012-05-21}{new}
+% Moves entry whose label is given by first argument to the glossary
+% named in the second argument.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\glsmoveentry}[2]{%
+ \edef\@glo@thislabel{\glsdetoklabel{#1}}%
+ \edef\glo@type{\csname glo@\@glo@thislabel @type\endcsname}%
+ \def\glo@list{,}%
+ \forglsentries[\glo@type]{\glo@label}%
+ {%
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{replaced \cs{ifthenelse} with
+%\cs{ifdefequal}}
+% \begin{macrocode}
+ \ifdefequal\@glo@thislabel\glo@label
+ {}{\eappto\glo@list{\glo@label,}}%
+ }%
+ \cslet{glolist@\glo@type}{\glo@list}%
+ \csdef{glo@\@glo@thislabel @type}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glossaryentryfield}
+% Indicate what command should be used to display each entry in
+% the glossary. (This enables the \sty{glossaries-accsupp} package
+% to use \cs{accsuppglossaryentryfield} instead.)
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.08a}{2013-09-28}{switched to \cs{glossentry}}
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@glossaryentryfield}{\string\\glossentry}
+\else
+ \newcommand*{\@glossaryentryfield}{\string\glossentry}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glossarysubentryfield}
+% Indicate what command should be used to display each subentry in
+% the glossary. (This enables the \sty{glossaries-accsupp} package
+% to use \cs{accsuppglossarysubentryfield} instead.)
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.08a}{2013-09-28}{switched to \cs{subglossentry}}
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@glossarysubentryfield}{%
+ \string\\subglossentry}
+\else
+ \newcommand*{\@glossarysubentryfield}{%
+ \string\subglossentry}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@storeentry}
+%\begin{definition}
+%\cs{@glo@storeentry}\marg{label}
+%\end{definition}
+%\changes{1.17}{2008-12-26}{new}
+% Determine the format to write the entry in the glossary
+% output (\filetype{.glo}) file.
+% The argument is the entry's label (should already have been
+% de-tok'ed if required).
+% The result is stored in \cs{glo@}\meta{label}"@index", where
+% \meta{label} is the entry's label. (This doesn't include
+% any formatting or location information.)
+% \begin{macrocode}
+\newcommand{\@glo@storeentry}[1]{%
+% \end{macrocode}
+% Escape makeindex/xindy special characters in the label:
+% \begin{macrocode}
+ \edef\@glo@esclabel{#1}%
+ \@gls@checkmkidxchars\@glo@esclabel
+% \end{macrocode}
+% Get the sort string and escape any special characters
+% \begin{macrocode}
+ \protected@edef\@glo@sort{\csname glo@#1@sort\endcsname}%
+ \@gls@checkmkidxchars\@glo@sort
+% \end{macrocode}
+% Same again for the name string.
+%\changes{3.08a}{2013-09-28}{no longer need to check for special characters
+%in any of the fields other than sort}
+% Escape any special characters in the prefix
+% \begin{macrocode}
+ \@gls@checkmkidxchars\@glo@prefix
+% \end{macrocode}
+% Get the parent, if one exists
+% \begin{macrocode}
+ \edef\@glo@parent{\csname glo@#1@parent\endcsname}%
+% \end{macrocode}
+% Write the information to the glossary file.
+% \begin{macrocode}
+ \ifglsxindy
+% \end{macrocode}
+% Store using \app{xindy} syntax.
+% \begin{macrocode}
+ \ifx\@glo@parent\@empty
+% \end{macrocode}
+% Entry doesn't have a parent
+%\changes{3.08a}{2013-09-28}{updated for \cs{glossentry}}
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\@glossaryentryfield{\@glo@esclabel}\string") %
+ }%
+ \else
+% \end{macrocode}
+% Entry has a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname
+ (\string"\@glo@sort\string" %
+ \string"\@glo@prefix\@glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{\@glo@esclabel}\string") %
+ }%
+ \fi
+ \else
+% \end{macrocode}
+% Store using \app{makeindex} syntax.
+% \begin{macrocode}
+ \ifx\@glo@parent\@empty
+% \end{macrocode}
+% Sanitize \cs{@glo@prefix}
+% \begin{macrocode}
+ \@onelevel@sanitize\@glo@prefix
+% \end{macrocode}
+% Entry doesn't have a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \@glossaryentryfield{\@glo@esclabel}%
+ }%
+ \else
+% \end{macrocode}
+% Entry has a parent
+% \begin{macrocode}
+ \expandafter\protected@xdef\csname glo@#1@index\endcsname{%
+ \csname glo@\@glo@parent @index\endcsname\@gls@levelchar
+ \@glo@sort\@gls@actualchar\@glo@prefix
+ \@glossarysubentryfield
+ {\csname glo@#1@level\endcsname}{\@glo@esclabel}%
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Resetting and unsetting entry flags}
+% Each glossary entry is assigned a conditional of the form
+%\cs{ifglo@}\meta{label}\texttt{@flag} which determines
+% whether or not the entry has been used (see also
+% \ics{ifglsused} defined below). These flags can
+% be set and unset using the following macros, but first we need to
+% know if we're in \sty{amsmath}'s \env{align} environment's
+% measuring pass.
+%
+%\begin{macro}{\gls@ifnotmeasuring}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{amsmath}%
+ {\let\gls@ifnotmeasuring\@gls@ifnotmeasuring}%
+ {}%
+}
+\newcommand*{\@gls@ifnotmeasuring}[1]{%
+ \ifmeasuring@
+ \else
+ #1%
+ \fi
+}
+\newcommand*\gls@ifnotmeasuring[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspatchtabularx}
+%\changes{4.28}{2017-01-07}{new}
+%Patch \cs{TX@trial} (as per David Carlisle's answer in
+%\url{http://tex.stackexchange.com/a/94895}). This does nothing
+%if \cs{TX@trial} hasn't been defined.
+% \begin{macrocode}
+\def\@gls@patchtabularx#1\hbox#2#3!!{%
+ \def\TX@trial##1{#1\hbox{\let\glsunset\@gobble#2}#3}%
+}
+\newcommand*\glspatchtabularx{%
+ \ifdef\TX@trial
+ {%
+ \expandafter\@gls@patchtabularx\TX@trial{##1}!!%
+ \let\glspatchtabularx\relax
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsreset}
+% The command \cs{glsreset}\marg{label} can be used
+% to set the entry flag to indicate that it hasn't been used yet. The
+% required argument is the entry label.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.14}{2015-02-28}{switched to \cs{@glsreset}}
+% \begin{macrocode}
+\newcommand*{\glsreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glsreset{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslocalreset}
+% As above, but with only a local effect:
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.14}{2015-02-28}{switched to \cs{@glslocalreset}}
+% \begin{macrocode}
+\newcommand*{\glslocalreset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glslocalreset{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsunset}
+% The command \cs{glsunset}\marg{label} can be used to
+% set the entry flag to indicate that it has been used. The required
+% argument is the entry label.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.14}{2015-02-28}{switched to \cs{@glsunset}}
+% \begin{macrocode}
+\newcommand*{\glsunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glsunset{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslocalunset}
+% As above, but with only a local effect:
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.14}{2015-02-28}{switched to \cs{@glslocalunset}}
+% \begin{macrocode}
+\newcommand*{\glslocalunset}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \@glslocalunset{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslocalunset}
+% Local unset. This defaults to just \cs{@@glslocalunset} but is changed
+% by \cs{glsenableentrycount}.
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@glslocalunset}{\@@glslocalunset}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glslocalunset}
+%\changes{4.14}{2015-02-28}{new}
+% Local unset without checks.
+% \begin{macrocode}
+\newcommand*{\@@glslocalunset}[1]{%
+ \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iftrue
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsunset}
+% Global unset. This defaults to just \cs{@@glsunset} but is changed
+% by \cs{glsenableentrycount}.
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@glsunset}{\@@glsunset}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsunset}
+%\changes{4.14}{2015-02-28}{new}
+% Global unset without checks.
+% \begin{macrocode}
+\newcommand*{\@@glsunset}[1]{%
+ \expandafter\global\csname glo@\glsdetoklabel{#1}@flagtrue\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslocalreset}
+% Local reset. This defaults to just \cs{@@glslocalreset} but is changed
+% by \cs{glsenableentrycount}.
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@glslocalreset}{\@@glslocalreset}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glslocalreset}
+%\changes{4.14}{2015-02-28}{new}
+% Local reset without checks.
+% \begin{macrocode}
+\newcommand*{\@@glslocalreset}[1]{%
+ \expandafter\let\csname ifglo@\glsdetoklabel{#1}@flag\endcsname\iffalse
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsreset}
+% Global reset. This defaults to just \cs{@@glsreset} but is changed
+% by \cs{glsenableentrycount}.
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@glsreset}{\@@glsreset}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsreset}
+%\changes{4.14}{2015-02-28}{new}
+% Global reset without checks.
+% \begin{macrocode}
+\newcommand*{\@@glsreset}[1]{%
+ \expandafter\global\csname glo@\glsdetoklabel{#1}@flagfalse\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Reset all entries for the named glossaries (supplied in a
+% comma-separated list).
+% Syntax: \cs{glsresetall}\oarg{glossary-list}
+%\begin{macro}{\glsresetall}
+% \begin{macrocode}
+\newcommand*{\glsresetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glsreset{\@glsentry}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+% As above, but with only a local effect:
+%\begin{macro}{\glslocalresetall}
+% \begin{macrocode}
+\newcommand*{\glslocalresetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glslocalreset{\@glsentry}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+% Unset all entries for the named glossaries (supplied in a
+% comma-separated list).
+% Syntax: \cs{glsunsetall}\oarg{glossary-list}
+%\begin{macro}{\glsunsetall}
+% \begin{macrocode}
+\newcommand*{\glsunsetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glsunset{\@glsentry}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+% As above, but with only a local effect:
+%\begin{macro}{\glslocalunsetall}
+% \begin{macrocode}
+\newcommand*{\glslocalunsetall}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glsentry}%
+ {%
+ \glslocalunset{\@glsentry}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Keeping Track of How Many Times an Entry Has Been Unset}
+%Version 4.14 introduced \cs{glsenableentrycount} that keeps track
+%of how many times an entry is marked as used. The counter is reset
+%back to zero when the first use flag is reset. Note that although
+%the word ``counter'' is used here, it's not an actual \LaTeX\
+%counter or even an explicit \TeX\ count register but is just a
+%macro. Any of the commands that use \cs{glsunset} or
+%\cs{glslocalunset}, such as \cs{gls}, will automatically increment this value.
+%Commands that don't modify the first use flag (such as \cs{glstext}
+%or \cs{glsentrytext}) don't modify this value.
+%
+%\begin{macro}{\@@newglossaryentry@defcounters}
+%\changes{4.14}{2015-02-28}{new}
+% Define entry fields to keep track of how many times that entry has
+% been marked as used.
+% \begin{macrocode}
+\newcommand*{\@@newglossaryentry@defcounters}{%
+ \csdef{glo@\@glo@label @currcount}{0}%
+ \csdef{glo@\@glo@label @prevcount}{0}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsenableentrycount}
+%\changes{4.14}{2015-02-28}{new}
+% Enables tracking of how many times an entry has been marked as
+% used.
+% \begin{macrocode}
+\newcommand*{\glsenableentrycount}{%
+% \end{macrocode}
+% Enable new entry fields.
+% \begin{macrocode}
+ \let\@newglossaryentry@defcounters\@@newglossaryentry@defcounters
+% \end{macrocode}
+% Disable \cs{newglossaryentry} in the \env{document} environment.
+% \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}
+% Define commands \ics{glsentrycurrcount} and \ics{glsentryprevcount} to
+% access these new fields. Default to zero if undefined.
+% \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}
+% Make the unset and reset functions also increment or reset the
+% entry counter.
+% \begin{macrocode}
+ \renewcommand*{\@glsunset}[1]{%
+ \@@glsunset{##1}%
+ \@gls@increment@currcount{##1}%
+ }%
+ \renewcommand*{\@glslocalunset}[1]{%
+ \@@glslocalunset{##1}%
+ \@gls@local@increment@currcount{##1}%
+ }%
+ \renewcommand*{\@glsreset}[1]{%
+ \@@glsreset{##1}%
+ \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+ \renewcommand*{\@glslocalreset}[1]{%
+ \@@glslocalreset{##1}%
+ \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+% \end{macrocode}
+% Alter behaviour of \cs{cgls}. (Only global unset is used if
+% previous count was one as it doesn't make sense to have a~local
+% unset here given that the previous count was global.)
+% \begin{macrocode}
+ \def\@cgls@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cglsformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@gls@{##1}{##2}[##3]%
+ \fi
+ }%
+% \end{macrocode}
+% Similarly for the analogous commands. No case change plural:
+% \begin{macrocode}
+ \def\@cglspl@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cglsplformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@glspl@{##1}{##2}[##3]%
+ \fi
+ }%
+% \end{macrocode}
+% First letter uppercase singular:
+% \begin{macrocode}
+ \def\@cGls@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cGlsformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@Gls@{##1}{##2}[##3]%
+ \fi
+ }%
+% \end{macrocode}
+% First letter uppercase plural:
+% \begin{macrocode}
+ \def\@cGlspl@##1##2[##3]{%
+ \ifnum\glsentryprevcount{##2}=1\relax
+ \cGlsplformat{##2}{##3}%
+ \glsunset{##2}%
+ \else
+ \@Glspl@{##1}{##2}[##3]%
+ \fi
+ }%
+% \end{macrocode}
+% Write information to aux file at the end of the document
+% \begin{macrocode}
+ \AtEndDocument{\@gls@write@entrycounts}%
+% \end{macrocode}
+% Fetch previous count information from aux file. (No check here to
+% determine if the entry is still defined.)
+% \begin{macrocode}
+ \renewcommand*{\@gls@entry@count}[2]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}%
+ }%
+% \end{macrocode}
+% \cs{glsenableentrycount} may only be used once and only in the
+% preamble.
+% \begin{macrocode}
+ \let\glsenableentrycount\relax
+}
+\@onlypreamble\glsenableentrycount
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@increment@currcount}
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@increment@currcount}[1]{%
+ \csxdef{glo@\glsdetoklabel{#1}@currcount}{%
+ \number\numexpr\glsentrycurrcount{#1}+1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@local@increment@currcount}
+%\changes{4.14}{2015-02-28}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@local@increment@currcount}[1]{%
+ \csedef{glo@\glsdetoklabel{#1}@currcount}{%
+ \number\numexpr\glsentrycurrcount{#1}+1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@write@entrycounts}
+%\changes{4.14}{2015-02-28}{new}
+% Write the entry counts to the aux file. Use \cs{immediate} since
+% this occurs right at the end of the document. Only write
+% information for entries that have been used. (Some users have a
+% file containing vast numbers of entries, many of which may not be
+% used. There's no point writing information about the entries that
+% haven't been used and it will only slow things down.)
+% \begin{macrocode}
+\newcommand*{\@gls@write@entrycounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@count}[2]{}}%
+ \forallglsentries{\@glsentry}{%
+ \ifglsused{\@glsentry}%
+ {\immediate\write\@auxout
+ {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}}%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@entry@count}
+%\changes{4.14}{2015-02-28}{new}
+% Default behaviour is to ignore arguments. Activated by
+% \cs{glsenableentrycount}.
+% \begin{macrocode}
+\newcommand*{\@gls@entry@count}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cgls}
+%\changes{4.14}{2015-02-28}{new}
+% Define command that works like \cs{gls} but behaves differently if
+% the entry count function is enabled. (If not enabled, it behaves
+% the same as \cs{gls} but issues a warning.)
+% \begin{macrocode}
+\newrobustcmd*{\cgls}{\@gls@hyp@opt\@cgls}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cgls}
+%\changes{4.14}{2015-02-28}{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{4.14}{2015-02-28}{new}
+% Read in the final optional argument. This defaults to same behaviour
+% as \cs{gls} but issues a warning.
+% \begin{macrocode}
+\def\@cgls@#1#2[#3]{%
+ \GlossariesWarning{\string\cgls\space is defaulting to
+ \string\gls\space since you haven't enabled entry counting}%
+ \@gls@{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cglsformat}
+%\changes{4.14}{2015-02-28}{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]{%
+ \ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGls}
+%\changes{4.14}{2015-02-28}{new}
+% Define command that works like \cs{Gls} but behaves differently if
+% the entry count function is enabled. (If not enabled, it behaves
+% the same as \cs{Gls} but issues a warning.)
+% \begin{macrocode}
+\newrobustcmd*{\cGls}{\@gls@hyp@opt\@cGls}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cGls}
+%\changes{4.14}{2015-02-28}{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{4.14}{2015-02-28}{new}
+% Read in the final optional argument. This defaults to same behaviour
+% as \cs{Gls} but issues a warning.
+% \begin{macrocode}
+\def\@cGls@#1#2[#3]{%
+ \GlossariesWarning{\string\cGls\space is defaulting to
+ \string\Gls\space since you haven't enabled entry counting}%
+ \@Gls@{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGlsformat}
+%\changes{4.14}{2015-02-28}{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]{%
+ \ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cglspl}
+%\changes{4.14}{2015-02-28}{new}
+% Define command that works like \cs{glspl} but behaves differently if
+% the entry count function is enabled. (If not enabled, it behaves
+% the same as \cs{glspl} but issues a warning.)
+% \begin{macrocode}
+\newrobustcmd*{\cglspl}{\@gls@hyp@opt\@cglspl}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cglspl}
+%\changes{4.14}{2015-02-28}{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{4.14}{2015-02-28}{new}
+% Read in the final optional argument. This defaults to same behaviour
+% as \cs{glspl} but issues a warning.
+% \begin{macrocode}
+\def\@cglspl@#1#2[#3]{%
+ \GlossariesWarning{\string\cglspl\space is defaulting to
+ \string\glspl\space since you haven't enabled entry counting}%
+ \@glspl@{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cglsplformat}
+%\changes{4.14}{2015-02-28}{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]{%
+ \ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGlspl}
+%\changes{4.14}{2015-02-28}{new}
+% Define command that works like \cs{Glspl} but behaves differently if
+% the entry count function is enabled. (If not enabled, it behaves
+% the same as \cs{Glspl} but issues a warning.)
+% \begin{macrocode}
+\newrobustcmd*{\cGlspl}{\@gls@hyp@opt\@cGlspl}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cglspl}
+%\changes{4.14}{2015-02-28}{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{4.14}{2015-02-28}{new}
+% Read in the final optional argument. This defaults to same behaviour
+% as \cs{Glspl} but issues a warning.
+% \begin{macrocode}
+\def\@cGlspl@#1#2[#3]{%
+ \GlossariesWarning{\string\cGlspl\space is defaulting to
+ \string\Glspl\space since you haven't enabled entry counting}%
+ \@Glspl@{#1}{#2}[#3]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGlsplformat}
+%\changes{4.14}{2015-02-28}{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]{%
+ \ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \section{Loading files containing glossary entries}
+%\label{sec:load}
+% Glossary entries can be defined in an external file.
+% These external files can contain \ics{newglossaryentry}
+% and \ics{newacronym} commands.\footnote{and any other valid
+%\LaTeX\ code that can be used in the preamble.}
+%\begin{definition}
+% \cs{loadglsentries}\oarg{type}\marg{filename}
+%\end{definition}
+% This command will input the file using \cs{input}.
+% The optional argument specifies to which glossary the
+% entries should be assigned if they haven't used the \gloskey{type}
+% key. If the optional argument is not specified, the default
+% glossary is used. Only those entries used in the document (via
+% \ics{glslink}, \ics{gls}, \ics{glspl} and uppercase
+% variants or \ics{glsadd} and \ics{glsaddall}
+% will appear in the glossary). The mandatory argument is
+% the filename (with or without .tex extension).
+%\begin{macro}{\loadglsentries}
+% \begin{macrocode}
+\newcommand*{\loadglsentries}[2][\@gls@default]{%
+ \let\@gls@default\glsdefaulttype
+ \def\glsdefaulttype{#1}\input{#2}%
+ \let\glsdefaulttype\@gls@default
+}
+% \end{macrocode}
+%\end{macro}
+% \cs{loadglsentries} can only be used in the preamble:
+% \begin{macrocode}
+\@onlypreamble{\loadglsentries}
+% \end{macrocode}
+%
+%\section{Using glossary entries in the text}
+%\label{sec:code:glslink}
+%
+% Any term that has been defined using \ics{newglossaryentry}
+% (or \ics{newacronym}) can be displayed in the text
+% (i.e.\ outside of the glossary) using
+% one of the commands defined in this section. Unless you use
+% \ics{glslink}, the way the term appears in the text is
+% determined by \ics{glsdisplayfirst} (if it is the first
+% time the term has been used) or \ics{glsdisplay} (for
+% subsequent use). Any formatting commands (such as \cs{textbf}
+% is governed by \ics{glstextformat}. By default this just
+% displays the \term{link text} ``as is''.
+%\changes{1.04}{2007-08-03}{Added \cs{glstextformat}}%
+%\begin{macro}{\glstextformat}
+% \begin{macrocode}
+\newcommand*{\glstextformat}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryfmt}
+% As from version 3.11a, the way in which an entry is displayed is now
+% governed by \cs{glsentryfmt}. This doesn't take any arguments. The
+% required information is set by commands like \cs{gls}.
+% To ensure backward compatibility, the default use the old
+% \cs{glsdisplay} and \cs{glsdisplayfirst} style of commands
+% \begin{macrocode}
+\newcommand*{\glsentryfmt}{%
+ \@@gls@default@entryfmt\glsdisplayfirst\glsdisplay
+}
+% \end{macrocode}
+% Format that provides backwards compatibility:
+% \begin{macrocode}
+\newcommand*{\@@gls@default@entryfmt}[2]{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use. (Expansion was used in version 3.07 and below
+% in case the name wasn't the first thing to be displayed, but now
+% the user can sort out the upper casing in \ics{defglsentryfmt},
+% which avoids the issues caused by fragile commands.)
+% \begin{macrocode}
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #2{\glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #2{\Glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #1{\glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #1{\Glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \mfirstucMakeUppercase{#2{\glsentryplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \mfirstucMakeUppercase{#1{\glsentryfirstplural{\glslabel}}%
+ {\glsentrydescplural{\glslabel}}%
+ {\glsentrysymbolplural{\glslabel}}{\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #2{\glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #2{\Glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \ifbool{glscompatible-3.07}%
+ {%
+ \protected@edef\@glo@etext{%
+ #1{\glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ \xmakefirstuc\@glo@etext
+ }%
+ {%
+ #1{\Glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \mfirstucMakeUppercase{#2{\glsentrytext{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \mfirstucMakeUppercase{#1{\glsentryfirst{\glslabel}}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Custom text provided in \cs{glsdisp}
+% \begin{macrocode}
+ \ifglsused{\glslabel}%
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glscustomtext}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glscustomtext}%
+ {\glsentrydesc{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgenentryfmt}
+% Define a generic format that just uses the first, text, plural or
+% first plural keys (or the custom text) with the insert text appended.
+%\changes{3.11a}{2013-10-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use.
+% \begin{macrocode}
+ \Glsentryplural{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \Glsentryfirstplural{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsentryplural{\glslabel}\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsentryfirstplural{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \Glsentrytext{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \Glsentryfirst{\glslabel}\glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \mfirstucMakeUppercase{\glsentrytext{\glslabel}\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \mfirstucMakeUppercase{\glsentryfirst{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Custom text provided in \cs{glsdisp}. (The insert is most likely
+% to be empty at this point.)
+% \begin{macrocode}
+ \glscustomtext\glsinsert
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgenacfmt}
+%\changes{4.02}{2013-12-05}{new}
+% Define a generic acronym format that uses the \gloskey{long} and
+% \gloskey{short} keys (or their plurals) and \ics{acrfullformat},
+% \ics{firstacronymfont} and \ics{acronymfont}.
+% \begin{macrocode}
+\newcommand*{\glsgenacfmt}{%
+ \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}
+ \acronymfont{\glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent plural form, make first letter upper case:
+% \begin{macrocode}
+ \acronymfont{\Glsentryshortpl{\glslabel}}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\acronymfont{\glsentryshortpl{\glslabel}}\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Subsequent singular form, don't adjust case:
+% \begin{macrocode}
+ \acronymfont{\glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, make first letter upper case:
+% \begin{macrocode}
+ \acronymfont{\Glsentryshort{\glslabel}}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\acronymfont{\glsentryshort{\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}
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use plural form, make first letter upper case:
+% \begin{macrocode}
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% First use singular form, don't adjust case:
+% \begin{macrocode}
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form, make first letter upper case:
+% \begin{macrocode}
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\genacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% User supplied text.
+% \begin{macrocode}
+ \glscustomtext
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\genacrfullformat}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{genacrfullformat}\marg{label}\marg{insert}
+%\end{definition}
+% The full format used by \cs{glsgenacfmt} (singular).
+% \begin{macrocode}
+\newcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshort{#1}})%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Genacrfullformat}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{Genacrfullformat}\marg{label}\marg{insert}
+%\end{definition}
+% As above but makes the first letter upper case.
+% \begin{macrocode}
+\newcommand*{\Genacrfullformat}[2]{%
+ \protected@edef\gls@text{\genacrfullformat{#1}{#2}}%
+ \xmakefirstuc\gls@text
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\genplacrfullformat}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{genplacrfullformat}\marg{label}\marg{insert}
+%\end{definition}
+% The full format used by \cs{glsgenacfmt} (plural).
+% \begin{macrocode}
+\newcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{#1}#2\space
+ (\protect\firstacronymfont{\glsentryshortpl{#1}})%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Genplacrfullformat}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{Genplacrfullformat}\marg{label}\marg{insert}
+%\end{definition}
+% As above but makes the first letter upper case.
+% \begin{macrocode}
+\newcommand*{\Genplacrfullformat}[2]{%
+ \protected@edef\gls@text{\genplacrfullformat{#1}{#2}}%
+ \xmakefirstuc\gls@text
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdisplayfirst}
+% Deprecated. Kept for backward compatibility.
+%\changes{3.11a}{2013-10-15}{obsoleted}
+% \begin{macrocode}
+\newcommand*{\glsdisplayfirst}[4]{#1#4}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdisplay}
+% Deprecated. Kept for backward compatibility.
+%\changes{3.11a}{2013-10-15}{obsoleted}
+% \begin{macrocode}
+\newcommand*{\glsdisplay}[4]{#1#4}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\defglsdisplay}
+%\changes{3.11a}{2013-10-15}{obsoleted}
+% Deprecated. Kept for backward compatibility.
+% \begin{macrocode}
+\newcommand*{\defglsdisplay}[2][\glsdefaulttype]{%
+ \GlossariesWarning{\string\defglsdisplay\space is now obsolete.^^J
+ Use \string\defglsentryfmt\space instead}%
+ \expandafter\def\csname gls@#1@display\endcsname##1##2##3##4{#2}%
+ \edef\@gls@doentrydef{%
+ \noexpand\defglsentryfmt[#1]{%
+ \noexpand\ifcsdef{gls@#1@displayfirst}%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\csuse{gls@#1@displayfirst}}%
+ {\noexpand\csuse{gls@#1@display}}%
+ }%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\glsdisplayfirst}%
+ {\noexpand\csuse{gls@#1@display}}%
+ }%
+ }%
+ }%
+ \@gls@doentrydef
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\defglsdisplayfirst}
+% Deprecated. Kept for backward compatibility.
+%\changes{3.11a}{2013-10-15}{obsoleted}
+% \begin{macrocode}
+\newcommand*{\defglsdisplayfirst}[2][\glsdefaulttype]{%
+ \GlossariesWarning{\string\defglsdisplayfirst\space is now obsolete.^^J
+ Use \string\defglsentryfmt\space instead}%
+ \expandafter\def\csname gls@#1@displayfirst\endcsname##1##2##3##4{#2}%
+ \edef\@gls@doentrydef{%
+ \noexpand\defglsentryfmt[#1]{%
+ \noexpand\ifcsdef{gls@#1@display}%
+ {%
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\csuse{gls@#1@displayfirst}}%
+ {\noexpand\csuse{gls@#1@display}}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{4.04}{2014-03-06}{fixed unwanted space}
+% \begin{macrocode}
+ \noexpand\@@gls@default@entryfmt
+ {\noexpand\csuse{gls@#1@displayfirst}}%
+ {\noexpand\glsdisplay}%
+ }%
+ }%
+ }%
+ \@gls@doentrydef
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsubsection{Links to glossary entries}
+% The links to glossary entries all have a first optional
+% argument that can be used to change the format and counter
+% of the associated entry number. Except for \cs{glslink}
+% and \cs{glsdisp},
+% the commands like \cs{gls} have a final optional
+% argument that can be used to insert additional text in the
+% link (this will usually be appended, but can be redefined using
+% \ics{defglsentryfmt}).
+% It goes against the \LaTeX\ norm to have an optional
+% argument after the mandatory arguments, but it makes more
+% sense to write, say, \verb|\gls{label}['s]| rather than, say,
+% \verb|\gls[append='s]{label}|. Since these control sequences
+% are defined to include the final square bracket, spaces
+% will be ignored after them. This is likely to lead to
+% confusion as most users would not expect, say, "\gls{"\meta{label}"}"
+% to ignore following spaces, so \cs{new@ifnextchar} from the
+% \isty{amsgen} package is required.
+%
+% The following keys can be used in the first optional
+% argument. The \gloskey[glslink]{counter} key checks that the
+% value is the name of a valid counter.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\define@key{glslink}{counter}{%
+ \ifcsundef{c@#1}%
+ {%
+ \PackageError{glossaries}%
+ {There is no counter called `#1'}%
+ {%
+ The counter key should have the name of a valid counter
+ as its value%
+ }%
+ }%
+ {%
+ \def\@gls@counter{#1}%
+ }%
+}
+% \end{macrocode}
+% The value of the \gloskey[glslink]{format} key should be the name of a
+% command (without the initial backslash) that has a single mandatory
+% argument which can be used to format the associated entry
+% number.
+% \begin{macrocode}
+\define@key{glslink}{format}{%
+ \def\@glsnumberformat{#1}}
+% \end{macrocode}
+% The \gloskey[glslink]{hyper} key is a boolean key, it can either have the
+% value true or false, and indicates whether or not to make a
+% hyperlink to the relevant glossary entry. If hyper is false, an
+% entry will still be made in the glossary, but the given text
+% won't be a hyperlink.
+% \begin{macrocode}
+\define@boolkey{glslink}{hyper}[true]{}
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{explicitly initialise hyper key}
+% Initialise hyper key.
+% \begin{macrocode}
+\ifdef{\hyperlink}{\KV@glslink@hypertrue}{\KV@glslink@hyperfalse}
+% \end{macrocode}
+%\changes{3.04}{2012-11-18}{added local key}
+% The \gloskey[glslink]{local} key is a boolean key. If true this
+% indicates that commands such as \ics{gls} should only do a local
+% reset rather than a global one.
+% \begin{macrocode}
+\define@boolkey{glslink}{local}[true]{}
+% \end{macrocode}
+%
+% The original \cs{glsifhyper} command isn't particularly useful
+% as it makes more sense to check the actual hyperlink setting
+% rather than testing whether the starred or unstarred version
+% has been used. Therefore, as from version 4.08, \cs{glsifhyper}
+% is deprecated in favour of \ics{glsifhyperon}. In case there is
+% a particular need to know whether the starred or unstarred version
+% was used, provide a new command that determines whether the
+% *-version, +-version or unmodified version was used.
+%\begin{definition}
+%\cs{glslinkvar}\marg{unmodified case}\marg{star case}\marg{plus case}
+%\end{definition}
+%\begin{macro}{\glslinkvar}
+%\changes{4.08}{2014-07-30}{new}
+% Initialise to unmodified case.
+% \begin{macrocode}
+\newcommand*{\glslinkvar}[3]{#1}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsifhyper}
+% Now deprecated.
+%\changes{4.08}{2014-07-30}{deprecated}
+% \begin{macrocode}
+\newcommand*{\glsifhyper}[2]{%
+ \glslinkvar{#1}{#2}{#1}%
+ \GlossariesWarning{\string\glsifhyper\space is deprecated. Did
+ you mean \string\glsifhyperon\space or \string\glslinkvar?}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@hyp@opt}
+% Used by the commands such as \cs{glslink} to determine whether to
+% modify the hyper option.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@hyp@opt}[1]{%
+ \let\glslinkvar\@firstofthree
+ \let\@gls@hyp@opt@cs#1\relax
+ \@ifstar{\s@gls@hyp@opt}%
+ {\@ifnextchar+{\@firstoftwo{\p@gls@hyp@opt}}{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\s@gls@hyp@opt}
+% Starred version
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\s@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@secondofthree
+ \@gls@hyp@opt@cs[hyper=false,#1]}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\p@gls@hyp@opt}
+% Plus version
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\p@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@thirdofthree
+ \@gls@hyp@opt@cs[hyper=true,#1]}
+% \end{macrocode}
+%\end{macro}
+%
+%Syntax:
+%\begin{definition}
+% \cs{glslink}\oarg{options}\marg{label}\marg{text}
+%\end{definition}
+% Display \meta{text} in the document, and add the entry information
+% for \meta{label} into the relevant glossary. The optional
+% argument should be a key value list using the \texttt{glslink}
+% keys defined above.
+%
+% There is also a starred version:
+%\begin{definition}
+% \cs{glslink*}\oarg{options}\marg{label}\marg{text}
+%\end{definition}
+% which is equivalent to
+% \cs{glslink}"[hyper=false,"\meta{options}"]"\marg{label}\marg{text}
+%
+% First determine which version is being used:
+%\begin{macro}{\glslink}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glslink}{%
+ \@gls@hyp@opt\@gls@@link
+}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sgls@link}}
+%\begin{macro}{\@gls@@link}
+%\changes{2.03}{2009-09-23}{new}
+% The main part of the business is in \cs{@gls@link}
+% which shouldn't check if the term is defined as it's called by
+% \cs{gls} etc which also perform that check.
+% \begin{macrocode}
+\newcommand*{\@gls@@link}[3][]{%
+ \glsdoifexistsordo{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \@gls@link[#1]{#2}{#3}%
+ }{%
+% \end{macrocode}
+% Display the specified text. (The entry doesn't exist so
+% there's nothing to link it to.)
+% \begin{macrocode}
+ \glstextformat{#3}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspostlinkhook}
+%\changes{4.16}{2015-07-08}{new}
+% \begin{macrocode}
+\newcommand*{\glspostlinkhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@gls@link@checkfirsthyper}
+% Check for first use and switch off \gloskey[glslink]{hyper} key
+% if hyperlink not wanted. (Should be off if first use and
+% hyper=false is on or if first use and both the entry is in an acronym
+% list and the acrfootnote setting is on.)
+% This assumes the glossary type is stored in \cs{glstype} and the
+% label is stored in \cs{glslabel}.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@link@checkfirsthyper}{%
+ \ifglsused{\glslabel}%
+ {%
+ }%
+ {%
+ \gls@checkisacronymlist\glstype
+ \ifglshyperfirst
+ \if@glsisacronymlist
+ \ifglsacrfootnote
+ \KV@glslink@hyperfalse
+ \fi
+ \fi
+ \else
+ \KV@glslink@hyperfalse
+ \fi
+ }%
+% \end{macrocode}
+% Allow user to hook into this
+% \begin{macrocode}
+ \glslinkcheckfirsthyperhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslinkcheckfirsthyperhook}
+% Allow used to hook into the \cs{@gls@link@checkfirsthyper} macro
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\glslinkcheckfirsthyperhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslinkpostsetkeys}
+%\changes{4.16}{2015-07-08}{new}
+% \begin{macrocode}
+\newcommand*{\glslinkpostsetkeys}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifhyperon}
+%\changes{4.16}{2015-07-08}{moved definition of \cs{glsifhyperon}}
+% Check the value of the \gloskey[glslink]{hyper} key:
+% \begin{macrocode}
+\newcommand{\glsifhyperon}[2]{\ifKV@glslink@hyper#1\else#2\fi}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\do@glsdisablehyperinlist}
+% Disable hyperlink if in the ``nohyper'' list.
+%\changes{4.19}{2015-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\do@glsdisablehyperinlist}{%
+ \expandafter\DTLifinlist\expandafter{\glstype}{\@gls@nohyperlist}%
+ {\KV@glslink@hyperfalse}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setdefault@glslink@opts}
+% Hook to set default options for \cs{@glslink}.
+%\changes{4.20}{2015-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@setdefault@glslink@opts}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@link}
+%\changes{1.07}{2007-09-13}{fixed bug caused by \cs{theglsentrycounter} setting the page number too soon}
+%\changes{1.15}{2008-08-15}{added \cs{glslabel}}
+% \begin{macrocode}
+\def\@gls@link[#1]#2#3{%
+% \end{macrocode}
+%\changes{2.03}{2009-09-23}{Moved entry existence check to
+% avoid duplicate code}
+% Inserting \cs{leavevmode} suggested by Donald~Arseneau (avoids
+% problem with tabularx).
+%\changes{2.03}{2009-09-23}{added \cs{leavevmode}}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+ \leavevmode
+ \edef\glslabel{\glsdetoklabel{#2}}%
+% \end{macrocode}
+% Save options in \cs{@gls@link@opts} and label in \cs{@gls@link@label}
+%\changes{4.03}{2014-01-20}{moved \cs{@gls@link@opts} and
+%\cs{@gls@link@label} to \cs{@gls@link}}
+% \begin{macrocode}
+ \def\@gls@link@opts{#1}%
+ \let\@gls@link@label\glslabel
+% \end{macrocode}
+% \begin{macrocode}
+ \def\@glsnumberformat{glsnumberformat}%
+ \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{added check for ``nohypertypes''}%
+%\changes{3.07}{2013-07-05}{fixed bug that failed to find entry in list}%
+% If this is in one of the ``nohypertypes'' glossaries, suppress the
+% hyperlink by default
+%\changes{4.08}{2014-07-30}{renamed \cs{gls@type} to \cs{glstype}}
+% \begin{macrocode}
+ \edef\glstype{\csname glo@\glslabel @type\endcsname}%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{removed redundancy}
+% Save original setting
+% \begin{macrocode}
+ \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
+% \end{macrocode}
+% Set defaults:
+%\changes{4.20}{2015-11-30}{added \cs{@gls@setdefault@glslink@opts}}
+% \begin{macrocode}
+ \@gls@setdefault@glslink@opts
+% \end{macrocode}
+% Switch off hyper setting if the glossary type has been identified
+% in nohyperlist.
+% \begin{macrocode}
+ \do@glsdisablehyperinlist
+% \end{macrocode}
+% Macros must set this before calling \cs{@gls@link}. The
+% commands that check the first use flag should set this to
+% \cs{@gls@link@checkfirsthyper} otherwise it should be set to
+% \cs{relax}.
+% \begin{macrocode}
+ \do@gls@link@checkfirsthyper
+ \setkeys{glslink}{#1}%
+% \end{macrocode}
+% Add a hook for the user to customise things after the keys have
+% been set.
+% \begin{macrocode}
+ \glslinkpostsetkeys
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{moved definition of \cs{glsifhyperon}
+%outside of this macro}
+% Store the entry's counter in \cs{theglsentrycounter}
+%\changes{3.0}{2011-04-02}{added \cs{@gls@saveentrycounter}}
+% \begin{macrocode}
+ \@gls@saveentrycounter
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added \cs{@gls@setsort}}
+% Define sort key if necessary:
+% \begin{macrocode}
+ \@gls@setsort{\glslabel}%
+% \end{macrocode}
+%\changes{2.01}{2009 May 30}{moved \cs{@do@wrglossary} before term is displayed
+% to prevent unwanted whatsit}
+% (De-tok'ing done by \cs{@@do@wrglossary})
+% \begin{macrocode}
+ \@do@wrglossary{#2}%
+ \ifKV@glslink@hyper
+ \@glslink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
+ \else
+% \end{macrocode}
+%\changes{3.13a}{2013-11-05}{removed \cs{relax}}
+%\changes{4.20}{2015-11-30}{added \cs{glsdonohyperlink} when hyperlink is
+%suppressed}
+% \begin{macrocode}
+ \glsdonohyperlink{\glolinkprefix\glslabel}{\glstextformat{#3}}%
+ \fi
+% \end{macrocode}
+% Restore original setting
+% \begin{macrocode}
+ \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glolinkprefix}
+% \begin{macrocode}
+\newcommand*{\glolinkprefix}{glo:}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentrycounter}
+% Set default value of entry counter
+%\changes{3.02}{2012-05-21}{set default value}
+% \begin{macrocode}
+\def\glsentrycounter{\glscounter}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@saveentrycounter}
+%\changes{3.0}{2011-04-02}{new}
+% Need to check if using \ctr{equation} counter in \env{align}
+% environment:
+% \begin{macrocode}
+\newcommand*{\@gls@saveentrycounter}{%
+ \def\@gls@Hcounter{}%
+% \end{macrocode}
+% Are we using \ctr{equation} counter?
+% \begin{macrocode}
+ \ifthenelse{\equal{\@gls@counter}{equation}}%
+ {
+% \end{macrocode}
+% If we're in \env{align} environment, \cs{xatlevel@} will be defined.
+% (Can't test for \cs{@currenvir} as may be inside an inner
+% environment.)
+% \begin{macrocode}
+ \ifcsundef{xatlevel@}%
+ {%
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ }%
+ {%
+ \ifx\xatlevel@\@empty
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ \else
+ \savecounters@
+ \advance\c@equation by 1\relax
+ \edef\theglsentrycounter{\csname the\@gls@counter\endcsname}%
+% \end{macrocode}
+% Check if hyperref version of this counter
+% \begin{macrocode}
+ \ifcsundef{theH\@gls@counter}%
+ {%
+ \def\@gls@Hcounter{\theglsentrycounter}%
+ }%
+ {%
+ \def\@gls@Hcounter{\csname theH\@gls@counter\endcsname}%
+ }%
+ \protected@edef\theHglsentrycounter{\@gls@Hcounter}%
+ \restorecounters@
+ \fi
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Not using \ctr{equation} counter so no special measures:
+% \begin{macrocode}
+ \edef\theglsentrycounter{\expandafter\noexpand
+ \csname the\@gls@counter\endcsname}%
+ }%
+% \end{macrocode}
+% Check if hyperref version of this counter
+% \begin{macrocode}
+ \ifx\@gls@Hcounter\@empty
+ \ifcsundef{theH\@gls@counter}%
+ {%
+ \def\theHglsentrycounter{\theglsentrycounter}%
+ }%
+ {%
+ \protected@edef\theHglsentrycounter{\expandafter\noexpand
+ \csname theH\@gls@counter\endcsname}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.01}{2007-05-17}{Added range facility in format key}%
+%\begin{macro}{\@set@glo@numformat}
+% Set the formatting information in the format required by
+% \app{makeindex}. The first argument is the format specified
+% by the user (via the format key), the second argument is the
+% name of the counter used to indicate the location, the third
+% argument is a control sequence which stores the required format
+% and the fourth argument (new to v3.0) is the hyper-prefix.
+%\changes{3.0}{2010/03/31}{added 4th argument}
+% \begin{macrocode}
+\def\@set@glo@numformat#1#2#3#4{%
+ \expandafter\@glo@check@mkidxrangechar#3\@nil
+ \protected@edef#1{%
+ \@glo@prefix setentrycounter[#4]{#2}%
+ \expandafter\string\csname\@glo@suffix\endcsname
+ }%
+ \@gls@checkmkidxchars#1%
+}
+% \end{macrocode}
+%\end{macro}
+% Check to see if the given string starts with a ( or ). If it
+% does set \cs{@glo@prefix} to the starting character,
+% and \cs{@glo@suffix} to the rest (or "glsnumberformat"
+% if there is nothing else),
+% otherwise set \cs{@glo@prefix} to nothing and
+% \cs{@glo@suffix} to all of it.
+% \begin{macrocode}
+\def\@glo@check@mkidxrangechar#1#2\@nil{%
+\if#1(\relax
+ \def\@glo@prefix{(}%
+ \if\relax#2\relax
+ \def\@glo@suffix{glsnumberformat}%
+ \else
+ \def\@glo@suffix{#2}%
+ \fi
+\else
+ \if#1)\relax
+ \def\@glo@prefix{)}%
+ \if\relax#2\relax
+ \def\@glo@suffix{glsnumberformat}%
+ \else
+ \def\@glo@suffix{#2}%
+ \fi
+ \else
+ \def\@glo@prefix{}\def\@glo@suffix{#1#2}%
+ \fi
+\fi}
+% \end{macrocode}
+%
+%\begin{macro}{\@gls@escbsdq}
+% Escape backslashes and double quote marks. The argument must be
+% a control sequence.
+% \begin{macrocode}
+\newcommand*{\@gls@escbsdq}[1]{%
+ \def\@gls@checkedmkidx{}%
+ \let\gls@xdystring=#1\relax
+ \@onelevel@sanitize\gls@xdystring
+ \edef\do@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash\gls@xdystring\noexpand\@nil
+ \@backslashchar\@backslashchar\noexpand\null}%
+ \do@gls@xdycheckbackslash
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@xdycheckquote\gls@xdystring\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{\gls@xdystring}%
+% \end{macrocode}
+%\changes{3.04}{2012-11-18}{unsanitize \cs{gls@numberpage},
+%\cs{gls@alphpage}, \cs{gls@Alphpage} and \cs{gls@romanpage}}
+% Unsanitize \cs{gls@numberpage}, \cs{gls@alphpage},
+% \cs{gls@Alphpage} and \cs{glsromanpage} (thanks to David~Carlise
+% for the suggestion.)
+% \begin{macrocode}
+ \@for\@gls@tmp:=\gls@protected@pagefmts\do
+ {%
+ \edef\@gls@sanitized@tmp{\expandafter\@gobble\string\\\expandonce\@gls@tmp}%
+ \@onelevel@sanitize\@gls@sanitized@tmp
+ \edef\gls@dosubst{%
+ \noexpand\DTLsubstituteall\noexpand\gls@xdystring
+ {\@gls@sanitized@tmp}{\expandonce\@gls@tmp}%
+ }%
+ \gls@dosubst
+ }%
+% \end{macrocode}
+% Assign to required control sequence
+% \begin{macrocode}
+ \let#1=\gls@xdystring
+}
+% \end{macrocode}
+%\end{macro}
+% Catch special characters\mkidxspch\ (argument must be a
+% control sequence):
+%\begin{macro}{\@gls@checkmkidxchars}
+% \begin{macrocode}
+\newcommand{\@gls@checkmkidxchars}[1]{%
+ \ifglsxindy
+ \@gls@escbsdq{#1}%
+ \else
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkquote#1\@nil""\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescquote#1\@nil\"\"\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescactual#1\@nil\?\?\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkactual#1\@nil??\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkbar#1\@nil||\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checkescbar#1\@nil\|\|\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \def\@gls@checkedmkidx{}%
+ \expandafter\@gls@checklevel#1\@nil!!\null
+ \expandafter\@gls@updatechecked\@gls@checkedmkidx{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+% Update the control sequence and strip trailing \cs{@nil}:
+%\begin{macro}{\@gls@updatechecked}
+% \begin{macrocode}
+\def\@gls@updatechecked#1\@nil#2{\def#2{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@tmpb}
+%\changes{1.1}{2008-02-22}{changed \cs{toksdef} to \cs{newtoks}}
+% Define temporary token
+% \begin{macrocode}
+\newtoks\@gls@tmpb
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkquote}
+% Replace \verb|"| with \verb|""| since \verb|"| is a makeindex
+% special character\mkidxspch.
+% \begin{macrocode}
+\def\@gls@checkquote#1"#2"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@quotechar\@gls@quotechar\@gls@quotechar}%
+ \def\@@gls@checkquote{\@gls@checkquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@quotechar}%
+ \ifx\null#3\null
+ \def\@@gls@checkquote{\@gls@checkquote#2""\null}%
+ \else
+ \def\@@gls@checkquote{\@gls@checkquote#2"#3\null}%
+ \fi
+ \fi
+ \@@gls@checkquote
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkescquote}
+% Do the same for \verb|\"|:
+% \begin{macrocode}
+\def\@gls@checkescquote#1\"#2\"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@quotechar
+ \@gls@quotechar\string\"\@gls@quotechar}%
+ \def\@@gls@checkescquote{\@gls@checkescquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@quotechar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescquote{\@gls@checkescquote#2\"\"\null}%
+ \else
+ \def\@@gls@checkescquote{\@gls@checkescquote#2\"#3\null}%
+ \fi
+ \fi
+\@@gls@checkescquote
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkescactual}
+% Similarly for \verb|\?| (which is replaces @ as
+% \app{makeindex}'s special character):
+% \begin{macrocode}
+\def\@gls@checkescactual#1\?#2\?#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescactual{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@actualchar
+ \@gls@quotechar\string\"\@gls@actualchar}%
+ \def\@@gls@checkescactual{\@gls@checkescactual#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@actualchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescactual{\@gls@checkescactual#2\?\?\null}%
+ \else
+ \def\@@gls@checkescactual{\@gls@checkescactual#2\?#3\null}%
+ \fi
+ \fi
+\@@gls@checkescactual
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkescbar}
+% Similarly for \verb"\|":
+% \begin{macrocode}
+\def\@gls@checkescbar#1\|#2\|#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkescbar{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@encapchar
+ \@gls@quotechar\string\"\@gls@encapchar}%
+ \def\@@gls@checkescbar{\@gls@checkescbar#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@encapchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkescbar{\@gls@checkescbar#2\|\|\null}%
+ \else
+ \def\@@gls@checkescbar{\@gls@checkescbar#2\|#3\null}%
+ \fi
+ \fi
+\@@gls@checkescbar
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkesclevel}
+% Similarly for \verb"\!":
+% \begin{macrocode}
+\def\@gls@checkesclevel#1\!#2\!#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkesclevel{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@levelchar
+ \@gls@quotechar\string\"\@gls@levelchar}%
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\string\"\@gls@levelchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!\!\null}%
+ \else
+ \def\@@gls@checkesclevel{\@gls@checkesclevel#2\!#3\null}%
+ \fi
+ \fi
+\@@gls@checkesclevel
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkbar}
+% and for \verb"|":
+% \begin{macrocode}
+\def\@gls@checkbar#1|#2|#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkbar{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@encapchar\@gls@quotechar\@gls@encapchar}%
+ \def\@@gls@checkbar{\@gls@checkbar#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@encapchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkbar{\@gls@checkbar#2||\null}%
+ \else
+ \def\@@gls@checkbar{\@gls@checkbar#2|#3\null}%
+ \fi
+ \fi
+ \@@gls@checkbar
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checklevel}
+% and for \verb"!":
+% \begin{macrocode}
+\def\@gls@checklevel#1!#2!#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checklevel{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@levelchar\@gls@quotechar\@gls@levelchar}%
+ \def\@@gls@checklevel{\@gls@checklevel#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@levelchar}%
+ \ifx\null#3\null
+ \def\@@gls@checklevel{\@gls@checklevel#2!!\null}%
+ \else
+ \def\@@gls@checklevel{\@gls@checklevel#2!#3\null}%
+ \fi
+ \fi
+ \@@gls@checklevel
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@checkactual}
+% and for \verb"?":
+% \begin{macrocode}
+\def\@gls@checkactual#1?#2?#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@checkactual{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@actualchar\@gls@quotechar\@gls@actualchar}%
+ \def\@@gls@checkactual{\@gls@checkactual#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@gls@quotechar\@gls@actualchar}%
+ \ifx\null#3\null
+ \def\@@gls@checkactual{\@gls@checkactual#2??\null}%
+ \else
+ \def\@@gls@checkactual{\@gls@checkactual#2?#3\null}%
+ \fi
+ \fi
+ \@@gls@checkactual
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdycheckquote}
+% As before but for use with \app{xindy}
+% \begin{macrocode}
+\def\@gls@xdycheckquote#1"#2"#3\null{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#1}%
+ \ifx\null#2\null
+ \ifx\null#3\null
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@gls@xdycheckquote{\relax}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"\string\"}%
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#3\null}%
+ \fi
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \string\"}%
+ \ifx\null#3\null
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2""\null}%
+ \else
+ \def\@@gls@xdycheckquote{\@gls@xdycheckquote#2"#3\null}%
+ \fi
+ \fi
+ \@@gls@xdycheckquote
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@xdycheckbackslash}
+% Need to escape all backslashes for \app{xindy}.
+% Define command that will define \cs{@gls@xdycheckbackslash}
+% \begin{macrocode}
+\edef\def@gls@xdycheckbackslash{%
+ \noexpand\def\noexpand\@gls@xdycheckbackslash##1\@backslashchar
+ ##2\@backslashchar##3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter
+ {\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={##1}%
+ \noexpand\ifx\noexpand\null##2\noexpand\null
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar\@backslashchar\@backslashchar}%
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \@backslashchar\@backslashchar}%
+ \noexpand\ifx\noexpand\null##3\noexpand\null
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ \@backslashchar\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@xdycheckbackslash{%
+ \noexpand\@gls@xdycheckbackslash##2\@backslashchar
+ ##3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@xdycheckbackslash
+ }%
+}
+% \end{macrocode}
+% Now go ahead and define \cs{@gls@xdycheckbackslash}
+% \begin{macrocode}
+\def@gls@xdycheckbackslash
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\glsdohypertarget}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newlength\gls@tmplen
+\newcommand*{\glsdohypertarget}[2]{%
+ \@glsshowtarget{#1}%
+ \settoheight{\gls@tmplen}{#2}%
+ \raisebox{\gls@tmplen}{\hypertarget{#1}{}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsdohyperlink}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\glsdohyperlink}[2]{%
+ \@glsshowtarget{#1}%
+ \hyperlink{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdonohyperlink}
+%\changes{4.20}{2015-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\glsdonohyperlink}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslink}
+% If \ics{hyperlink} is not defined \cs{@glslink}
+% ignores its first argument and just does the second argument,
+% otherwise it is equivalent to \ics{hyperlink}.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{hyperlink}%
+{%
+ \let\@glslink\glsdonohyperlink
+}%
+{%
+ \let\@glslink\glsdohyperlink
+}
+% \end{macrocode}
+%\end{macro}
+%\changes{1.12}{2008-03-08}{added check for \cs{hypertarget} separate
+% to \cs{hyperlink} (memoir defines \cs{hyperlink} but not
+% \cs{hypertarget})}
+%\begin{macro}{\@glstarget}
+% If \ics{hypertarget} is not defined, \cs{@glstarget}
+% ignores its first argument and just does the second argument,
+% otherwise it is equivalent to \ics{hypertarget}.
+%\changes{1.16}{2008-08-27}{raised the hypertarget so the target text doesn't
+% scroll off the top of the page}
+% \begin{macrocode}
+\ifcsundef{hypertarget}%
+{%
+ \let\@glstarget\@secondoftwo
+}%
+{%
+ \let\@glstarget\glsdohypertarget
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Glossary hyperlinks can be disabled using \cs{glsdisablehyper}
+% (effect can be localised):
+%\begin{macro}{\glsdisablehyper}
+%\changes{4.08}{2014-07-30}{added \cs{KV@glslink@hyperfalse}
+% to definition}
+% \begin{macrocode}
+\newcommand{\glsdisablehyper}{%
+ \KV@glslink@hyperfalse
+ \let\@glslink\glsdonohyperlink
+ \let\@glstarget\@secondoftwo
+}
+% \end{macrocode}
+%\end{macro}
+% Glossary hyperlinks can be enabled using \cs{glsenablehyper}
+% (effect can be localised):
+%\begin{macro}{\glsenablehyper}
+%\changes{4.08}{2014-07-30}{added \cs{KV@glslink@hypertrue}
+% to definition}
+% \begin{macrocode}
+\newcommand{\glsenablehyper}{%
+ \KV@glslink@hypertrue
+ \let\@glslink\glsdohyperlink
+ \let\@glstarget\glsdohypertarget
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Provide some convenience commands if not already defined:
+%\changes{4.08}{2014-07-30}{removed \cs{@thirdofthree} (defined in kernel)}
+% \begin{macrocode}
+\providecommand{\@firstofthree}[3]{#1}
+\providecommand{\@secondofthree}[3]{#2}
+% \end{macrocode}
+%
+%Syntax:
+%\begin{definition}
+% \cs{gls}\oarg{options}\marg{label}\oarg{insert text}
+%\end{definition}
+% Link to glossary entry using singular form. The link text
+% is taken from the value of the \gloskey{text} or \gloskey{first}
+% keys used when the entry was defined.
+%
+% The first optional argument is a key-value list, the same as
+% \ics{glslink}\igloskey[glslink]{hyper}\igloskey[glslink]{format}\igloskey[glslink]{counter},
+% the mandatory argument is the entry label.
+% After the mandatory argument, there is another optional argument
+% to insert extra text in the link text (the location of the inserted
+% text is governed by \ics{glsdisplay} and
+% \ics{glsdisplayfirst}). As with \cs{glslink}
+% there is a starred version which is the same as the unstarred
+% version but with the \gloskey[glslink]{hyper} key set to \texttt{false}.
+% (Additional options can also be specified
+% in the first optional argument.)
+%
+% First determine which version is being used:
+%\begin{macro}{\gls}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\gls}{\@gls@hyp@opt\@gls}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sgls}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+%\begin{macro}{\@gls}
+% \begin{macrocode}
+\newcommand*{\@gls}[2][]{%
+ \new@ifnextchar[{\@gls@{#1}{#2}}{\@gls@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@gls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{add \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text})
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}.
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{Gls} behaves like \cs{gls}, but the first letter
+% of the link text is converted to uppercase (note that if the
+% first letter has an accent, the accented letter will need to
+% be grouped when you define the entry). It is mainly intended
+% for terms that start a sentence:
+%\begin{macro}{\Gls}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Gls}{\@gls@hyp@opt\@Gls}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGls}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Gls}[2][]{%
+ \new@ifnextchar[{\@Gls@{#1}{#2}}{\@Gls@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\begin{macro}{\@Gls@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Gls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+%\changes{3.11a}{2013-10-15}{add \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text})
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+%\changes{3.11a}{2013-10-15}{removed \cs{makefirstuc} (now dealt
+%with in \cs{glsentryfmt})}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{GLS} behaves like \ics{gls}, but the link
+% text is converted to uppercase:
+%\changes{3.01}{2011-04-12}{made robust}
+%\begin{macro}{\GLS}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLS}{\@gls@hyp@opt\@GLS}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLS}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLS}[2][]{%
+ \new@ifnextchar[{\@GLS@{#1}{#2}}{\@GLS@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\begin{macro}{\@GLS@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@GLS@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+%\changes{3.11a}{2013-10-15}{add \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text}).
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+%\changes{3.11a}{2013-10-15}{removed \cs{MakeUppercase} (now moved
+%to \cs{glsentryfmt})}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{glspl} behaves in the same way as \ics{gls} except
+% it uses the plural form.
+%\begin{macro}{\glspl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glspl}{\@gls@hyp@opt\@glspl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglspl}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glspl}[2][]{%
+ \new@ifnextchar[{\@glspl@{#1}{#2}}{\@glspl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\begin{macro}{\@glspl@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@glspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+%\changes{3.11a}{2013-10-15}{add \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+% \begin{macrocode}
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text})
+%\changes{1.12}{2008-03-08}{now uses \cs{glsentrydescplural} and
+% \cs{glsentrysymbolplural} instead of \cs{glsentrydesc} and
+% \cs{glsentrysymbol}}
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}.
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{Glspl} behaves in the same way as \ics{glspl}, except
+% that the first letter of the link text is converted to uppercase
+% (as with \ics{Gls}, if the first letter has an accent, it
+% will need to be grouped).
+%\begin{macro}{\Glspl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glspl}{\@gls@hyp@opt\@Glspl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlspl}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glspl}[2][]{%
+ \new@ifnextchar[{\@Glspl@{#1}{#2}}{\@Glspl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\begin{macro}{\@Glspl@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Glspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+%\changes{3.11a}{2013-10-15}{add \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+% \begin{macrocode}
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text}). This needs to be expanded so that the
+% \cs{@glo@text} can be passed to \cs{xmakefirstuc}.
+%\changes{1.12}{2008-03-08}{now uses \cs{glsentrydescplural} and
+% \cs{glsentrysymbolplural} instead of \cs{glsentrydesc} and
+% \cs{glsentrysymbol}}
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}.
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+%\changes{3.11a}{2013-10-15}{removed \cs{makefirstuc} (now dealt
+%with in \cs{glsentryfmt})}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{GLSpl} behaves like \ics{glspl} except that all the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSpl}{\@gls@hyp@opt\@GLSpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSpl}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSpl}[2][]{%
+ \new@ifnextchar[{\@GLSpl@{#1}{#2}}{\@GLSpl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\begin{macro}{\@GLSpl}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@GLSpl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+%\changes{3.11a}{2013-10-15}{add \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+% \begin{macrocode}
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glscustomtext\@empty
+ \def\glsinsert{#3}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text})
+%\changes{1.12}{2008-03-08}{now uses \cs{glsentrydescplural} and
+% \cs{glsentrysymbolplural} instead of \cs{glsentrydesc} and
+% \cs{glsentrysymbol}}
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}.
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+%\changes{3.11a}{2013-10-15}{removed \cs{MakeUppercase} as now dealt
+%with in \cs{glsentryfmt}}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdisp}
+%\changes{1.19}{2009-03-02}{new}
+%\cs{glsdisp}\oarg{options}\marg{label}\marg{text}
+% This is like \cs{gls} except that the link text is provided.
+% This differs from \cs{glslink} in that it uses
+% \cs{glsdisplay} or \cs{glsdisplayfirst} and unsets the first use
+% flag.
+%
+% First determine if we are using the starred form:
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsdisp}{\@gls@hyp@opt\@glsdisp}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsdisp}}
+% Defined the un-starred form.
+%\begin{macro}{\@glsdisp}
+% \begin{macrocode}
+\newcommand*{\@glsdisp}[3][]{%
+ \glsdoifexists{#2}{%
+% \end{macrocode}
+%\changes{2.05}{2010-02-06}{Added closing brace. Patch provided by Sergiu Dotenco}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+%\changes{3.11a}{2013-10-15}{add \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glscustomtext} and \cs{glsinsert}}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \def\glscustomtext{#3}%
+ \def\glsinsert{}%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved check for first use to
+%\cs{@gls@link}}
+% Determine what the link text should be (this is stored in
+% \cs{@glo@text})
+%\changes{3.11a}{2013-10-15}{change to using \cs{glsentryfmt} style
+%commands}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+% \end{macrocode}
+% Call \cs{@gls@link}.
+% If \pkgopt{footnote} package option has been used and the glossary
+% type is \cs{acronymtype}, suppress
+% hyperlink for first use. Likewise if the \pkgopt[false]{hyperfirst}
+% package option is used.
+%\changes{1.16}{2008-08-27}{Test glossary type is
+%\cs{acronymtype} in addition to
+%checking if footnote option has been used}
+%\changes{2.03}{2009-09-23}{Added check for hyperfirst}
+%\changes{2.04}{2009-11-10}{Changed test to check if glossary type
+%has been identified as a list of acronyms}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\@glo@text}%
+% \end{macrocode}
+% Indicate that this entry has now been used
+%\changes{2.05}{2010-02-06}{Removed spurious brace. Patch provided by Sergiu Dotenco}
+% \begin{macrocode}
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@link@nocheckfirsthyper}
+%\changes{4.19}{2015-11-22}{new}
+% Instead of just setting \cs{do@gls@link@checkfirsthyper} to
+% \cs{relax} in \cs{@gls@field@link}, set it to
+% \cs{@gls@link@nocheckfirsthyper} in case some other action needs
+% to take place.
+% \begin{macrocode}
+\newcommand*{\@gls@link@nocheckfirsthyper}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@field@link}
+%\changes{4.03}{2014-01-20}{new}
+%\changes{4.08}{2014-07-30}{added assignment of \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\newcommand{\@gls@field@link}[3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \@gls@link[#1]{#2}{#3}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{glstext} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{text} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glstext}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glstext}{\@gls@hyp@opt\@glstext}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglstext}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glstext}[2][]{%
+ \new@ifnextchar[{\@glstext@{#1}{#2}}{\@glstext@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrytext}}
+% \begin{macrocode}
+\def\@glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrytext{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLStext} behaves like \cs{glstext} except the text is converted
+% to uppercase.
+%\begin{macro}{\GLStext}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLStext}{\@gls@hyp@opt\@GLStext}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLStext}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLStext}[2][]{%
+ \new@ifnextchar[{\@GLStext@{#1}{#2}}{\@GLStext@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+% \begin{macrocode}
+\def\@GLStext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrytext{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{Glstext} behaves like \cs{glstext} except that the first letter
+% of the text is converted to uppercase.
+%\begin{macro}{\Glstext}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glstext}{\@gls@hyp@opt\@Glstext}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlstext}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glstext}[2][]{%
+ \new@ifnextchar[{\@Glstext@{#1}{#2}}{\@Glstext@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{Changed to just use \cs{Glsentrytext}}
+% \begin{macrocode}
+\def\@Glstext@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrytext{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{glsfirst} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{first} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glsfirst}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsfirst}{\@gls@hyp@opt\@glsfirst}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsfirst}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsfirst}[2][]{%
+ \new@ifnextchar[{\@glsfirst@{#1}{#2}}{\@glsfirst@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryfirst}}
+% \begin{macrocode}
+\def\@glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryfirst{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsfirst} behaves like \ics{glsfirst} except it displays the
+% first letter in uppercase.
+%\begin{macro}{\Glsfirst}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsfirst}{\@gls@hyp@opt\@Glsfirst}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsfirst}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsfirst}[2][]{%
+ \new@ifnextchar[{\@Glsfirst@{#1}{#2}}{\@Glsfirst@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryfirst}}
+% \begin{macrocode}
+\def\@Glsfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryfirst{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSfirst} behaves like \ics{Glsfirst} except it displays the
+% text in uppercase.
+%\begin{macro}{\GLSfirst}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSfirst}{\@gls@hyp@opt\@GLSfirst}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSfirst}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSfirst}[2][]{%
+ \new@ifnextchar[{\@GLSfirst@{#1}{#2}}{\@GLSfirst@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryfirst}}
+% \begin{macrocode}
+\def\@GLSfirst@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryfirst{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsplural} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{plural} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glsplural}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsplural}{\@gls@hyp@opt\@glsplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsplural}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsplural}[2][]{%
+ \new@ifnextchar[{\@glsplural@{#1}{#2}}{\@glsplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryplural}}
+% \begin{macrocode}
+\def\@glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsplural} behaves like \ics{glsplural} except that the first
+% letter is converted to uppercase.
+%\begin{macro}{\Glsplural}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsplural}{\@gls@hyp@opt\@Glsplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsplural}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsplural}[2][]{%
+ \new@ifnextchar[{\@Glsplural@{#1}{#2}}{\@Glsplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryplural}}
+% \begin{macrocode}
+\def\@Glsplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSplural} behaves like \ics{glsplural} except that the
+% text is converted to uppercase.
+%\begin{macro}{\GLSplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSplural}{\@gls@hyp@opt\@GLSplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSplural}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSplural}[2][]{%
+ \new@ifnextchar[{\@GLSplural@{#1}{#2}}{\@GLSplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryplural}}
+% \begin{macrocode}
+\def\@GLSplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryplural{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsfirstplural} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{firstplural} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glsfirstplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsfirstplural}{\@gls@hyp@opt\@glsfirstplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsfirstplural}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsfirstplural}[2][]{%
+ \new@ifnextchar[{\@glsfirstplural@{#1}{#2}}{\@glsfirstplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{glsentryfirstplural}}
+% \begin{macrocode}
+\def\@glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryfirstplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsfirstplural} behaves like \ics{glsfirstplural} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsfirstplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsfirstplural}{\@gls@hyp@opt\@Glsfirstplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsfirstplural}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsfirstplural}[2][]{%
+ \new@ifnextchar[{\@Glsfirstplural@{#1}{#2}}{\@Glsfirstplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{Glsentryfirstplural}}
+% \begin{macrocode}
+\def\@Glsfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryfirstplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSfirstplural} behaves like \ics{glsfirstplural} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSfirstplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSfirstplural}{\@gls@hyp@opt\@GLSfirstplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSfirstplural}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSfirstplural}[2][]{%
+ \new@ifnextchar[{\@GLSfirstplural@{#1}{#2}}{\@GLSfirstplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{glsentryfirstplural}}
+% \begin{macrocode}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryfirstplural{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsname} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{name} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glsname}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsname}{\@gls@hyp@opt\@glsname}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsname}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsname}[2][]{%
+ \new@ifnextchar[{\@glsname@{#1}{#2}}{\@glsname@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryname}}
+% \begin{macrocode}
+\def\@glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryname{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsname} behaves like \ics{glsname} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsname}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsname}{\@gls@hyp@opt\@Glsname}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsname}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsname}[2][]{%
+ \new@ifnextchar[{\@Glsname@{#1}{#2}}{\@Glsname@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryname}}
+% \begin{macrocode}
+\def\@Glsname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryname{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSname} behaves like \ics{glsname} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSname}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSname}{\@gls@hyp@opt\@GLSname}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSname}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSname}[2][]{%
+ \new@ifnextchar[{\@GLSname@{#1}{#2}}{\@GLSname@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryname}}
+% \begin{macrocode}
+\def\@GLSname@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryname{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsdesc} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{description} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsdesc}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsdesc}{\@gls@hyp@opt\@glsdesc}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsdesc}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsdesc}[2][]{%
+ \new@ifnextchar[{\@glsdesc@{#1}{#2}}{\@glsdesc@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrydesc}}
+% \begin{macrocode}
+\def\@glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrydesc{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsdesc} behaves like \ics{glsdesc} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsdesc}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsdesc}{\@gls@hyp@opt\@Glsdesc}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsdesc}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsdesc}[2][]{%
+ \new@ifnextchar[{\@Glsdesc@{#1}{#2}}{\@Glsdesc@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentrydesc}}
+% \begin{macrocode}
+\def\@Glsdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrydesc{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSdesc} behaves like \ics{glsdesc} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSdesc}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSdesc}{\@gls@hyp@opt\@GLSdesc}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSdesc}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSdesc}[2][]{%
+ \new@ifnextchar[{\@GLSdesc@{#1}{#2}}{\@GLSdesc@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrydesc}}
+% \begin{macrocode}
+\def\@GLSdesc@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrydesc{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsdescplural} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{descriptionplural} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsdescplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsdescplural}{\@gls@hyp@opt\@glsdescplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsdescplural}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsdescplural}[2][]{%
+ \new@ifnextchar[{\@glsdescplural@{#1}{#2}}{\@glsdescplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{glsentrydescplural}}
+% \begin{macrocode}
+\def\@glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrydescplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsdescplural} behaves like \ics{glsdescplural} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsdescplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsdescplural}{\@gls@hyp@opt\@Glsdescplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsdescplural}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsdescplural}[2][]{%
+ \new@ifnextchar[{\@Glsdescplural@{#1}{#2}}{\@Glsdescplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{Glsentrydescplural}}
+% \begin{macrocode}
+\def\@Glsdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrydescplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSdescplural} behaves like \ics{glsdescplural} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSdescplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSdescplural}{\@gls@hyp@opt\@GLSdescplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSdescplural}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSdescplural}[2][]{%
+ \new@ifnextchar[{\@GLSdescplural@{#1}{#2}}{\@GLSdescplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+% \changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{glsentrydescplural}}
+% \begin{macrocode}
+\def\@GLSdescplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrydescplural{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glssymbol} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{symbol} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glssymbol}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glssymbol}{\@gls@hyp@opt\@glssymbol}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglssymbol}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glssymbol}[2][]{%
+ \new@ifnextchar[{\@glssymbol@{#1}{#2}}{\@glssymbol@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrysymbol}}
+% \begin{macrocode}
+\def\@glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrysymbol{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glssymbol} behaves like \ics{glssymbol} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glssymbol}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glssymbol}{\@gls@hyp@opt\@Glssymbol}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlssymbol}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glssymbol}[2][]{%
+ \new@ifnextchar[{\@Glssymbol@{#1}{#2}}{\@Glssymbol@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentrysymbol}}
+% \begin{macrocode}
+\def\@Glssymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrysymbol{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSsymbol} behaves like \ics{glssymbol} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSsymbol}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSsymbol}{\@gls@hyp@opt\@GLSsymbol}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSsymbol}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSsymbol}[2][]{%
+ \new@ifnextchar[{\@GLSsymbol@{#1}{#2}}{\@GLSsymbol@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentrysymbol}}
+% \begin{macrocode}
+\def\@GLSsymbol@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrysymbol{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glssymbolplural} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{symbolplural} key and it doesn't mark the entry as
+% used.
+%\begin{macro}{\glssymbolplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glssymbolplural}{\@gls@hyp@opt\@glssymbolplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglssymbolplural}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glssymbolplural}[2][]{%
+ \new@ifnextchar[{\@glssymbolplural@{#1}{#2}}{\@glssymbolplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{glsentrysymbolplural}}
+% \begin{macrocode}
+\def\@glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentrysymbolplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glssymbolplural} behaves like \ics{glssymbolplural} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glssymbolplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glssymbolplural}{\@gls@hyp@opt\@Glssymbolplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlssymbolplural}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glssymbolplural}[2][]{%
+ \new@ifnextchar[{\@Glssymbolplural@{#1}{#2}}{\@Glssymbolplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{Glsentrysymbolplural}}
+% \begin{macrocode}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentrysymbolplural{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSsymbolplural} behaves like \ics{glssymbolplural} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSsymbolplural}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSsymbolplural}{\@gls@hyp@opt\@GLSsymbolplural}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSsymbolplural}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSsymbolplural}[2][]{%
+ \new@ifnextchar[{\@GLSsymbolplural@{#1}{#2}}{\@GLSsymbolplural@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{1.13}{2008-05-10}{fixed bug that ignored 3rd parameter}
+%\changes{3.11a}{2013-10-15}{changed to just use
+%\cs{glsentrysymbolplural}}
+% \begin{macrocode}
+\def\@GLSsymbolplural@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentrysymbolplural{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsuseri} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{user1} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsuseri}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsuseri}{\@gls@hyp@opt\@glsuseri}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsuseri}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsuseri}[2][]{%
+ \new@ifnextchar[{\@glsuseri@{#1}{#2}}{\@glsuseri@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseri}}
+% \begin{macrocode}
+\def\@glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseri{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsuseri} behaves like \ics{glsuseri} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsuseri}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsuseri}{\@gls@hyp@opt\@Glsuseri}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuseri}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsuseri}[2][]{%
+ \new@ifnextchar[{\@Glsuseri@{#1}{#2}}{\@Glsuseri@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryuseri}}
+% \begin{macrocode}
+\def\@Glsuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseri{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSuseri} behaves like \ics{glsuseri} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSuseri}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSuseri}{\@gls@hyp@opt\@GLSuseri}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuseri}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSuseri}[2][]{%
+ \new@ifnextchar[{\@GLSuseri@{#1}{#2}}{\@GLSuseri@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseri}}
+% \begin{macrocode}
+\def\@GLSuseri@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsuserii} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{user2} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsuserii}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsuserii}{\@gls@hyp@opt\@glsuserii}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsuserii}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsuserii}[2][]{%
+ \new@ifnextchar[{\@glsuserii@{#1}{#2}}{\@glsuserii@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuserii}}
+% \begin{macrocode}
+\def\@glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuserii{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsuserii} behaves like \ics{glsuserii} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsuserii}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsuserii}{\@gls@hyp@opt\@Glsuserii}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuserii}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsuserii}[2][]{%
+ \new@ifnextchar[{\@Glsuserii@{#1}{#2}}{\@Glsuserii@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryuserii}}
+% \begin{macrocode}
+\def\@Glsuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuserii{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSuserii} behaves like \ics{glsuserii} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSuserii}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSuserii}{\@gls@hyp@opt\@GLSuserii}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuserii}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSuserii}[2][]{%
+ \new@ifnextchar[{\@GLSuserii@{#1}{#2}}{\@GLSuserii@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuserii}}
+% \begin{macrocode}
+\def\@GLSuserii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsuseriii} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{user3} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsuseriii}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsuseriii}{\@gls@hyp@opt\@glsuseriii}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsuseriii}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsuseriii}[2][]{%
+ \new@ifnextchar[{\@glsuseriii@{#1}{#2}}{\@glsuseriii@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseriii}}
+% \begin{macrocode}
+\def\@glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseriii{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsuseriii} behaves like \ics{glsuseriii} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsuseriii}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsuseriii}{\@gls@hyp@opt\@Glsuseriii}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuseriii}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsuseriii}[2][]{%
+ \new@ifnextchar[{\@Glsuseriii@{#1}{#2}}{\@Glsuseriii@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryuseriii}}
+% \begin{macrocode}
+\def\@Glsuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseriii{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSuseriii} behaves like \ics{glsuseriii} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSuseriii}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSuseriii}{\@gls@hyp@opt\@GLSuseriii}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuseriii}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSuseriii}[2][]{%
+ \new@ifnextchar[{\@GLSuseriii@{#1}{#2}}{\@GLSuseriii@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseriii}}
+% \begin{macrocode}
+\def\@GLSuseriii@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsuseriv} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{user4} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsuseriv}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsuseriv}{\@gls@hyp@opt\@glsuseriv}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsuseriv}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsuseriv}[2][]{%
+ \new@ifnextchar[{\@glsuseriv@{#1}{#2}}{\@glsuseriv@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseriv}}
+% \begin{macrocode}
+\def\@glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuseriv{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsuseriv} behaves like \ics{glsuseriv} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsuseriv}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsuseriv}{\@gls@hyp@opt\@Glsuseriv}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuseriv}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsuseriv}[2][]{%
+ \new@ifnextchar[{\@Glsuseriv@{#1}{#2}}{\@Glsuseriv@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryuseriv}}
+% \begin{macrocode}
+\def\@Glsuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuseriv{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSuseriv} behaves like \ics{glsuseriv} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSuseriv}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSuseriv}{\@gls@hyp@opt\@GLSuseriv}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuseriv}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSuseriv}[2][]{%
+ \new@ifnextchar[{\@GLSuseriv@{#1}{#2}}{\@GLSuseriv@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuseriv}}
+% \begin{macrocode}
+\def\@GLSuseriv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsuserv} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{user5} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsuserv}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsuserv}{\@gls@hyp@opt\@glsuserv}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsuserv}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsuserv}[2][]{%
+ \new@ifnextchar[{\@glsuserv@{#1}{#2}}{\@glsuserv@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuserv}}
+% \begin{macrocode}
+\def\@glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuserv{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsuserv} behaves like \ics{glsuserv} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsuserv}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsuserv}{\@gls@hyp@opt\@Glsuserv}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuserv}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsuserv}[2][]{%
+\new@ifnextchar[{\@Glsuserv@{#1}{#2}}{\@Glsuserv@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryuserv}}
+% \begin{macrocode}
+\def\@Glsuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuserv{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSuserv} behaves like \ics{glsuserv} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSuserv}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSuserv}{\@gls@hyp@opt\@GLSuserv}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuserv}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSuserv}[2][]{%
+\new@ifnextchar[{\@GLSuserv@{#1}{#2}}{\@GLSuserv@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuserv}}
+% \begin{macrocode}
+\def\@GLSuserv@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}%
+}
+% \end{macrocode}
+%
+% \cs{glsuservi} behaves like \ics{gls} except it always uses the value
+% given by the \gloskey{user6} key and it doesn't mark the entry
+% as used.
+%\begin{macro}{\glsuservi}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\glsuservi}{\@gls@hyp@opt\@glsuservi}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sglsuservi}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@glsuservi}[2][]{%
+ \new@ifnextchar[{\@glsuservi@{#1}{#2}}{\@glsuservi@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuservi}}
+% \begin{macrocode}
+\def\@glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\glsentryuservi{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{Glsuservi} behaves like \ics{glsuservi} except that the
+% first letter is converted to uppercase.
+%\begin{macro}{\Glsuservi}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsuservi}{\@gls@hyp@opt\@Glsuservi}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGlsuservi}}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@Glsuservi}[2][]{%
+ \new@ifnextchar[{\@Glsuservi@{#1}{#2}}{\@Glsuservi@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{Glsentryuservi}}
+% \begin{macrocode}
+\def\@Glsuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\Glsentryuservi{#2}#3}%
+}
+% \end{macrocode}
+%
+% \cs{GLSuservi} behaves like \ics{glsuservi} except that the
+% link text is converted to uppercase.
+%\begin{macro}{\GLSuservi}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\GLSuservi}{\@gls@hyp@opt\@GLSuservi}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sGLSuservi}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@GLSuservi}[2][]{%
+ \new@ifnextchar[{\@GLSuservi@{#1}{#2}}{\@GLSuservi@{#1}{#2}[]}}
+% \end{macrocode}
+% Read in the final optional argument:
+%\changes{3.11a}{2013-10-15}{changed to just use \cs{glsentryuservi}}
+% \begin{macrocode}
+\def\@GLSuservi@#1#2[#3]{%
+ \@gls@field@link{#1}{#2}{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}%
+}
+% \end{macrocode}
+%
+% Now deal with acronym related keys. First the short form:
+%\begin{macro}{\acrshort}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrshort}{\@gls@hyp@opt\ns@acrshort}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sacrshort}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@acrshort}[2][]{%
+ \new@ifnextchar[{\@acrshort{#1}{#2}}{\@acrshort{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsentryshort{#2}}#3%
+ }%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\Acrshort}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Acrshort}{\@gls@hyp@opt\ns@Acrshort}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sAcrshort}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Acrshort}[2][]{%
+ \new@ifnextchar[{\@Acrshort{#1}{#2}}{\@Acrshort{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsentryshort{#2}}#3%
+ }%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\ACRshort}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\ACRshort}{\@gls@hyp@opt\ns@ACRshort}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sACRshort}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@ACRshort}[2][]{%
+ \new@ifnextchar[{\@ACRshort{#1}{#2}}{\@ACRshort{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}%
+ }%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+% Short plural:
+%\begin{macro}{\acrshortpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrshortpl}{\@gls@hyp@opt\ns@acrshortpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sacrshortpl}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@acrshortpl}[2][]{%
+ \new@ifnextchar[{\@acrshortpl{#1}{#2}}{\@acrshortpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsentryshortpl{#2}}#3%
+ }%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\Acrshortpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Acrshortpl}{\@gls@hyp@opt\ns@Acrshortpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sAcrshortpl}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Acrshortpl}[2][]{%
+ \new@ifnextchar[{\@Acrshortpl{#1}{#2}}{\@Acrshortpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsentryshortpl{#2}}#3%
+ }%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\ACRshortpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\ACRshortpl}{\@gls@hyp@opt\ns@ACRshortpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sACRshortpl}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@ACRshortpl}[2][]{%
+ \new@ifnextchar[{\@ACRshortpl{#1}{#2}}{\@ACRshortpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@ACRshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}%
+ }%
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\acrlong}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrlong}{\@gls@hyp@opt\ns@acrlong}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sacrlong}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@acrlong}[2][]{%
+ \new@ifnextchar[{\@acrlong{#1}{#2}}{\@acrlong{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
+% (\cs{acronymfont} only designed for short form).
+% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+% \begin{macrocode}
+ \def\glscustomtext{%
+ \glsentrylong{#2}#3%
+ }%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\Acrlong}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Acrlong}{\@gls@hyp@opt\ns@Acrlong}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sAcrlong}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Acrlong}[2][]{%
+ \new@ifnextchar[{\@Acrlong{#1}{#2}}{\@Acrlong{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
+% (\cs{acronymfont} only designed for short form).
+% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+% \begin{macrocode}
+ \def\glscustomtext{%
+ \Glsentrylong{#2}#3%
+ }%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}.
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\ACRlong}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\ACRlong}{\@gls@hyp@opt\ns@ACRlong}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sACRlong}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@ACRlong}[2][]{%
+ \new@ifnextchar[{\@ACRlong{#1}{#2}}{\@ACRlong{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
+% (\cs{acronymfont} only designed for short form).
+% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+% \begin{macrocode}
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\glsentrylong{#2}#3}%
+ }%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}.
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+% Short plural:
+%\begin{macro}{\acrlongpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrlongpl}{\@gls@hyp@opt\ns@acrlongpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sacrlongpl}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@acrlongpl}[2][]{%
+ \new@ifnextchar[{\@acrlongpl{#1}{#2}}{\@acrlongpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
+% (\cs{acronymfont} only designed for short form).
+% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+% \begin{macrocode}
+ \def\glscustomtext{%
+ \glsentrylongpl{#2}#3%
+ }%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}.
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\Acrlongpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Acrlongpl}{\@gls@hyp@opt\ns@Acrlongpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sAcrlongpl}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Acrlongpl}[2][]{%
+ \new@ifnextchar[{\@Acrlongpl{#1}{#2}}{\@Acrlongpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
+% (\cs{acronymfont} only designed for short form).
+% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+% \begin{macrocode}
+ \def\glscustomtext{%
+ \Glsentrylongpl{#2}#3%
+ }%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}.
+% Note that \cs{@gls@link} sets \cs{glstype}.
+%\changes{4.15}{2015-03-16}{bug fix replaced \cs{@glo@type} with \cs{glstype}}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+%\begin{macro}{\ACRlongpl}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\ACRlongpl}{\@gls@hyp@opt\ns@ACRlongpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \cs{@sACRlongpl}}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@ACRlongpl}[2][]{%
+ \new@ifnextchar[{\@ACRlongpl{#1}{#2}}{\@ACRlongpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@ACRlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{changed checkfirsthyper assignment}
+% \begin{macrocode}
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+% \begin{macrocode}
+ \def\glslabel{#2}%
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+% \end{macrocode}
+%\changes{4.06}{2014-03-12}{added \cs{glsifhyper}}
+% Bug fix v4.02 removed \cs{acronymfont} from \cs{glscustomtext}
+% (\cs{acronymfont} only designed for short form).
+% \changes{4.02}{2013-12-05}{Removed \cs{acronymfont}}
+% \begin{macrocode}
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\glsentrylongpl{#2}#3}%
+ }%
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{moved \cs{glsifhyper}}
+% Call \cs{@gls@link}.
+% Note that \cs{@gls@link} sets \cs{glstype}.
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%
+% \subsubsection{Displaying entry details without adding
+% information to the glossary}
+%\label{sec:code:glsnolink}
+%
+% These commands merely display entry information without adding
+% entries in the associated file or having hyperlinks.
+%
+%\begin{macro}{\@gls@entry@field}
+% Generic version.
+%\changes{4.03}{2014-01-20}{new}
+%\begin{definition}
+%\cs{@gls@entry@field}\marg{label}\marg{field}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\@gls@entry@field}[2]{%
+ \csname glo@\glsdetoklabel{#1}@#2\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsletentryfield}
+%\changes{4.07}{2014-04-04}{new}
+%\begin{definition}
+%\cs{glsletentryfield}\marg{cs}\marg{label}\marg{field}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsletentryfield}[3]{%
+ \letcs{#1}{glo@\glsdetoklabel{#2}@#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Gls@entry@field}
+% Generic first letter uppercase version.
+%\changes{4.03}{2014-01-20}{new}
+%\begin{definition}
+%\cs{@Gls@entry@field}\marg{label}\marg{field}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\@Gls@entry@field}[2]{%
+ \glsdoifexistsordo{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@#2}%
+ \ifdef\@glo@text
+ {%
+ \xmakefirstuc{\@glo@text}%
+ }%
+ {%
+ ??\PackageError{glossaries}{The field `#2' doesn't exist for glossary
+ entry `\glsdetoklabel{#1}'}{Check you have correctly spelt the entry
+ label and the field name}%
+ }%
+ }%
+ {%
+ ??%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the entry name (as specified by the \gloskey{name} key
+% when the entry was defined). The argument
+% is the label associated with the entry. Note that unless you
+% used \texttt{name=false} in the \pkgopt{sanitize} package option
+% you may get unexpected results if the \gloskey{name} key contains
+% any commands.
+%\begin{macro}{\glsentryname}
+% \begin{macrocode}
+\newcommand*{\glsentryname}[1]{\@gls@entry@field{#1}{name}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryname}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryname}[1]{%
+ \@Gls@entryname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Gls@entryname}
+%\changes{4.10}{2014-08-27}{new}
+% This is a workaround in the event that the user defies the warning
+% in the manual about not using \cs{Glsname} or \cs{Glsentryname} with acronyms.
+% First the default behaviour:
+% \begin{macrocode}
+\newcommand*{\@Gls@entryname}[1]{%
+ \@Gls@entry@field{#1}{name}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Gls@acrentryname}
+%\changes{4.10}{2014-08-27}{new}
+% Now the behaviour when \cs{setacronymstyle} is used:
+% \begin{macrocode}
+\newcommand*{\@Gls@acrentryname}[1]{%
+ \ifglshaslong{#1}%
+ {%
+ \letcs\@glo@text{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\@gls@getbody\@glo@text{}\@nil
+ \expandafter\ifx\@gls@body\glsentrylong\relax
+ \expandafter\Glsentrylong\@gls@rest
+ \else
+ \expandafter\ifx\@gls@body\glsentryshort\relax
+ \expandafter\Glsentryshort\@gls@rest
+ \else
+ \expandafter\ifx\@gls@body\acronymfont\relax
+% \end{macrocode}
+% Temporarily make \cs{glsentryshort} behave like
+% \cs{Glsentryshort}. (This is on the assumption that the argument
+% of \cs{acronymfont} is \cs{glsentryshort}\marg{label}, as that's
+% the behaviour of the predefined acronym styles.)
+% This is scoped to localise the effect of the assignment.
+% \begin{macrocode}
+ {%
+ \let\glsentryshort\Glsentryshort
+ \@glo@text
+ }%
+ \else
+ \xmakefirstuc{\@glo@text}%
+ \fi
+ \fi
+ \fi
+ }%
+ {%
+% \end{macrocode}
+% Not an acronym
+% \begin{macrocode}
+ \@Gls@entry@field{#1}{name}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the entry description (as specified by the
+% \gloskey{description} when the entry was defined). The argument
+% is the label associated with the entry. Note that unless you
+% used \texttt{description=false} in the \pkgopt{sanitize} package
+% option you may get unexpected results if the \gloskey{description}
+% key contained any commands.
+%\begin{macro}{\glsentrydesc}
+% \begin{macrocode}
+\newcommand*{\glsentrydesc}[1]{\@gls@entry@field{#1}{desc}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrydesc}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrydesc}[1]{%
+ \@Gls@entry@field{#1}{desc}%
+}
+% \end{macrocode}
+%\end{macro}
+% Plural form:
+%\begin{macro}{\glsentrydescplural}
+%\changes{1.12}{2008-03-08}{New}
+% \begin{macrocode}
+\newcommand*{\glsentrydescplural}[1]{%
+ \@gls@entry@field{#1}{descplural}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrydescplural}
+%\changes{1.12}{2008-03-08}{New}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrydescplural}[1]{%
+ \@Gls@entry@field{#1}{descplural}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the entry text, as specified by the \gloskey{text} key when
+% the entry was defined. The argument
+% is the label associated with the entry:
+%\begin{macro}{\glsentrytext}
+% \begin{macrocode}
+\newcommand*{\glsentrytext}[1]{\@gls@entry@field{#1}{text}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrytext}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrytext}[1]{%
+ \@Gls@entry@field{#1}{text}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the plural form:
+%\begin{macro}{\glsentryplural}
+% \begin{macrocode}
+\newcommand*{\glsentryplural}[1]{%
+ \@gls@entry@field{#1}{plural}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryplural}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryplural}[1]{%
+ \@Gls@entry@field{#1}{plural}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the symbol associated with this entry. The argument
+% is the label associated with the entry.
+%\begin{macro}{\glsentrysymbol}
+% \begin{macrocode}
+\newcommand*{\glsentrysymbol}[1]{%
+ \@gls@entry@field{#1}{symbol}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrysymbol}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrysymbol}[1]{%
+ \@Gls@entry@field{#1}{symbol}%
+}
+% \end{macrocode}
+%\end{macro}
+% Plural form:
+%\begin{macro}{\glsentrysymbolplural}
+%\changes{1.12}{2008-03-08}{New}
+% \begin{macrocode}
+\newcommand*{\glsentrysymbolplural}[1]{%
+ \@gls@entry@field{#1}{symbolplural}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrysymbolplural}
+%\changes{1.12}{2008-03-08}{New}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrysymbolplural}[1]{%
+ \@Gls@entry@field{#1}{symbolplural}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the entry text to be used when the entry is first used in
+% the document (as specified by the \gloskey{first} key when
+% the entry was defined).
+%\begin{macro}{\glsentryfirst}
+% \begin{macrocode}
+\newcommand*{\glsentryfirst}[1]{%
+ \@gls@entry@field{#1}{first}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryfirst}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryfirst}[1]{%
+ \@Gls@entry@field{#1}{first}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Get the plural form (as specified by the \gloskey{firstplural}
+% key when the entry was defined).
+%\begin{macro}{\glsentryfirstplural}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\glsentryfirstplural}[1]{%
+ \@gls@entry@field{#1}{firstpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryfirstplural}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryfirstplural}[1]{%
+ \@Gls@entry@field{#1}{firstpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentrytitlecase}
+%\changes{4.22}{2016-04-19}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsentrytitlecase}[2]{%
+ \glsfieldfetch{#1}{#2}{\@gls@value}%
+ \xcapitalisewords{\@gls@value}%
+}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsentrytitlecase}[2]{%
+ \texorpdfstring
+ {\@glsentrytitlecase{#1}{#2}}%
+ {\@gls@entry@field{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\glsentrytitlecase}[2]{\@glsentrytitlecase{#1}{#2}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Display the glossary type with which this entry is associated
+% (as specified by the \gloskey{type} key used when the entry was
+% defined)
+%\begin{macro}{\glsentrytype}
+% \begin{macrocode}
+\newcommand*{\glsentrytype}[1]{\@gls@entry@field{#1}{type}}
+% \end{macrocode}
+%\end{macro}
+%
+% Display the sort text used for this entry. Note that the
+% \gloskey{sort} key is sanitize, so unexpected results may
+% occur if the \gloskey{sort} key contained commands.
+%\begin{macro}{\glsentrysort}
+% \begin{macrocode}
+\newcommand*{\glsentrysort}[1]{%
+ \@gls@entry@field{#1}{sort}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryuseri}
+% Get the first user key (as specified by the
+% \gloskey{user1} when the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryuseri}[1]{%
+ \@gls@entry@field{#1}{useri}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryuseri}
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryuseri}[1]{%
+ \@Gls@entry@field{#1}{useri}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryuserii}
+% Get the second user key (as specified by the
+% \gloskey{user2} when the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryuserii}[1]{%
+ \@gls@entry@field{#1}{userii}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryuserii}
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryuserii}[1]{%
+ \@Gls@entry@field{#1}{userii}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryuseriii}
+% Get the third user key (as specified by the
+% \gloskey{user3} when the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryuseriii}[1]{%
+ \@gls@entry@field{#1}{useriii}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryuseriii}
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryuseriii}[1]{%
+ \@Gls@entry@field{#1}{useriii}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryuseriv}
+% Get the fourth user key (as specified by the
+% \gloskey{user4} when the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryuseriv}[1]{%
+ \@gls@entry@field{#1}{useriv}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryuseriv}
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryuseriv}[1]{%
+ \@Gls@entry@field{#1}{useriv}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryuserv}
+% Get the fifth user key (as specified by the
+% \gloskey{user5} when the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryuserv}[1]{%
+ \@gls@entry@field{#1}{userv}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryuserv}
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryuserv}[1]{%
+ \@Gls@entry@field{#1}{userv}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryuservi}
+% Get the sixth user key (as specified by the
+% \gloskey{user6} when the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryuservi}[1]{%
+ \@gls@entry@field{#1}{uservi}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryuservi}
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryuservi}[1]{%
+ \@Gls@entry@field{#1}{uservi}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryshort}
+% Get the short key (as specified by the
+% \gloskey{short} the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryshort}[1]{\@gls@entry@field{#1}{short}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryshort}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryshort}[1]{%
+ \@Gls@entry@field{#1}{short}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryshortpl}
+% Get the short plural key (as specified by the
+% \gloskey{shortplural} the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsentryshortpl}[1]{\@gls@entry@field{#1}{shortpl}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryshortpl}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryshortpl}[1]{%
+ \@Gls@entry@field{#1}{shortpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentrylong}
+% Get the long key (as specified by the
+% \gloskey{long} the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsentrylong}[1]{\@gls@entry@field{#1}{long}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrylong}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrylong}[1]{%
+ \@Gls@entry@field{#1}{long}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentrylongpl}
+% Get the long plural key (as specified by the
+% \gloskey{longplural} the entry was defined). The argument
+% is the label associated with the entry.
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsentrylongpl}[1]{\@gls@entry@field{#1}{longpl}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentrylongpl}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{3.09a}{2013-10-09}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentrylongpl}[1]{%
+ \@Gls@entry@field{#1}{longpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Short cut macros to access full form:
+%\begin{macro}{\glsentryfull}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
+%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+% \begin{macrocode}
+\newcommand*{\glsentryfull}[1]{%
+ \acrfullformat{\glsentrylong{#1}}{\acronymfont{\glsentryshort{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryfull}
+%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{3.02}{2012-05-21}{fixed bug (replaced \cs{glsentryshortpl}
+%with \cs{glsentryshort})}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
+%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryfull}[1]{%
+ \acrfullformat{\Glsentrylong{#1}}{\acronymfont{\glsentryshort{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryfullpl}
+%\changes{3.02}{2012-05-21}{fixed bug (replaced \cs{glsentryshort}
+%with \cs{glsentryshortpl})}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
+%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+% \begin{macrocode}
+\newcommand*{\glsentryfullpl}[1]{%
+ \acrfullformat{\glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryfullpl}
+%\changes{3.09a}{2013-10-09}{made robust}
+%\changes{3.13a}{2013-11-05}{changed to use \cs{acrfullformat}}
+%\changes{4.02}{2013-12-05}{bug fix: added missing \cs{acronymfont}}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryfullpl}[1]{%
+ \acrfullformat{\Glsentrylongpl{#1}}{\acronymfont{\glsentryshortpl{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentrynumberlist}
+%\changes{3.02}{2012-05-21}{new}
+%Displays the number list as is.
+% \begin{macrocode}
+\newcommand*{\glsentrynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \@gls@entry@field{#1}{numberlist}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdisplaynumberlist}
+%\changes{3.02}{2012-05-21}{new}
+% Formats the number list for the given entry label.
+% Doesn't work with hyperref.
+% \begin{macrocode}
+\@ifpackageloaded{hyperref} {%
+ \newcommand*{\glsdisplaynumberlist}[1]{%
+ \GlossariesWarning
+ {%
+ \string\glsdisplaynumberlist\space
+ doesn't work with hyperref.^^JUsing
+ \string\glsentrynumberlist\space instead%
+ }%
+ \glsentrynumberlist{#1}%
+ }%
+}%
+{%
+ \newcommand*{\glsdisplaynumberlist}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \bgroup
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+ \edef\@glo@label{\glsdetoklabel{#1}}%
+ \let\@org@glsnumberformat\glsnumberformat
+ \def\glsnumberformat##1{##1}%
+ \protected@edef\the@numberlist{%
+ \csname glo@\@glo@label @numberlist\endcsname}%
+ \def\@gls@numlist@sep{}%
+ \def\@gls@numlist@nextsep{}%
+ \def\@gls@numlist@lastsep{}%
+ \def\@gls@thislist{}%
+ \def\@gls@donext@def{}%
+ \renewcommand\do[1]{%
+ \protected@edef\@gls@thislist{%
+ \@gls@thislist
+ \noexpand\@gls@numlist@sep
+ ##1%
+ }%
+ \let\@gls@numlist@sep\@gls@numlist@nextsep
+ \def\@gls@numlist@nextsep{\glsnumlistsep}%
+ \@gls@donext@def
+ \def\@gls@donext@def{%
+ \def\@gls@numlist@lastsep{\glsnumlistlastsep}%
+ }%
+ }%
+ \expandafter \glsnumlistparser \expandafter{\the@numberlist}%
+ \let\@gls@numlist@sep\@gls@numlist@lastsep
+ \@gls@thislist
+ \egroup
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnumlistsep}
+%\changes{3.02}{2012-05-19}{new}
+% \begin{macrocode}
+\newcommand*{\glsnumlistsep}{, }
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsnumlistlastsep}
+%\changes{3.02}{2012-05-19}{new}
+% \begin{macrocode}
+\newcommand*{\glsnumlistlastsep}{ \& }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glshyperlink}
+% Provide a hyperlink to a glossary entry without adding information
+% to the glossary file. The entry needs to be added using a
+% command like \ics{glslink} or \ics{glsadd} to ensure that
+% the target is defined. The first (optional) argument specifies
+% the link text. The entry name is used by default. The second
+% argument is the entry label.
+%\changes{1.17}{2008-12-26}{new}
+%\changes{3.0}{2011-04-02}{changed default from \cs{glsentryname}
+%to \cs{glsentrytext}}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
+ \def\@glo@label{#2}%
+ \@glslink{\glolinkprefix\glsdetoklabel{#2}}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Adding an entry to the glossary without generating
+% text}
+% The following keys are provided for \cs{glsadd} and
+% \cs{glsaddall}:
+% \begin{macrocode}
+\define@key{glossadd}{counter}{\def\@gls@counter{#1}}
+% \end{macrocode}
+%\changes{2.07}{2010-07-10}{glsadd format key stored in \cs{@glsnumberformat}
+%(was mistakenly stored in \cs{@glo@format})}
+% \begin{macrocode}
+\define@key{glossadd}{format}{\def\@glsnumberformat{#1}}
+% \end{macrocode}
+% This key is only used by \cs{glsaddall}:
+% \begin{macrocode}
+\define@key{glossadd}{types}{\def\@glo@type{#1}}
+% \end{macrocode}
+%
+%\begin{definition}
+%\cs{glsadd}\oarg{options}\marg{label}
+%\end{definition}
+% Add a term to the glossary without generating any link text.
+% The optional argument indicates which counter to use,
+% and how to format it (using a key-value list)
+% the second argument is the entry label. Note that \meta{options}
+% only has two keys: \gloskey[glsadd]{counter} and \gloskey[glsadd]{format} (the \gloskey[glsaddall]{types} key will be ignored).
+%\begin{macro}{\glsadd}
+%\changes{1.07}{2007-09-13}{fixed bug caused by \cs{theglsentrycounter} setting the page number too soon}
+%\changes{2.04}{2009-11-10}{fixed bug that ignored counter}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.12}{2014-11-22}{added check for vertical mode}
+% \begin{macrocode}
+\newrobustcmd*{\glsadd}[2][]{%
+% \end{macrocode}
+% Need to move to horizontal mode if not already in it, but only if
+% not in preamble.
+% \begin{macrocode}
+ \@gls@adjustmode
+ \glsdoifexists{#2}%
+ {%
+ \def\@glsnumberformat{glsnumberformat}%
+ \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \setkeys{glossadd}{#1}%
+% \end{macrocode}
+% Store the entry's counter in \cs{theglsentrycounter}
+%\changes{3.0}{2011-04-02}{added \cs{@gls@saveentrycounter}}
+%\changes{4.16}{2015-07-08}{changed \cs{@do@wrglossary} to
+%\cs{@@do@wrglossary}}
+% \begin{macrocode}
+ \@gls@saveentrycounter
+% \end{macrocode}
+% Define sort key if necessary:
+%\changes{4.35}{2017-11-14}{added \cs{@gls@setsort} (in case of
+%\pkgopt[use]{sort})}
+% \begin{macrocode}
+ \@gls@setsort{#2}%
+% \end{macrocode}
+% This should use \cs{@@do@wrglossary} rather than
+% \cs{@do@wrglossary} since the whole point of \cs{glsadd} is to add
+% a line to the glossary.
+% \begin{macrocode}
+ \@@do@wrglossary{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@adjustmode}
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@adjustmode}{}
+\AtBeginDocument{\renewcommand*{\@gls@adjustmode}{\ifvmode\mbox{}\fi}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{definition}
+%\cs{glsaddall}\oarg{option list}
+%\end{definition}
+% Add all terms defined for the listed glossaries (without displaying
+% any text). If \gloskey[glsaddall]{types} key is omitted, apply to all
+% glossary types.
+%\begin{macro}{\glsaddall}
+%\changes{3.01}{2011-04-12}{made robust}
+% \begin{macrocode}
+\newrobustcmd*{\glsaddall}[1][]{%
+ \edef\@glo@type{\@glo@types}%
+ \setkeys{glossadd}{#1}%
+ \forallglsentries[\@glo@type]{\@glo@entry}{%
+ \glsadd[#1]{\@glo@entry}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsaddallunused}
+%\begin{definition}
+%\cs{glsaddallunused}\oarg{glossary type}
+%\end{definition}
+% Add all used terms defined for the listed glossaries (without displaying
+% any text). If optional argument is omitted, apply to all
+% glossary types. This should typically go at the end of the
+% document.
+%\changes{3.08a}{2013-09-28}{new}
+%\changes{3.13a}{2013-11-05}{set default to \cs{@glo@types}}
+%\changes{4.12}{2014-11-22}{replaced @gobble with glsignore}
+% \begin{macrocode}
+\newrobustcmd*{\glsaddallunused}[1][\@glo@types]{%
+ \forallglsentries[#1]{\@glo@entry}%
+ {%
+ \ifglsused{\@glo@entry}{}{\glsadd[format=glsignore]{\@glo@entry}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsignore}
+%\changes{4.12}{2014-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsignore}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Creating associated files}
+% The \cs{writeist} command creates the associated
+% customized \filetype{.ist} \app{makeindex} style file.
+% While defining this command, some characters have their
+% catcodes temporarily changed to ensure they get written to
+% the \filetype{.ist} file correctly. The \app{makeindex}
+% actual character (usually "@") is redefined to be a "?", to allow
+% internal commands to be written to the glossary file output file.
+%
+% The special characters\mkidxspch\ are stored in \cs{@gls@actualchar},
+% \cs{@gls@encapchar}, \cs{@glsl@levelchar} and
+% \cs{@gls@quotechar} to make them easier to use later,
+% but don't change these values, because the characters are
+% encoded in the command definitions that are used to escape
+% the special characters (which means that the user no longer
+% needs to worry about \app{makeindex} special characters).
+%
+% The symbols and numbers label for group headings are hardwired into
+% the \filetype{.ist} file as \texttt{glssymbols} and
+% \texttt{glsnumbers}, the group titles can be translated
+% (so that \ics{glssymbolsgroupname} replaces \texttt{glssymbols}
+% and \ics{glsnumbersgroupname} replaces \texttt{glsnumbers})
+% using the command \ics{glsgetgrouptitle} which is
+% defined in \isty{glossary-hypernav}. This is done to prevent
+% any problem characters in \ics{glssymbolsgroupname}
+% and \ics{glsnumbersgroupname} from breaking hyperlinks.
+%
+%\begin{macro}{\glsopenbrace}
+% Define \cs{glsopenbrace} to make it easier to write an opening
+% brace to a file.
+% \begin{macrocode}
+\edef\glsopenbrace{\expandafter\@gobble\string\{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsclosebrace}
+% Define \cs{glsclosebrace} to make it easier to write an opening
+% brace to a file.
+% \begin{macrocode}
+\edef\glsclosebrace{\expandafter\@gobble\string\}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsbackslash}
+%\changes{4.11}{2014-09-01}{new}
+% Define \cs{glsbackslash} to make it easier to write a backslash to a file.
+% \begin{macrocode}
+\edef\glsbackslash{\expandafter\@gobble\string\\}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsquote}
+% Define command that makes it easier to write quote marks to
+% a file in the event that the double quote character has been
+% made active.
+% \begin{macrocode}
+\edef\glsquote#1{\string"#1\string"}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspercentchar}
+%\changes{4.10}{2014-08-27}{new}
+% Define \cs{glspercentchar} to make it easier to write a percent
+% character to a file.
+% \begin{macrocode}
+\edef\glspercentchar{\expandafter\@gobble\string\%}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstildechar}
+%\changes{4.10}{2014-08-27}{new}
+% Define \cs{glstildechar} to make it easier to write a tilde
+% character to a file.
+% \begin{macrocode}
+\edef\glstildechar{\string~}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsfirstletter}
+% Define the first letter to come after the digits 0,\ldots,9.
+% Only required for \app{xindy}.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@glsfirstletter}{A}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsSetXdyFirstLetterAfterDigits}
+%\changes{4.33}{2017-09-20}{added starred version}
+% Sets the first letter to come after the digits 0,\ldots,9.
+%The starred version sanitizes.
+% \begin{macrocode}
+\newcommand*{\GlsSetXdyFirstLetterAfterDigits}{%
+ \@ifstar\s@GlsSetXdyFirstLetterAfterDigits\@GlsSetXdyFirstLetterAfterDigits}
+\ifglsxindy
+ \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}}
+ \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \renewcommand*{\@glsfirstletter}{#1}%
+ \@onelevel@sanitize\@glsfirstletter
+ }
+\else
+ \newcommand*{\@GlsSetXdyFirstLetterAfterDigits}[1]{%
+ \glsnoxindywarning\GlsSetXdyFirstLetterAfterDigits}
+ \newcommand*{\s@GlsSetXdyFirstLetterAfterDigits}{%
+ \@GlsSetXdyFirstLetterAfterDigits
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@xdynumbergrouporder}
+% Specifies the order of the number group.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@xdynumbergrouporder}{:before \string"\@glsfirstletter\string"}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetXdyNumberGroupOrder}
+%\changes{4.33}{2017-09-20}{new}
+% Sets the relative location of the number group.
+%The starred version sanitizes.
+% \begin{macrocode}
+\newcommand*{\GlsSetXdyNumberGroupOrder}[1]{%
+ \@ifstar\s@GlsSetXdyNumberGroupOrder\@GlsSetXdyNumberGroupOrder
+}
+\ifglsxindy
+ \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{%
+ \renewcommand*{\@xdynumbergrouporder}{#1}%
+ }
+ \newcommand*{\s@GlsSetXdyNumberGroupOrder}[1]{%
+ \renewcommand*{\@xdynumbergrouporder}{#1}%
+ \@onelevel@sanitize\@xdynumbergrouporder
+ }
+\else
+ \newcommand*{\@GlsSetXdyNumberGroupOrder}[1]{%
+ \glsnoxindywarning\GlsSetXdyNumberGroupOrder}
+ \newcommand*{\s@GlsSetXdyNumberGroupOrder}{%
+ \@GlsSetXdyNumberGroupOrder}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@glsminrange}
+% Define the minimum number of successive location references
+% to merge into a range.
+% \begin{macrocode}
+\newcommand*{\@glsminrange}{2}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsSetXdyMinRangeLength}
+% Set the minimum range length. The value must either be "none"
+% or a positive integer. The \sty{glossaries} package doesn't
+% check if the argument is valid, that is left to \app{xindy}.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \renewcommand*{\@glsminrange}{#1}}
+\else
+ \newcommand*{\GlsSetXdyMinRangeLength}[1]{%
+ \glsnoxindywarning\GlsSetXdyMinRangeLength}
+\fi
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\writeist}
+%\changes{1.17}{2008-12-26}{added xindy support}
+%\changes{1.01}{2007-05-17}{Added spaces after \cs{delimN} and
+%\cs{delimR} in ist file}%
+%\changes{3.0}{2011-04-02}{modified to support new format}
+% \begin{macrocode}
+\ifglsxindy
+% \end{macrocode}
+% Code to use if \app{xindy} is required.
+% \begin{macrocode}
+ \def\writeist{%
+% \end{macrocode}
+% Define write register if not already defined
+%\changes{4.04}{2014-03-06}{checked for definition of \cs{glswrite}}
+% \begin{macrocode}
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+% \end{macrocode}
+% Update attributes list
+% \begin{macrocode}
+ \@gls@addpredefinedattributes
+% \end{macrocode}
+% Open the file.
+% \begin{macrocode}
+ \openout\glswrite=\istfilename
+% \end{macrocode}
+% Write header comment at the start of the file
+% \begin{macrocode}
+ \write\glswrite{;; xindy style file created by the glossaries
+ package}%
+ \write\glswrite{;; for document '\jobname' on
+ \the\year-\the\month-\the\day}%
+% \end{macrocode}
+% Specify the required styles
+% \begin{macrocode}
+ \write\glswrite{^^J; required styles^^J}
+ \@for\@xdystyle:=\@xdyrequiredstyles\do{%
+ \ifx\@xdystyle\@empty
+ \else
+ \protected@write\glswrite{}{(require
+ \string"\@xdystyle.xdy\string")}%
+ \fi
+ }%
+% \end{macrocode}
+% List the allowed attributes (possible values used by the
+% \gloskey{format} key)
+% \begin{macrocode}
+ \write\glswrite{^^J%
+ ; list of allowed attributes (number formats)^^J}%
+ \write\glswrite{(define-attributes ((\@xdyattributes)))}%
+% \end{macrocode}
+% Define any additional alphabets
+% \begin{macrocode}
+ \write\glswrite{^^J; user defined alphabets^^J}%
+ \write\glswrite{\@xdyuseralphabets}%
+% \end{macrocode}
+% Define location classes.
+% \begin{macrocode}
+ \write\glswrite{^^J; location class definitions^^J}%
+% \end{macrocode}
+% As from version 3.0, locations are now specified as
+% \marg{Hprefix}\marg{number}, so need to add all possible
+% combinations of location types.
+% \begin{macrocode}
+ \@for\@gls@classI:=\@gls@xdy@locationlist\do{%
+% \end{macrocode}
+% Case where \meta{Hprefix} is empty:
+% \begin{macrocode}
+ \protected@write\glswrite{}{(define-location-class
+ \string"\@gls@classI\string"^^J\space\space\space
+ (
+ :sep "{}{"
+ \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
+ :sep "}"
+ )
+ ^^J\space\space\space
+ :min-range-length \@glsminrange^^J%
+ )
+ }%
+% \end{macrocode}
+% Nested iteration over all classes:
+% \begin{macrocode}
+ {%
+ \@for\@gls@classII:=\@gls@xdy@locationlist\do{%
+ \protected@write\glswrite{}{(define-location-class
+ \string"\@gls@classII-\@gls@classI\string"
+ ^^J\space\space\space
+ (
+ :sep "{"
+ \csname @gls@xdy@Lclass@\@gls@classII\endcsname\space
+ :sep "}{"
+ \csname @gls@xdy@Lclass@\@gls@classI\endcsname\space
+ :sep "}"
+ )
+ ^^J\space\space\space
+ :min-range-length \@glsminrange^^J%
+ )
+ }%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% User defined location classes (needs checking for new location format).
+% \begin{macrocode}
+ \write\glswrite{^^J; user defined location classes}%
+ \write\glswrite{\@xdyuserlocationdefs}%
+% \end{macrocode}
+% Cross-reference class. (The unverified option is used as the
+% cross-references are supplied using the list of labels along with
+% the optional argument for \ics{glsseeformat} which
+% \app{xindy} won't recognise.)
+% \begin{macrocode}
+ \write\glswrite{^^J; define cross-reference class^^J}%
+ \write\glswrite{(define-crossref-class \string"see\string"
+ :unverified )}%
+% \end{macrocode}
+% Define how cross-references should be displayed. This adds an
+% empty set of braces after the cross-referencing information
+% allowing for the final argument of \cs{glsseeformat} which
+% gets ignored. (When using \app{makeindex} this final argument
+% contains the location information which is not required.)
+% \begin{macrocode}
+ \write\glswrite{(markup-crossref-list
+ :class \string"see\string"^^J\space\space\space
+ :open \string"\string\glsseeformat\string"
+ :close \string"{}\string")}%
+% \end{macrocode}
+% Provide hook to write extra material here (used by
+% \sty{glossaries-extra} to define a seealso class).
+% \begin{macrocode}
+ \@xdycrossrefhook
+% \end{macrocode}
+% List the order to sort the classes.
+% \begin{macrocode}
+ \write\glswrite{^^J; define the order of the location classes}%
+ \write\glswrite{(define-location-class-order
+ (\@xdylocationclassorder))}%
+% \end{macrocode}
+% Specify what to write to the start and end of the glossary file.
+% \begin{macrocode}
+ \write\glswrite{^^J; define the glossary markup^^J}%
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added xindy-only macro definitions to
+%glossary open tag}
+% \begin{macrocode}
+ \write\glswrite{(markup-index^^J\space\space\space
+ :open \string"\string
+ \glossarysection[\string\glossarytoctitle]{\string
+ \glossarytitle}\string\glossarypreamble}%
+% \end{macrocode}
+% Add all the xindy-only macro definitions (needed to prevent errors
+% in the event that the user changes from \pkgopt{xindy} to
+% \pkgopt{makeindex})
+% \begin{macrocode}
+ \@for\@this@ctr:=\@xdycounters\do{%
+ {%
+ \@for\@this@attr:=\@xdyattributelist\do{%
+ \protected@write\glswrite{}{\string\providecommand*%
+ \expandafter\string
+ \csname glsX\@this@ctr X\@this@attr\endcsname[2]%
+ {%
+ \string\setentrycounter
+ [\expandafter\@gobble\string\#1]{\@this@ctr}%
+ \expandafter\string
+ \csname\@this@attr\endcsname
+ {\expandafter\@gobble\string\#2}%
+ }%
+ }%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Add the end part of the open tag and the rest of the markup-index
+% information:
+% \begin{macrocode}
+ \write\glswrite{%
+ \string\begin
+ {theglossary}\string\glossaryheader\glstildechar n\string" ^^J\space
+ \space\space:close \string"\glspercentchar\glstildechar n\string
+ \end{theglossary}\string\glossarypostamble
+ \glstildechar n\string" ^^J\space\space\space
+ :tree)}%
+% \end{macrocode}
+% Specify what to put between letter groups
+% \begin{macrocode}
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\glstildechar n\string")}%
+% \end{macrocode}
+% Specify what to put between entries
+% \begin{macrocode}
+ \write\glswrite{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \glstildechar n\string")}%
+% \end{macrocode}
+% Specify how to format entries
+% \begin{macrocode}
+ \write\glswrite{(markup-locclass-list :open
+ \string"\glsopenbrace\string\glossaryentrynumbers
+ \glsopenbrace\string\relax\space \string"^^J\space\space\space
+ :sep \string", \string"
+ :close \string"\glsclosebrace\glsclosebrace\string")}%
+% \end{macrocode}
+% Specify how to separate location numbers
+% \begin{macrocode}
+ \write\glswrite{(markup-locref-list
+ :sep \string"\string\delimN\space\string")}%
+% \end{macrocode}
+% Specify how to indicate location ranges
+% \begin{macrocode}
+ \write\glswrite{(markup-range
+ :sep \string"\string\delimR\space\string")}%
+% \end{macrocode}
+% Specify 2-page and 3-page suffixes, if defined.
+% First, the values must be sanitized to write them explicity.
+% \begin{macrocode}
+ \@onelevel@sanitize\gls@suffixF
+ \@onelevel@sanitize\gls@suffixFF
+% \end{macrocode}
+% \begin{macrocode}
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixF" :length 1 :ignore-end)}%
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixFF" :length 2 :ignore-end)}%
+ \fi
+% \end{macrocode}
+% Specify how to format locations.
+% \begin{macrocode}
+ \write\glswrite{^^J; define format to use for locations^^J}%
+ \write\glswrite{\@xdylocref}%
+% \end{macrocode}
+% Specify how to separate letter groups.
+% \begin{macrocode}
+ \write\glswrite{^^J; define letter group list format^^J}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\glstildechar n\string")}%
+% \end{macrocode}
+% Define letter group headings.
+% \begin{macrocode}
+ \write\glswrite{^^J; letter group headings^^J}%
+ \write\glswrite{(markup-letter-group
+ :open-head \string"\string\glsgroupheading
+ \glsopenbrace\string"^^J\space\space\space
+ :close-head \string"\glsclosebrace\string")}%
+% \end{macrocode}
+% Define additional letter groups.
+% \begin{macrocode}
+ \write\glswrite{^^J; additional letter groups^^J}%
+ \write\glswrite{\@xdylettergroups}%
+% \end{macrocode}
+% Define additional sort rules
+% \begin{macrocode}
+ \write\glswrite{^^J; additional sort rules^^J}
+ \write\glswrite{\@xdysortrules}%
+% \end{macrocode}
+%Hook for any additional information:
+% \begin{macrocode}
+ \@gls@writeisthook
+% \end{macrocode}
+% Close the style file
+% \begin{macrocode}
+ \closeout\glswrite
+% \end{macrocode}
+% Suppress any further calls.
+% \begin{macrocode}
+ \let\writeist\relax
+ }
+\else
+% \end{macrocode}
+% Code to use if \app{makeindex} is required.
+%\changes{2.01}{2009 May 30}{removed item\_02 - no such makeindex key}
+%\changes{4.04}{2014-03-06}{checked for definition of \cs{glswrite}}
+% \begin{macrocode}
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}%
+ \let\GlsSetQuote\gls@nosetquote
+ \def\writeist{\relax
+ \ifundef{\glswrite}{\newwrite\glswrite}{}\relax
+ \openout\glswrite=\istfilename
+ \write\glswrite{\glspercentchar\space makeindex style file
+ created by the glossaries package}
+ \write\glswrite{\glspercentchar\space for document
+ '\jobname' on \the\year-\the\month-\the\day}
+ \write\glswrite{actual '\@gls@actualchar'}
+ \write\glswrite{encap '\@gls@encapchar'}
+ \write\glswrite{level '\@gls@levelchar'}
+ \write\glswrite{quote '\@gls@quotechar'}
+ \write\glswrite{keyword \string"\string\\glossaryentry\string"}
+ \write\glswrite{preamble \string"\string\\glossarysection[\string
+ \\glossarytoctitle]{\string\\glossarytitle}\string
+ \\glossarypreamble\string\n\string\\begin{theglossary}\string
+ \\glossaryheader\string\n\string"}
+ \write\glswrite{postamble \string"\string\%\string\n\string
+ \\end{theglossary}\string\\glossarypostamble\string\n
+ \string"}
+ \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n
+ \string"}
+ \write\glswrite{item_0 \string"\string\%\string\n\string"}
+ \write\glswrite{item_1 \string"\string\%\string\n\string"}
+ \write\glswrite{item_2 \string"\string\%\string\n\string"}
+ \write\glswrite{item_01 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x1
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{item_12 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x2
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+% \end{macrocode}
+%\changes{2.05}{2010-02-06}{Added \cs{string} before opening
+% and closing braces. Patch provided by Segiu Dotenco}
+% \begin{macrocode}
+ \write\glswrite{delim_0 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_1 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_2 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_t \string"\string\}\string\}\string"}
+ \write\glswrite{delim_n \string"\string\\delimN \string"}
+ \write\glswrite{delim_r \string"\string\\delimR \string"}
+ \write\glswrite{headings_flag 1}
+ \write\glswrite{heading_prefix
+ \string"\string\\glsgroupheading\string\{\string"}
+ \write\glswrite{heading_suffix
+ \string"\string\}\string\\relax
+ \string\\glsresetentrylist \string"}
+ \write\glswrite{symhead_positive \string"glssymbols\string"}
+ \write\glswrite{numhead_positive \string"glsnumbers\string"}
+ \write\glswrite{page_compositor \string"\glscompositor\string"}
+ \@gls@escbsdq\gls@suffixF
+ \@gls@escbsdq\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{suffix_2p \string"\gls@suffixF\string"}
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{suffix_3p \string"\gls@suffixFF\string"}
+ \fi
+% \end{macrocode}
+%Hook for any additional information:
+% \begin{macrocode}
+ \@gls@writeisthook
+% \end{macrocode}
+% Close the file and disable \cs{writeist}.
+% \begin{macrocode}
+ \closeout\glswrite
+ \let\writeist\relax
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetWriteIstHook}
+%\changes{4.24}{2016-05-27}{new}
+%Allow user to append information to the style file.
+% \begin{macrocode}
+\newcommand*{\GlsSetWriteIstHook}[1]{\renewcommand*{\@gls@writeisthook}{#1}}
+\@onlypremakeg\GlsSetWriteIstHook
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@writeisthook}
+% \begin{macrocode}
+\newcommand*{\@gls@writeisthook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsSetQuote}
+%\changes{4.24}{2016-05-27}{new}
+%Allow user to set the \app{makeindex} quote character. This is primarily for
+%\sty{ngerman} users who want to use \app{makeindex}'s -g option.
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\GlsSetQuote}[1]{\glsnomakeindexwarning\GlsSetQuote}
+ \newcommand*{\gls@nosetquote}[1]{\glsnomakeindexwarning\GlsSetQuote}
+\else
+ \newcommand*{\GlsSetQuote}[1]{\edef\@gls@quotechar{\string#1}%
+% \end{macrocode}
+% If German is in use, set
+% the extra \app{makeindex} option so \app{makeglossaries} can pick
+% it up.
+% \begin{macrocode}
+ \@ifpackageloaded{tracklang}%
+ {%
+ \IfTrackedLanguage{german}%
+ {%
+ \def\@@gls@extramakeindexopts{-g}%
+ }%
+ {}%
+ }%
+ {}%
+% \end{macrocode}
+% Need to redefine \cs{@gls@checkquote}
+% \begin{macrocode}
+ \edef\@gls@docheckquotedef{%
+ \noexpand\def\noexpand\@gls@checkquote####1#1####2#1####3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={####1}%
+ \noexpand\ifx\noexpand\null####2\noexpand\null
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@checkquote{\noexpand\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}%
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\@gls@quotechar}%
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####2#1#1\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@checkquote{%
+ \noexpand\@gls@checkquote####2#1####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@checkquote
+ }%
+ }%
+ \@gls@docheckquotedef
+ \edef\@gls@docheckquotedef{%
+ \noexpand\renewcommand{\noexpand\@gls@checkmkidxchars}[1]{%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkquote####1\noexpand\@nil
+ #1#1\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescquote####1\noexpand\@nil
+ \expandonce{\csname#1\endcsname}\expandonce{\csname#1\endcsname}%
+ \noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescactual####1\noexpand\@nil
+ \noexpand\?\noexpand\?\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkactual####1\noexpand\@nil
+ \noexpand?\noexpand?\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkbar####1\noexpand\@nil
+ \noexpand|\noexpand|\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checkescbar####1\noexpand\@nil
+ \noexpand\|\noexpand\|\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ \noexpand\def\noexpand\@gls@checkedmkidx{}%
+ \noexpand\expandafter\noexpand\@gls@checklevel####1\noexpand\@nil
+ \noexpand!\noexpand!\noexpand\null
+ \noexpand\expandafter\noexpand\@gls@updatechecked
+ \noexpand\@gls@checkedmkidx{####1}%
+ }%
+ }%
+ \@gls@docheckquotedef
+ \edef\@gls@docheckquotedef{%
+ \noexpand\def\noexpand\@gls@checkescquote####1%
+ \expandonce{\csname#1\endcsname}####2\expandonce{\csname#1\endcsname}%
+ ####3\noexpand\null{%
+ \noexpand\@gls@tmpb=\noexpand\expandafter{\noexpand\@gls@checkedmkidx}%
+ \noexpand\toks@={####1}%
+ \noexpand\ifx\noexpand\null####2\noexpand\null
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@}%
+ \noexpand\def\noexpand\@@gls@checkescquote{\noexpand\relax}%
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\string\expandonce{%
+ \csname#1\endcsname}\noexpand\@gls@quotechar
+ \noexpand\@gls@quotechar\noexpand\string\expandonce{%
+ \csname#1\endcsname}\noexpand\@gls@quotechar}%
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\else
+ \noexpand\edef\noexpand\@gls@checkedmkidx{%
+ \noexpand\the\noexpand\@gls@tmpb\noexpand\the\noexpand\toks@
+ \noexpand\@gls@quotechar\noexpand\string
+ \expandonce{\csname#1\endcsname}\noexpand\@gls@quotechar}%
+ \noexpand\ifx\noexpand\null####3\noexpand\null
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}%
+ \expandonce{\csname#1\endcsname}\noexpand\null}%
+ \noexpand\else
+ \noexpand\def\noexpand\@@gls@checkescquote{%
+ \noexpand\@gls@checkescquote####2\expandonce{\csname#1\endcsname}%
+ ####3\noexpand\null}%
+ \noexpand\fi
+ \noexpand\fi
+ \noexpand\@@gls@checkescquote
+ }%
+ }%
+ \@gls@docheckquotedef
+ }
+ \newcommand*{\gls@nosetquote}[1]{\PackageError{glossaries}%
+ {\string\GlsSetQuote\space not permitted here}%
+ {Move \string\GlsSetQuote\space earlier in the preamble, as
+ soon as possible after glossaries.sty has been loaded}}
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@extramakeindexopts}
+%\changes{4.24}{2016-05-27}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@extramakeindexopts}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%The command \cs{noist} will suppress the creation of
+% the \filetype{.ist} file. Obviously you need to use this
+% command before \cs{writeist} to have any effect.
+%\begin{macro}{\noist}
+% \begin{macrocode}
+\newcommand{\noist}{%
+% \end{macrocode}
+% Update attributes list
+% \begin{macrocode}
+ \@gls@addpredefinedattributes
+ \let\writeist\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{@makeglossary} is an internal command that takes an
+% argument indicating the glossary type. This command will
+% create the glossary file required by \app{makeindex} for the
+% given glossary type, using the extension supplied by the
+% \meta{out-ext} parameter used in \ics{newglossary}
+% (and it will also activate the \ics{glossary} command,
+% and create the customized \filetype{.ist} \app{makeindex}
+% style file).
+%
+% Note that you can't use \cs{@makeglossary} for only some of the
+% defined glossaries. You either need to have a \cs{makeglossary}
+% for all glossaries or none (otherwise you will end up with a
+% situation where \TeX\ is trying to write to a non-existant
+% file). The relevant glossary must be
+% defined prior to using \cs{@makeglossary}.
+%\begin{macro}{\@makeglossary}
+% \begin{macrocode}
+\newcommand*{\@makeglossary}[1]{%
+ \ifglossaryexists{#1}%
+ {%
+% \end{macrocode}
+% Only create a new write if \pkgopt[false]{savewrites} otherwise
+% create a token to collect the information.
+%\changes{3.0}{2010-07-12}{Added check for \pkgopt{savewrites}}
+% \begin{macrocode}
+ \ifglssavewrites
+ \expandafter\newtoks\csname glo@#1@filetok\endcsname
+ \else
+ \expandafter\newwrite\csname glo@#1@file\endcsname
+ \expandafter\@glsopenfile\csname glo@#1@file\endcsname{#1}%
+ \fi
+ \@gls@renewglossary
+ \writeist
+ }%
+ {%
+ \PackageError{glossaries}%
+ {Glossary type `#1' not defined}%
+ {New glossaries must be defined before using \string\makeglossaries}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsopenfile}
+% Open write file associated with the given glossary.
+% \begin{macrocode}
+\newcommand*{\@glsopenfile}[2]{%
+ \immediate\openout#1=\jobname.\csname @glotype@#2@out\endcsname
+ \PackageInfo{glossaries}{Writing glossary file
+ \jobname.\csname @glotype@#2@out\endcsname}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@closegls}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newcommand*{\@closegls}[1]{%
+ \closeout\csname glo@#1@file\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@automake}
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@gls@automake}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \@closegls{#1}%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-M ord/letorder }}%
+ {\let\@gls@order\@empty}%
+ \ifcsundef{@xdy@#1@language}%
+ {\let\@gls@langmod\@xdy@main@language}%
+ {\letcs\@gls@langmod{@xdy@#1@language}}%
+ \edef\@gls@dothiswrite{\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ -C \gls@codepage\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\else
+ \newcommand*{\@gls@automake}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \@closegls{#1}%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-l }}%
+ {\let\@gls@order\@empty}%
+ \edef\@gls@dothiswrite{\noexpand\write18{makeindex \@gls@order
+ -s \istfilename\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@automake@immediate}
+%\changes{4.42}{2019-01-06}{new}
+% \begin{macrocode}
+\ifglsxindy
+ \newcommand*{\@gls@automake@immediate}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \IfFileExists{\jobname.\csuse{@glotype@#1@out}}%
+ {%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-M ord/letorder }}%
+ {\let\@gls@order\@empty}%
+ \ifcsundef{@xdy@#1@language}%
+ {\let\@gls@langmod\@xdy@main@language}%
+ {\letcs\@gls@langmod{@xdy@#1@language}}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{xindy
+ -I xindy
+ \@gls@order
+ -L \@gls@langmod\space
+ -M \gls@istfilebase\space
+ -C \gls@codepage\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
+ doesn't exist. Rerun may be required}}%
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\else
+ \newcommand*{\@gls@automake@immediate}[1]{%
+ \ifglossaryexists{#1}
+ {%
+ \IfFileExists{\jobname.\csuse{@glotype@#1@out}}%
+ {%
+ \ifdefstring{\glsorder}{letter}%
+ {\def\@gls@order{-l }}%
+ {\let\@gls@order\@empty}%
+ \edef\@gls@dothiswrite{\noexpand\immediate\noexpand\write18{makeindex \@gls@order
+ -s \istfilename\space
+ -t \jobname.\csuse{@glotype@#1@log}
+ -o \jobname.\csuse{@glotype@#1@in}
+ \jobname.\csuse{@glotype@#1@out}}%
+ }%
+ \@gls@dothiswrite
+ }%
+ {\GlossariesWarning{can't automake `#1': \jobname.\csuse{@glotype@#1@out}
+ doesn't exist. Rerun may be required}}%
+ }%
+ {%
+ \GlossariesWarning{Can't make glossary `#1', it doesn't exist}%
+ }%
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\warn@nomakeglossaries}
+% Issue warning that \cs{makeglossaries} hasn't been used.
+% \begin{macrocode}
+\newcommand*{\@warn@nomakeglossaries}{}
+% \end{macrocode}
+% Only use this if warning if \cs{printglossary} has been used
+% without \cs{makeglossaries}
+% \begin{macrocode}
+\newcommand*{\warn@nomakeglossaries}{\@warn@nomakeglossaries}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@@automake@immediate}
+%\changes{4.42}{2019-01-06}{new}
+% \begin{macrocode}
+\newcommand{\@gls@@automake@immediate}{%
+ \ifnum\gls@automake@nr=2\relax
+ \@for\@gls@type:=\@glo@types\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake@immediate{\@gls@type}}%
+ }%
+ \glsautomakefalse
+ \renewcommand*{\@gls@doautomake}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \cs{makeglossaries} will use \cs{@makeglossary}
+% for each glossary type that has been defined. New glossaries
+% need to be defined before using \cs{makeglossary}, so
+% have \cs{makeglossaries} redefine \cs{newglossary}
+% to prevent it being used afterwards.
+%\begin{macro}{\makeglossaries}
+% \begin{macrocode}
+\newcommand*{\makeglossaries}{%
+% \end{macrocode}
+%If automake=immediate setting is on, use the shell escape now.
+% \begin{macrocode}
+ \@gls@@automake@immediate
+% \end{macrocode}
+% Define the write used for style file also used for all other output files
+% if \pkgopt[true]{savewrites}.
+%\changes{4.04}{2014-03-06}{Moved definition of \cs{glswrite} to
+%\cs{makeglossaries}}
+% \begin{macrocode}
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+% \end{macrocode}
+%\changes{3.10a}{2013-10-13}{Added providecommand code to aux file}
+% If the user removes the glossary package from their document,
+% ensure the next run doesn't throw a load of undefined control
+% sequence errors when the aux file is parsed.
+% \begin{macrocode}
+ \protected@write\@auxout{}{\string\providecommand\string\@glsorder[1]{}}
+ \protected@write\@auxout{}{\string\providecommand\string\@istfilename[1]{}}
+% \end{macrocode}
+%If \cs{@@gls@extramakeindexopts} has been defined, write it:
+% \begin{macrocode}
+ \ifundef\@@gls@extramakeindexopts
+ {}%
+ {%
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@gls@extramakeindexopts[1]{}}
+ \protected@write\@auxout{}{\string\@gls@extramakeindexopts
+ {\@@gls@extramakeindexopts}}%
+ }%
+% \end{macrocode}
+% Write the name of the style file to the aux file
+% (needed by \app{makeglossaries})
+% \begin{macrocode}
+ \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
+ \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
+% \end{macrocode}
+% Iterate through each glossary type and activate it.
+% \begin{macrocode}
+ \@for\@glo@type:=\@glo@types\do{%
+ \ifthenelse{\equal{\@glo@type}{}}{}{%
+ \@makeglossary{\@glo@type}}%
+ }%
+% \end{macrocode}
+% New glossaries must be created before \cs{makeglossaries}
+% so disable \ics{newglossary}.
+% \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.
+% The deprecated \cs{makeglossary} is not redefined here as it either
+% implements \cs{makeglossaries} or has been restored to its original
+% definition (in which case it shouldn't be changed).
+%\changes{4.41}{2018-07-23}{removed redefinition of \cs{makeglossary}}
+% \begin{macrocode}
+ \let\@makeglossary\relax
+ \let\makeglossaries\relax
+% \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}
+% Suppress warning about no \cs{makeglossaries}
+% \begin{macrocode}
+ \let\warn@nomakeglossaries\relax
+% \end{macrocode}
+% Activate warning about missing \cs{printglossary}
+% \begin{macrocode}
+ \def\warn@noprintglossary{%
+ \ifdefstring{\@glo@types}{,}%
+ {%
+ \GlossariesWarningNoLine{No glossaries have been defined}%
+ }%
+ {%
+ \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}
+% Declare list parser for \cs{glsdisplaynumberlist}
+%\changes{3.02}{2012-05-21}{added list parser}
+% \begin{macrocode}
+ \ifglssavenumberlist
+ \edef\@gls@dodeflistparser{\noexpand\DeclareListParser
+ {\noexpand\glsnumlistparser}{\delimN}}%
+ \@gls@dodeflistparser
+ \fi
+% \end{macrocode}
+% Prevent user from also using \cs{makenoidxglossaries}
+% \begin{macrocode}
+ \let\makenoidxglossaries\@no@makeglossaries
+% \end{macrocode}
+% Prohibit sort key in printgloss family:
+% \begin{macrocode}
+ \renewcommand*{\@printgloss@setsort}{%
+ \let\@glo@assign@sortkey\@glo@no@assign@sortkey
+ }%
+% \end{macrocode}
+% Check the automake setting:
+% \begin{macrocode}
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \@for\@gls@type:=\@glo@types\do{%
+ \ifdefempty{\@gls@type}{}%
+ {\@gls@automake{\@gls@type}}%
+ }%
+ }%
+ \fi
+% \end{macrocode}
+% Check the sort setting:
+% \begin{macrocode}
+ \@glo@check@sortallowed\makeglossaries
+}
+% \end{macrocode}
+%\changes{4.02}{2013-13-05}{made preamble only}
+% Must occur in the preamble:
+% \begin{macrocode}
+\@onlypreamble{\makeglossaries}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glswrite}
+% The definition of \cs{glswrite} has now been moved to
+% \cs{makeglossaries} so that it's only defined if needed.
+%\end{macro}
+%
+% If \ics{makeglossaries} hasn't been used, issue a warning.
+% Also issue a warning if neither \ics{printglossaries} nor
+% \ics{printglossary} have been used.
+% \begin{macrocode}
+\AtEndDocument{%
+ \warn@nomakeglossaries
+ \warn@noprintglossary
+}
+% \end{macrocode}
+%
+%\begin{macro}{\makenoidxglossaries}
+%\changes{4.04}{2014-03-06}{new}
+% Analogous to \cs{makeglossaries} this activates the commands
+% needed for \cs{printnoidxglossary}
+% \begin{macrocode}
+\newcommand*{\makenoidxglossaries}{%
+% \end{macrocode}
+% Redefine empty glossary warning:
+% \begin{macrocode}
+ \renewcommand{\@gls@noref@warn}[1]{%
+ \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}
+% Don't escape makeindex/xindy characters:
+% \begin{macrocode}
+ \let\@gls@checkmkidxchars\@gobble
+% \end{macrocode}
+% Don't escape locations:
+%\changes{4.40}{2018-06-01}{added esclocations=false}
+% \begin{macrocode}
+ \glsesclocationsfalse
+% \end{macrocode}
+% Write glossary information to aux instead of glossary files
+% \begin{macrocode}
+ \let\@@do@@wrglossary\gls@noidxglossary
+% \end{macrocode}
+% Switch on group headings that use the character code:
+% \begin{macrocode}
+ \let\@gls@getgrouptitle\@gls@noidx@getgrouptitle
+% \end{macrocode}
+% Allow \gloskey{see} key:
+% \begin{macrocode}
+ \let\gls@checkseeallowed\relax
+% \end{macrocode}
+% Redefine cross-referencing macro:
+% \begin{macrocode}
+ \renewcommand{\@do@seeglossary}[2]{%
+ \edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {%
+ \string\glsseeformat##2{}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% If user removes the glossaries package from their document, ensure
+% the next run doesn't throw a load of undefined control sequence
+% errors when the aux file is parsed.
+% \begin{macrocode}
+ \AtBeginDocument
+ {%
+ \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}%
+ }%
+% \end{macrocode}
+% Change warning about no glossaries
+% \begin{macrocode}
+ \def\warn@noprintglossary{%
+ \GlossariesWarningNoLine{No \string\printnoidxglossary\space
+ or \string\printnoidxglossaries ^^J
+ found. (Remove \string\makenoidxglossaries\space if you
+ don't want any glossaries.)^^JThis document will not have a glossary}%
+ }%
+% \end{macrocode}
+% Suppress warning about no \cs{makeglossaries}
+% \begin{macrocode}
+ \let\warn@nomakeglossaries\relax
+% \end{macrocode}
+% Prevent user from also using \cs{makeglossaries}
+% \begin{macrocode}
+ \let\makeglossaries\@no@makeglossaries
+% \end{macrocode}
+% Allow sort key in printgloss family:
+% \begin{macrocode}
+ \renewcommand*{\@printgloss@setsort}{%
+ \let\@glo@assign@sortkey\@@glo@assign@sortkey
+% \end{macrocode}
+% Initialise default sort order:
+% \begin{macrocode}
+ \def\@glo@sorttype{\@glo@default@sorttype}%
+ }%
+% \end{macrocode}
+% All entries must be defined in the preamble:
+% \begin{macrocode}
+ \renewcommand*\new@glossaryentry[2]{%
+ \PackageError{glossaries}{Glossary entries must be
+ defined in the preamble^^Jwhen you use
+ \string\makenoidxglossaries}%
+ {Either move your definitions to the preamble or use
+ \string\makeglossaries}%
+ }%
+% \end{macrocode}
+% Redefine \ics{glsentrynumberlist}
+% \begin{macrocode}
+ \renewcommand*{\glsentrynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{##1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \glsnoidxloclist{\@gls@loclist}%
+ }%
+ {%
+ ??\glsdoifexists{##1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Redefine \ics{glsdisplaynumberlist}
+% \begin{macrocode}
+ \renewcommand*{\glsdisplaynumberlist}[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
+ }%
+ {%
+ ??\glsdoifexists{##1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Provide a generic way of iterating through the number list:
+% \begin{macrocode}
+ \renewcommand*{\glsnumberlistloop}[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}%
+ }%
+ {%
+ ??\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}
+% Modify sanitize sort function
+% \begin{macrocode}
+ \let\@@gls@sanitizesort\@gls@noidx@sanitizesort
+ \let\@@gls@nosanitizesort\@@gls@noidx@nosanitizesort
+ \@gls@noidx@setsanitizesort
+% \end{macrocode}
+% Check sort option allowed.
+% \begin{macrocode}
+ \@glo@check@sortallowed\makenoidxglossaries
+}
+% \end{macrocode}
+% Preamble-only command:
+% \begin{macrocode}
+\@onlypreamble{\makenoidxglossaries}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnumberlistloop}
+%\begin{definition}
+%\cs{glsnumberlistloop}\marg{label}\marg{handler}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsnumberlistloop}[2]{%
+ \PackageError{glossaries}{\string\glsnumberlistloop\space
+ only works with \string\makenoidxglossaries}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsnoidxnumberlistloophandler}
+% Handler macro for \cs{glsnumberlistloop}.
+% (The argument should be in the form
+% \cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{n})
+% \begin{macrocode}
+\newcommand*{\glsnoidxnumberlistloophandler}[1]{%
+ #1%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@no@makeglossaries}
+%\changes{4.04}{2014-03-06}{new}
+% Can't use both \cs{makeglossaries} and \cs{makenoidxglossaries}
+% \begin{macrocode}
+\newcommand*{\@no@makeglossaries}{%
+ \PackageError{glossaries}{You can't use both
+ \string\makeglossaries\space and \string\makenoidxglossaries}%
+ {Either use one or other (or none) of those commands but not both
+ together.}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@noref@warn}
+%\changes{4.04}{2014-03-06}{new}
+% Warning when no instances of \cs{@gls@reference} found.
+% \begin{macrocode}
+\newcommand{\@gls@noref@warn}[1]{%
+ \GlossariesWarning{\string\makenoidxglossaries\space
+ is required to make \string\printnoidxglossary[type={#1}] work}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Writing information to associated files}
+%\label{sec:wrgloss}
+%
+%\begin{macro}{\gls@noidxglossary}
+% Write the glossary information to the aux file (for the `noidx'
+% method):
+% \begin{macrocode}
+\newcommand*{\gls@noidxglossary}{%
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {\string\glsnoidxdisplayloc
+ {\@glo@counterprefix}%
+ {\@gls@counter}%
+ {\@glsnumberformat}%
+ {\@glslocref}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\istfile}
+%\changes{3.0}{2011-04-02}{deprecated}
+%\changes{4.40}{2018-06-01}{changed \cs{def} to \cs{providecommand}}
+% Deprecated.
+% \begin{macrocode}
+\providecommand\istfile{\glswrite}
+% \end{macrocode}
+%\end{macro}
+%
+% At the end of the document, the files should be created if
+% \pkgopt[true]{savewrites}.
+% \begin{macrocode}
+\AtEndDocument{%
+ \glswritefiles
+}
+% \end{macrocode}
+%\begin{macro}{\@glswritefiles}
+% Only write the files if \pkgopt[true]{savewrites}.
+%\changes{3.14a}{2013-11-12}{renamed \cs{glswritefiles} to
+%\cs{@glswritefiles} and used ``savewrites'' option to set
+%\cs{glswritefiles}}
+% \begin{macrocode}
+\newcommand*{\@glswritefiles}{%
+% \end{macrocode}
+% Iterate through all the glossaries.
+%\changes{3.01}{2011-04-12}{added check for empty glossaries}
+%\changes{3.02}{2012-05-21}{added check for existence of token
+% in case \cs{makeglossaries has been omitted}}
+% \begin{macrocode}
+ \forallglossaries{\@glo@type}{%
+% \end{macrocode}
+% Check for empty glossaries (patch provided by Patrick H\"acker)
+% \begin{macrocode}
+ \ifcsundef{glo@\@glo@type @filetok}%
+ {%
+ \def\gls@tmp{}%
+ }%
+ {%
+ \edef\gls@tmp{\expandafter\the
+ \csname glo@\@glo@type @filetok\endcsname}%
+ }%
+ \ifx\gls@tmp\@empty
+ \ifx\@glo@type\glsdefaulttype
+ \GlossariesWarningNoLine{Glossary `\@glo@type' has no
+ entries.^^JRemember to use package option `nomain' if
+you
+ don't want to^^Juse the main glossary}%
+ \else
+ \GlossariesWarningNoLine{Glossary `\@glo@type' has no
+ entries}%
+ \fi
+ \else
+ \@glsopenfile{\glswrite}{\@glo@type}%
+ \immediate\write\glswrite{%
+ \expandafter\the
+ \csname glo@\@glo@type @filetok\endcsname}%
+ \immediate\closeout\glswrite
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% As from v4.10, the \cs{glossary} command isn't
+% used by the \styfmt{glossaries} package. Since the
+% user isn't expected to use this command (as \styfmt{glossaries}
+% takes care of the particular format required for
+% \gls{makeindex}\slash\gls{xindy}) there's no need for a user level
+% command. Using a custom internal command prevents any conflict
+% with other packages (and with the \cs{mark} mechanism).
+%
+% The associated number should be stored in \cs{theglsentrycounter}
+% before using \cs{gls@glossary}.
+%\begin{macro}{\gls@glossary}
+% \begin{macrocode}
+\newcommand*{\gls@glossary}[1]{%
+ \@gls@glossary{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@glossary}
+%\begin{definition}
+%\cs{@gls@glossary}\marg{type}\marg{indexing info}
+%\end{definition}
+% (In v4.10, \cs{@glossary} was redefined to \cs{@gls@glossary} to
+% avoid conflict with other packages.)
+% Initially define internal \cs{@gls@glossary} to ignore its argument.
+% Indexing will be enabled when \cs{@gls@glossary} is redefined by
+% \cs{@makeglossary}.
+%
+% This command was originally
+% defined to do \cs{@index}\marg{indexing info} so that it behaved
+% much like \cs{index}. The definition was then changed to
+% use \cs{index} as \cls{memoir} changes the definition of
+% \cs{@index}. (Thanks to Dan Luecking for pointing this out.)
+%\changes{1.17}{2008-12-26}{changed definition to use
+%\cs{index} instead of \cs{@index}}
+%\changes{4.10}{2014-08-27}{Renamed \cs{@glossary} to \cs{@gls@glossary}}
+%\changes{4.24}{2016-05-27}{added check for debug mode}
+%
+%However, if normal indexing is enabled (for example with \cs{makeindex}) but no
+%glossary lists are required (so \cs{@makeglossary} isn't used),
+%then \cs{index} will cause a problem here.
+%The \cs{@index} trick allows for special characters within
+%\meta{indexing info} (so you can do, for example, \verb|\index{%@\%}|),
+%and the original design of \cs{@glossary} here
+%was actually a legacy from the old \styfmt{glossary} package. With
+%the \styfmt{glossaries} package, the indexing information supplied in
+%the second argument is more constrained and just consists of the sort
+%value (given by the \gloskey{sort} key), the actual value
+%(given by \cs{glossentry}\marg{label} or
+%\cs{subglossentry}\marg{level}\marg{label}), and the format. This means that
+%there's no need to worry about special characters appearing in the
+%second argument as they can't be in the label or sort value. (If
+%they are in the sort value then the category code would've needed
+%to be changed when the entry was defined or \cs{glspercentchar}
+%would be needed with the sort sanitization switched off.)
+%This means that it's safe to simply ignore the second argument.
+%\changes{4.36}{2018-03-07}{removed \cs{index}}
+% \begin{macrocode}
+\newcommand*{\@gls@glossary}[2]{%
+ \if@gls@debug
+ \PackageInfo{glossaries}{wrglossary(#1)(#2)}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+% This is a convenience command to set \cs{@gls@glossary}.
+% It's used by \cs{@makeglossary} and then redefined to
+% do nothing, as it only needs to be done once.
+%\begin{macro}{\@gls@renewglossary}
+% \begin{macrocode}
+\newcommand{\@gls@renewglossary}{%
+ \gdef\@gls@glossary##1{\@bsphack\begingroup\gls@wrglossary{##1}}%
+ \let\@gls@renewglossary\@empty
+}
+% \end{macrocode}
+%\end{macro}
+% The \cs{gls@wrglossary} command is defined to have
+% two arguments. The first argument is the glossary type,
+% the second argument is the glossary entry
+% (the format of which is set in \cs{glslink}).
+%\begin{macro}{\gls@wrglossary}
+%\changes{1.17}{2008-12-26}{modified to allow for xindy support}
+%\changes{3.0}{2010-07-12}{modified to take into account
+%\pkgopt{savewrites}}
+%\changes{4.11}{2014-09-01}{renamed from \cs{@wrglossary} to
+%\cs{gls@wrglossary}}
+% \begin{macrocode}
+\newcommand*{\gls@wrglossary}[2]{%
+ \ifglssavewrites
+ \protected@edef\@gls@tmp{\the\csname glo@#1@filetok\endcsname#2}%
+ \expandafter\global\expandafter\csname glo@#1@filetok\endcsname
+ \expandafter{\@gls@tmp^^J}%
+ \else
+% \end{macrocode}
+%\changes{3.02}{2012-05-21}{added check for glossary file defined}%
+% \begin{macrocode}
+ \ifcsdef{glo@#1@file}%
+ {%
+ \expandafter\protected@write\csname glo@#1@file\endcsname{%
+ \gls@disablepagerefexpansion}{#2}%
+ }%
+ {%
+ \ifignoredglossary{#1}{}%
+ {%
+ \GlossariesWarning{No file defined for glossary `#1'}%
+ }%
+ }%
+ \fi
+ \endgroup\@esphack
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@do@wrglossary}
+%\changes{3.02}{2012-05-21}{changed \cs{@do@wr@glossary} to test for
+%\pkgopt{indexonlyfirst} option; put old \cs{@do@wr@glossary} code
+%into \cs{@@do@wrglossary}}
+% \begin{macrocode}
+\newcommand*{\@do@wrglossary}[1]{%
+ \glswriteentry{#1}{\@@do@wrglossary{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glswriteentry}
+%\changes{4.16}{2015-07-08}{new}
+% Provide a user level command so the user can customize whether or
+% not a line should be added to the glossary. The arguments are the
+% label and the code that writes to the glossary file.
+% \begin{macrocode}
+\newcommand*{\glswriteentry}[2]{%
+ \ifglsindexonlyfirst
+ \ifglsused{#1}{}{#2}%
+ \else
+ #2%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@protected@pagefmts}
+%\changes{3.04}{2012-11-18}{new}
+%\changes{3.05}{2013-04-21}{added Roman to list}
+% List of page formats to be protected against expansion.
+%\changes{4.22}{2016-04-19}{added arabic to list}
+% \begin{macrocode}
+\newcommand{\gls@protected@pagefmts}{\gls@numberpage,\gls@alphpage,%
+ \gls@Alphpage,\gls@romanpage,\gls@Romanpage,\gls@arabicpage}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@disablepagerefexpansion}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+\newcommand*{\gls@disablepagerefexpansion}{%
+ \@for\@gls@this:=\gls@protected@pagefmts\do
+ {%
+ \expandafter\let\@gls@this\relax
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@alphpage}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+\newcommand*{\gls@alphpage}{\@alph\c@page}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@Alphpage}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+\newcommand*{\gls@Alphpage}{\@Alph\c@page}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@numberpage}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+\newcommand*{\gls@numberpage}{\number\c@page}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@arabicpage}
+%\changes{4.22}{2016-04-19}{new}
+% \begin{macrocode}
+\newcommand*{\gls@arabicpage}{\@arabic\c@page}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@romanpage}
+%\changes{3.04}{2012-11-18}{new}
+% \begin{macrocode}
+\newcommand*{\gls@romanpage}{\romannumeral\c@page}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@Romanpage}
+%\changes{3.05}{2013-04-21}{new}
+% \begin{macrocode}
+\newcommand*{\gls@Romanpage}{\@Roman\c@page}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaddprotectedpagefmt}
+%\begin{definition}
+%\cs{glsaddprotectedpagefmt}\marg{cs name}
+%\end{definition}
+% Added a page format to the list of protected page formats.
+% The argument should be the name (without a backslash) of the
+% command that takes a \TeX\ register as the argument
+% (\verb|\|\meta{csname}\verb|\c@page| must be valid).
+%\changes{4.11}{2014-09-01}{new}
+% \begin{macrocode}
+\newcommand*{\glsaddprotectedpagefmt}[1]{%
+ \eappto\gls@protected@pagefmts{,\expandonce{\csname gls#1page\endcsname}}%
+ \csedef{gls#1page}{\expandonce{\csname#1\endcsname}\noexpand\c@page}%
+ \eappto\@wrglossarynumberhook{%
+ \noexpand\let\expandonce{\csname org@gls#1\endcsname}%
+ \expandonce{\csname#1\endcsname}%
+ \noexpand\def\expandonce{\csname#1\endcsname}{%
+ \noexpand\@wrglossary@pageformat
+ \expandonce{\csname gls#1page\endcsname}%
+ \expandonce{\csname org@gls#1\endcsname}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@wrglossarynumberhook}
+% Hook used by \cs{@@do@wrglossary}
+% \begin{macrocode}
+\newcommand*\@wrglossarynumberhook{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@wrglossary@pageformat}
+% \begin{macrocode}
+\newcommand{\@wrglossary@pageformat}[3]{%
+ \ifx#3\c@page #1\else #2#3\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@do@wrglossary}
+%\changes{4.33}{2017-09-20}{changed to check for \pkgopt{esclocations}}
+% Write the glossary entry in the appropriate format.
+% \begin{macrocode}
+\newcommand*{\@@do@wrglossary}[1]{%
+ \ifglsesclocations
+ \@@do@esc@wrglossary{#1}%
+ \else
+ \@@do@noesc@wrglossary{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@do@noesc@wrglossary}
+%\changes{4.33}{2017-09-20}{new}
+% Write the glossary entry in the appropriate format.
+% The locations don't need to be pre-processed before writing the
+% information to the glossary file, but the prefix still needs to be
+% found.
+% \begin{macrocode}
+\newcommand*{\@@do@noesc@wrglossary}[1]{%
+% \end{macrocode}
+% Don't fully expand yet.
+% \begin{macrocode}
+ \expandafter\def\expandafter\@glslocref\expandafter{\theglsentrycounter}%
+ \expandafter\def\expandafter\@glsHlocref\expandafter{\theHglsentrycounter}%
+% \end{macrocode}
+% Find the prefix if \cs{@glsHlocref} and \cs{@glslocref} aren't the same.
+% \begin{macrocode}
+ \ifx\@glsHlocref\@glslocref
+ \def\@glo@counterprefix{}%
+ \else
+% \end{macrocode}
+% The value of the counter isn't important here as it's the prefix
+% that's of interest. (\cs{c@page} will have the same value in
+% both \cs{theglsentrycounter} and \cs{theHglsentrycounter} at this
+% point, even if it hasn't been updated yet. The page number is not
+% expected to occur in the prefix.)
+% \begin{macrocode}
+ \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\@glslocref}{\@glsHlocref}%
+ }%
+ \@do@gls@getcounterprefix
+ \fi
+% \end{macrocode}
+% De-tok label if required.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+ \edef\@gls@label{\glsdetoklabel{#1}}%
+% \end{macrocode}
+% Write the information to file:
+% \begin{macrocode}
+ \@@do@@wrglossary
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglswrallowprimitivemods}
+%\changes{4.22}{2016-04-19}{new}
+% Conditional to determine whether or not \cs{@@do@esc@wrglossary}
+% should be allowed to temporarily redefine \cs{the} and
+% \cs{number}.
+% \begin{macrocode}
+\newif\ifglswrallowprimitivemods
+\glswrallowprimitivemodstrue
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@do@esc@wrglossary}
+%\changes{4.33}{2017-09-20}{renamed from \cs{@@do@esc@wrglossary}}
+%\changes{1.17}{2008-12-26}{new}
+% Write the glossary entry in the appropriate format.
+% (Need to set \cs{@glsnumberformat} and \cs{@gls@counter} prior to use.)
+% The argument is the entry's label.
+%\changes{3.0}{2011-04-02}{modified to use new format}
+%This is far more complicated with \app{xindy} than with other
+%indexing methods. There are two necessary but
+%conflicting requirements with \app{xindy}:
+%\begin{enumerate}
+%\item all backslashes in the location must be escaped;
+%\item \cs{c@page} can't be prematurely expanded.
+%\end{enumerate}
+% (With \app{makeindex} there's the remote possibility that the page
+% compositor is a \app{makeindex} special character, so that would
+% also need to be escaped.)
+%
+%For example, suppose \cs{thepage} is defined as
+%\begin{verbatim}
+%\renewcommand{\thepage}{\tally{page}}
+%\newcommand{\tally}[1]{\tallynum{\expandafter\the\csname c@#1\endcsname}}
+%\end{verbatim}
+%where \cs{tallynum} is a robust command that takes a number as its
+%argument. With all indexing methods other than \app{xindy}, a
+%deferred write with \cs{thepage} as the location will expand to
+%\cs{tallynum}\marg{n} where \meta{n} is the page number. Since the
+%write is deferred, the page number is correct. (\app{makeindex}
+%won't accept this location format, but \cs{makenoidxglossaries}
+%and \app{bib2gls} are quite happy with it.) Unfortunately, this
+%fails with \app{xindy} because \app{xindy} interprets this location
+%as \texttt{tallynum}\marg{n} because \cs{t} represents a
+%the character \qt{t}. The location must be written as
+%\verb|\\tallynum|\marg{n}.
+%
+%This means that the location
+%\verb|\tally{page}| must be expanded and then the backslashes must
+%be doubled. Unfortunately \cs{c@page} mustn't be expanded until the
+%deferred write is performed, so the location actually needs to be
+%expanded to \verb|\tallynum{\the\c@page}| but the backslashes in
+%\verb|\the\c@page| mustn't be escaped. All other backslashes must be
+%escaped. (In this case, only the backslash in \cs{tallynum} but the
+%location format may include other control sequences.) The code
+%below works on the assumption that commands like \cs{tally} are
+%defined in the form
+%\begin{verbatim}
+%\newcommand{\tally}[1]{\tallynum{\expandafter\the\csname c@#1\endcsname}}
+%\end{verbatim}
+%(note the use of \cs{expandafter} and \cs{name})
+%or in the form
+%\begin{verbatim}
+%\newcommand{\tally}[1]{\tallynum{\arabic{#1}}}
+%\end{verbatim}
+%In the second case, \cs{arabic} is one of the known commands that's
+%temporarily adjusted to prevent \cs{c@page} from being prematurely
+%expanded. In the first case, \cs{the} is temporarily modified
+%(unless \cs{glswrallowprimitivemodsfalse}) to
+%check if it's followed by \cs{c@page}. The \cs{expandafter} ensures
+%that it is. If \cs{tally} is defined in another way that hides
+%\cs{c@page} for example using \verb|\the\value{#1}| then the
+%process fails.
+%
+%With \app{makeindex}, \cs{tallynum} needs to expand to just the
+%decimal number while writing the location to the glossary file,
+%otherwise \app{makeindex} will reject it. This can
+%be done by defining \cs{glstallypage} so that \cs{tally} can
+%locally be set to \cs{arabic} while expansion is occurring. Again, \cs{c@page}
+%must be protected from expansion until the deferred write occurs.
+%
+%The expansion before the write occurs also allows the hyper prefix
+%to be determined where \cs{theH}\meta{counter} is defined in the
+%form \meta{prefix}\verb|.|\cs{the}\meta{counter}. It's possible (although
+%again unlikely) that a \app{makeindex} character might occur in the
+%prefix, which therefore needs escaping. The prefix is passed as the
+%optional argument of \cs{setentrycounter} which is needed by commands like
+%\cs{glshypernumber} to create a hyperlink for a given counter (like
+%\cs{hyperpage} but for an arbitrary counter).
+%
+% \begin{macrocode}
+\newcommand*{\@@do@esc@wrglossary}[1]{% please read documented code!
+ \begingroup
+% \end{macrocode}
+% First a bit of hackery to prevent premature
+% expansion of \cs{c@page}. Store original definitions (scoped):
+%\changes{3.04}{2012-11-18}{modified to compensate for possible
+%incorrect page number}
+%\changes{4.22}{2016-04-19}{added check for \cs{@arabic}}
+% \begin{macrocode}
+ \let\gls@orgthe\the
+ \let\gls@orgnumber\number
+ \let\gls@orgarabic\@arabic
+ \let\gls@orgromannumeral\romannumeral
+ \let\gls@orgalph\@alph
+ \let\gls@orgAlph\@Alph
+ \let\gls@orgRoman\@Roman
+% \end{macrocode}
+% Redefine:
+%\changes{3.05}{2013-04-21}{add Roman case. Fixed bugs in the else statements}
+%\changes{4.22}{2016-04-19}{added test to allow temporary primitive
+%modifications and added arabic case}
+% \begin{macrocode}
+ \ifglswrallowprimitivemods
+% \end{macrocode}
+%The redefinition of \cs{the} to use \cs{expandafter} solves the
+%problem of \verb|\the\csname c@|\meta{counter}\verb|\endcsname| but
+%is only a partial solution to the problem of \verb|\the\value|.
+%With \cs{value}, \cs{c@page} is too deeply hidden and will be
+%expanded too soon, but at least there won't be an error.
+%\changes{4.33}{2017-09-20}{added \cs{gls@the} and \cs{gls@number}}
+% \begin{macrocode}
+ \def\gls@the##1{%
+ \ifx##1\c@page \gls@numberpage\else\gls@orgthe##1\fi}%
+ \def\the{\expandafter\gls@the}%
+ \def\gls@number##1{%
+ \ifx##1\c@page \gls@numberpage\else\gls@orgnumber##1\fi}%
+ \def\number{\expandafter\gls@number}%
+ \fi
+ \def\@arabic##1{%
+ \ifx##1\c@page \gls@arabicpage\else\gls@orgarabic##1\fi}%
+ \def\romannumeral##1{%
+ \ifx##1\c@page \gls@romanpage\else\gls@orgromannumeral##1\fi}%
+ \def\@Roman##1{%
+ \ifx##1\c@page \gls@Romanpage\else\gls@orgRoman##1\fi}%
+ \def\@alph##1{%
+ \ifx##1\c@page \gls@alphpage\else\gls@orgalph##1\fi}%
+ \def\@Alph##1{%
+ \ifx##1\c@page \gls@Alphpage\else\gls@orgAlph##1\fi}%
+% \end{macrocode}
+% Add hook to allow for other number formats:
+%\changes{4.11}{2014-09-01}{added hook}
+% \begin{macrocode}
+ \@wrglossarynumberhook
+% \end{macrocode}
+% Prevent expansion:
+% \begin{macrocode}
+ \gls@disablepagerefexpansion
+% \end{macrocode}
+% Now store location in \cs{@glslocref}:
+% \begin{macrocode}
+ \protected@xdef\@glslocref{\theglsentrycounter}%
+ \endgroup
+% \end{macrocode}
+% Escape any special characters. It's possible that with
+% \app{makeindex} the separator might be a \app{makeindex} special character.
+% Although not likely, it still needs to be taken into account.
+% \begin{macrocode}
+ \@gls@checkmkidxchars\@glslocref
+% \end{macrocode}
+% Check if the hyper-location is the same as the location and set
+% the hyper prefix.
+%\changes{3.0}{2011-04-02}{added check for hyper location prefix}
+% \begin{macrocode}
+ \expandafter\ifx\theHglsentrycounter\theglsentrycounter\relax
+ \def\@glo@counterprefix{}%
+ \else
+ \protected@edef\@glsHlocref{\theHglsentrycounter}%
+ \@gls@checkmkidxchars\@glsHlocref
+ \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\@glslocref}{\@glsHlocref}%
+ }%
+ \@do@gls@getcounterprefix
+ \fi
+% \end{macrocode}
+% De-tok label if required
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+ \edef\@gls@label{\glsdetoklabel{#1}}%
+% \end{macrocode}
+% Write the information to file:
+% \begin{macrocode}
+ \@@do@@wrglossary
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@do@@wrglossary}
+% \begin{macrocode}
+\newcommand*{\@@do@@wrglossary}{%
+% \end{macrocode}
+% Determine whether to use \app{xindy} or \app{makeindex}
+% syntax
+% \begin{macrocode}
+ \ifglsxindy
+% \end{macrocode}
+% Need to determine if the formatting information starts with
+% a ( or ) indicating a range.
+% \begin{macrocode}
+ \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil
+ \def\@glo@range{}%
+ \expandafter\if\@glo@prefix(\relax
+ \def\@glo@range{:open-range}%
+ \else
+ \expandafter\if\@glo@prefix)\relax
+ \def\@glo@range{:close-range}%
+ \fi
+ \fi
+% \end{macrocode}
+% Write to the glossary file using \app{xindy} syntax.
+% \begin{macrocode}
+ \gls@glossary{\csname glo@\@gls@label @type\endcsname}{%
+ (indexentry :tkey (\csname glo@\@gls@label @index\endcsname)
+% \end{macrocode}
+%\changes{3.02}{2012-05-21}{changed \cs{@glslocref} to \cs{theglsentrycounter}}
+%\changes{3.04}{2012-11-18}{changed \cs{theglsentrycounter} back to \cs{@glslocref}}
+% \begin{macrocode}
+ :locref \string"{\@glo@counterprefix}{\@glslocref}\string" %
+ :attr \string"\@gls@counter\@glo@suffix\string"
+ \@glo@range
+ )
+ }%
+ \else
+% \end{macrocode}
+% Convert the format information into the format required for
+% \app{makeindex}
+% \begin{macrocode}
+ \@set@glo@numformat{\@glo@numfmt}{\@gls@counter}{\@glsnumberformat}%
+ {\@glo@counterprefix}%
+% \end{macrocode}
+% Write to the glossary file using \app{makeindex} syntax.
+% \begin{macrocode}
+ \gls@glossary{\csname glo@\@gls@label @type\endcsname}{%
+ \string\glossaryentry{\csname glo@\@gls@label @index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\@glslocref}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@getcounterprefix}
+% Get the prefix that needs to be prepended to counter in order to
+% get the hyper counter. (For example, with the standard
+% \cls{article} class and \sty{hyperref}, \ics{theequation} needs to
+% be prefixed with \meta{section num}|.| to get the equivalent
+% \ics{theHequation}.) NB this assumes that the prefix ends with a
+% dot, which is the standard. (Otherwise it makes the xindy location
+% classes more complicated.)
+% \begin{macrocode}
+\newcommand*\@gls@getcounterprefix[2]{%
+ \edef\@gls@thisloc{#1}\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.
+%\changes{4.04}{2014-03-04}{added warning if no prefix can be formed}
+% \begin{macrocode}
+ \ifx\@glo@counterprefix\@empty
+ \GlossariesWarning{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"}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Glossary Entry Cross-References}
+%\begin{macro}{\@do@seeglossary}
+%\changes{1.17}{2008-12-26}{new}
+% Write the glossary entry with a cross reference.
+% The first argument is the entry's label, the second must be in
+% the form \oarg{tag}\marg{list}, where \meta{tag} is a tag
+% such as ``see'' and \meta{list} is a list of labels.
+%\changes{3.0}{2011-04-02}{Sanitize and escape cross-referencing
+%information}
+% \begin{macrocode}
+\newcommand{\@do@seeglossary}[2]{%
+\def\@gls@xref{#2}%
+\@onelevel@sanitize\@gls@xref
+\@gls@checkmkidxchars\@gls@xref
+\ifglsxindy
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"\@gls@xref\string")
+ :attr \string"see\string"
+ )
+ }%
+\else
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar glsseeformat\@gls@xref}{Z}}%
+\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@fixbraces}
+% If no optional argument is specified, list needs to be enclosed
+% in a set of braces.
+% \begin{macrocode}
+\def\@gls@fixbraces#1#2#3\@nil{%
+ \ifx#2[\relax
+ \@@gls@fixbraces#1#2#3\@end@fixbraces
+ \else
+ \def#1{{#2#3}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@@gls@fixbraces}
+% \begin{macrocode}
+\def\@@gls@fixbraces#1[#2]#3\@end@fixbraces{%
+ \def#1{[#2]{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssee}
+%\cs{glssee}\marg{label}\marg{cross-ref list}
+%\changes{1.17}{2008-12-26}{new}
+%\changes{3.08a}{2013-09-28}{made robust}
+% \begin{macrocode}
+\DeclareRobustCommand*{\glssee}[3][\seename]{%
+ \@do@seeglossary{#2}{[#1]{#3}}}
+\newcommand*{\@glssee}[3][\seename]{%
+ \glssee[#1]{#3}{#2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsseeformat}
+%\changes{1.17}{2008-12-26}{new}
+%\changes{3.08a}{2013-09-28}{made robust}
+% The first argument specifies what tag to use (e.g.\ ``see''),
+% the second argument is a comma-separated list of labels.
+% The final argument (the location) is ignored.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsseeformat}[3][\seename]{%
+ \emph{#1} \glsseelist{#2}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseelist}
+%\cs{glsseelist}\marg{list} formats list of entry labels.
+%\changes{3.08a}{2013-09-28}{made robust}
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsseelist}[1]{%
+% \end{macrocode}
+% If there is only one item in the list, set the last separator
+% to do nothing.
+% \begin{macrocode}
+ \let\@gls@dolast\relax
+% \end{macrocode}
+% Don't display separator on the first iteration of the loop
+% \begin{macrocode}
+ \let\@gls@donext\relax
+% \end{macrocode}
+% Iterate through the labels
+% \begin{macrocode}
+ \@for\@gls@thislabel:=#1\do{%
+% \end{macrocode}
+% Check if on last iteration of loop
+% \begin{macrocode}
+ \ifx\@xfor@nextelement\@nnil
+ \@gls@dolast
+ \else
+ \@gls@donext
+ \fi
+% \end{macrocode}
+% Display the entry for this label.
+% (Expanding label as it's a temporary control sequence that's used
+% elsewhere.)
+%\changes{4.03}{2014-01-20}{added \cs{expandafter} commands}
+% \begin{macrocode}
+ \expandafter\glsseeitem\expandafter{\@gls@thislabel}%
+% \end{macrocode}
+% Update separators
+% \begin{macrocode}
+ \let\@gls@dolast\glsseelastsep
+ \let\@gls@donext\glsseesep
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsseelastsep}
+% Separator to use between penultimate and ultimate entries in a
+% cross-referencing list.
+% \begin{macrocode}
+\newcommand*{\glsseelastsep}{\space\andname\space}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseesep}
+% Separator to use between entries in a cross-referencing list.
+% \begin{macrocode}
+\newcommand*{\glsseesep}{, }
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseeitem}
+%\cs{glsseeitem}\marg{label} formats individual entry in a
+% cross-referencing list.
+%\changes{3.0}{2011-04-02}{hyperlink uses \cs{glsseeitemformat} instead
+%of \cs{glsentryname}}
+%\changes{3.08a}{2013-09-28}{made robust}
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsseeitem}[1]{\glshyperlink[\glsseeitemformat{#1}]{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsseeitemformat}
+%\changes{3.0}{2011-04-02}{new}
+% As from v3.0, default is to use \ics{glsentrytext} instead of
+% \ics{glsentryname}. (To avoid problems with the \gloskey{name} key being
+% sanitized, although this is no longer a problem now.)
+% \begin{macrocode}
+\newcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+% \section{Displaying the glossary}\label{sec:code:printglos}
+% An individual glossary is displayed in the text using
+% \cs{printglossary}\oarg{key-val list}. If the
+% \gloskey[printglossary]{type} key is omitted, the default glossary is displayed.
+% The optional argument can be used to specify an alternative
+% glossary, and can also be used to set the style, title and
+% entry in the table of contents. Available keys are defined below.
+%
+%\begin{macro}{\gls@save@numberlist}
+%\changes{3.02}{2012-05-21}{new}
+% Provide command to store number list.
+% \begin{macrocode}
+\newcommand*{\gls@save@numberlist}[1]{%
+ \ifglssavenumberlist
+ \toks@{#1}%
+ \edef\@do@writeaux@info{%
+ \noexpand\csgdef{glo@\glscurrententrylabel @numberlist}{\the\toks@}%
+ }%
+ \@onelevel@sanitize\@do@writeaux@info
+ \protected@write\@auxout{}{\@do@writeaux@info}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\warn@noprintglossary}
+% Warn the user if they have forgotten \ics{printglossaries}
+% or \ics{printglossary}. (Will be suppressed if there is at
+% least one occurrence of \ics{printglossary}. There is no check
+% to ensure that there is a \ics{printglossary} for each defined
+% glossary.)
+%\changes{4.04}{2014-03-06}{Activate warning in \cs{makeglossaries}}
+% \begin{macrocode}
+\newcommand*{\warn@noprintglossary}{}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printglossary}
+%\changes{1.17}{2008-12-26}{added print language to aux file}
+%\changes{1.15}{2008-08-15}{changed the way the TOC title is set}
+%\changes{1.17}{2008-12-26}{added check to determine if
+%\cs{printglossary} is already
+% defined}
+% The TOC title needs to be processed in a different manner
+% to the main title in case the \sty{translator} and \sty{hyperref} packages
+% are both being used.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{printglossary}{}%
+{%
+% \end{macrocode}
+% If \cs{printglossary} is already defined, issue a warning
+% and undefine it.
+% \begin{macrocode}
+ \@gls@warnonglossdefined
+ \undef\printglossary
+}
+% \end{macrocode}
+% \cs{printglossary} has an optional argument. The default
+% value is to set the glossary type to the main glossary.
+%\changes{4.04}{2014-03-06}{changed to use new \cs{@printglossary}}
+% \begin{macrocode}
+\newcommand*{\printglossary}[1][type=\glsdefaulttype]{%
+ \@printglossary{#1}{\@print@glossary}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The \cs{printglossaries} command will do \cs{printglossary}
+% for each glossary type that has been defined. It is better
+% to use \cs{printglossaries} rather than individual
+% \cs{printglossary} commands to ensure that you don't forget
+% any new glossaries you may have created. It also makes it easier to
+% chop and change the value of the \pkgopt{acronym} package option.
+% However, if you want to list the glossaries in a different order,
+% or if you want to set the title or table of contents entry, or
+% if you want to use different glossary styles for each glossary, you
+% will need to use \cs{printglossary} explicitly for each
+% glossary type.
+%\begin{macro}{\printglossaries}
+% \begin{macrocode}
+\newcommand*{\printglossaries}{%
+ \forallglossaries{\@@glo@type}{\printglossary[type=\@@glo@type]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printnoidxglossary}
+%\changes{4.04}{2014-03-06}{new}
+% Provide an alternative to \cs{printglossary} that doesn't require
+% an external indexing application. Entries won't be sorted and the
+% location list will be empty.
+% \begin{macrocode}
+\newcommand*{\printnoidxglossary}[1][type=\glsdefaulttype]{%
+ \@printglossary{#1}{\@print@noidx@glossary}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printnoidxglossaries}
+% Analogous to \cs{printglossaries}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\printnoidxglossaries}{%
+ \forallglossaries{\@@glo@type}{\printnoidxglossary[type=\@@glo@type]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@printgloss@setsort}
+% Initialise to do nothing.
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@printgloss@setsort}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@preglossaryhook}
+%\changes{4.19}{2015-11-22}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@preglossaryhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@printglossary}
+%\changes{4.04}{2014-03-06}{new}
+% Sets up the glossary for either \cs{printglossary} or
+% \cs{printnoidxglossary}. The first argument is the options list,
+% the second argument is the handler macro that
+% deals with the actual glossary.
+% \begin{macrocode}
+\newcommand{\@printglossary}[2]{%
+% \end{macrocode}
+% Set up defaults.
+% \begin{macrocode}
+ \def\@glo@type{\glsdefaulttype}%
+ \def\glossarytitle{\csname @glotype@\@glo@type @title\endcsname}%
+% \end{macrocode}
+%\changes{3.03}{2012/09/21}{allow title to override default toctitle}
+% \begin{macrocode}
+ \def\glossarytoctitle{\glossarytitle}%
+ \let\org@glossarytitle\glossarytitle
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{warn if no style has been set}
+% \begin{macrocode}
+ \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}}%
+% \end{macrocode}
+% Store current value of \ics{glossaryentrynumbers}. (This may
+% be changed via the optional argument)
+% \begin{macrocode}
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+% \end{macrocode}
+% Localise the effects of the optional argument
+% \begin{macrocode}
+ \bgroup
+% \end{macrocode}
+% Activate or deactivate sort key:
+% \begin{macrocode}
+ \@printgloss@setsort
+% \end{macrocode}
+% Determine settings specified in the optional argument.
+% \begin{macrocode}
+ \setkeys{printgloss}{#1}%
+% \end{macrocode}
+% Does the glossary exist?
+% \begin{macrocode}
+ \ifglossaryexists{\@glo@type}%
+ {%
+% \end{macrocode}
+% If title has been set, but toctitle hasn't, make toctitle the same
+% as given title (rather than the title used when the glossary was
+% defined)
+%\changes{3.0}{2011-04-02}{make toctitle default to title}
+% \begin{macrocode}
+ \ifx\glossarytitle\org@glossarytitle
+ \else
+ \expandafter\let\csname @glotype@\@glo@type @title\endcsname
+ \glossarytitle
+ \fi
+% \end{macrocode}
+% Allow a high-level user command to indicate the current glossary
+%\changes{3.0}{2011-04-02}{added \cs{currentglossary}}
+% \begin{macrocode}
+ \let\currentglossary\@glo@type
+% \end{macrocode}
+%Enable individual number lists to be suppressed.
+% \begin{macrocode}
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+% \end{macrocode}
+% Enable individual number list to be activated:
+%\changes{3.0}{2011-04-02}{added \cs{glsnextpages}}
+% \begin{macrocode}
+ \let\glsnextpages\@glsnextpages
+% \end{macrocode}
+% Enable suppression of description terminators.
+% \begin{macrocode}
+ \let\nopostdesc\@nopostdesc
+% \end{macrocode}
+% Set up the entry for the TOC
+% \begin{macrocode}
+ \gls@dotoctitle
+% \end{macrocode}
+% Set the glossary style
+% \begin{macrocode}
+ \@glossarystyle
+% \end{macrocode}
+%\changes{3.02}{2012-05-21}{add a way to fetch current entry label}
+% Added a way to fetch the current entry label (v3.08 updated for
+% new \cs{glossentry} and \cs{subglossentry}, but this is now only
+% needed for backward compatibility):
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+ \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}%
+ }%
+% \end{macrocode}
+%\changes{4.19}{2015-11-22}{added \cs{@gls@preglossaryhook}}
+% \begin{macrocode}
+ \@gls@preglossaryhook
+% \end{macrocode}
+% Now do the handler macro that deals with the actual glossary:
+% \begin{macrocode}
+ #2%
+ }%
+ {\GlossariesWarning{Glossary `\@glo@type' doesn't exist}}%
+% \end{macrocode}
+% End the current scope
+% \begin{macrocode}
+ \egroup
+% \end{macrocode}
+% Reset \ics{glossaryentrynumbers}
+% \begin{macrocode}
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+% \end{macrocode}
+% Suppress warning about no \ics{printglossary}
+%\changes{2.02}{2007-07-13}{suppressed warning globally rather than locally}
+% \begin{macrocode}
+ \global\let\warn@noprintglossary\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@print@glossary}
+%\changes{4.04}{2014-03-06}{new}
+% Internal workings of \cs{printglossary} dealing with reading the
+% external file.
+% \begin{macrocode}
+\newcommand{\@print@glossary}{%
+% \end{macrocode}
+% Some macros may end up being expanded into internals in the
+% glossary, so need to make @ a letter. (Unlikely to be a problem
+% since v3.08a but kept for backward compatibility.)
+% \begin{macrocode}
+ \makeatletter
+% \end{macrocode}
+% Input the glossary file, if it exists.
+% \begin{macrocode}
+ \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+% \end{macrocode}
+% If the glossary file doesn't exist, do \cs{null}. (This ensures
+% that the page is shipped out and all write commands are done.)
+% This might produce an empty page, but at this point the document
+% isn't complete, so it shouldn't matter.
+% \begin{macrocode}
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ {}%
+ {\null}%
+% \end{macrocode}
+% If \app{xindy} is being used, need to write the language
+% dependent information to the \filetype{.aux} file for
+% \app{makeglossaries}.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+%\changes{3.04}{2012-11-18}{Moved aux write to end of document to
+%prevent unwanted whatsit occurring here.}
+% \begin{macrocode}
+ \ifglsxindy
+ \ifcsundef{@xdy@\@glo@type @language}%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+% \end{macrocode}
+%\changes{3.10a}{2013-10-13}{Added providecommand code to aux file}
+% If the user removes the glossary package from their document,
+% ensure the next run doesn't throw a load of undefined control
+% sequence errors when the aux file is parsed.
+% \begin{macrocode}
+ \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{%
+% \end{macrocode}
+%\changes{3.10a}{2013-10-13}{Added providecommand code to aux file}
+% If the user removes the glossaries package from their document,
+% ensure the next run doesn't throw a load of undefined control
+% sequence errors when the aux file is parsed.
+% \begin{macrocode}
+ \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
+% \end{macrocode}
+% Activate warning if \cs{makeglossaries} hasn't been used.
+% \begin{macrocode}
+ \renewcommand*{\@warn@nomakeglossaries}{%
+ \GlossariesWarningNoLine{\string\makeglossaries\space
+ hasn't been used,^^Jthe glossaries will not be updated}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The sort macros all have the syntax:
+%\begin{definition}
+%\cs{@glo@sortmacro@\meta{order}}\marg{type}
+%\end{definition}
+% where \meta{order} is the sort order as specified by the sort key
+% and \meta{type} is the glossary type. (The referenced entry list
+% is stored in \cs{@glsref@\meta{type}.} The actual sorting is done
+% by \cs{@glo@sortentries}\marg{handler}\marg{type}.
+%
+%\begin{macro}{\@glo@sortentries}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@glo@sortentries}[2]{%
+ \glosortentrieswarning
+ \def\@glo@sortinglist{}%
+ \def\@glo@sortinghandler{#1}%
+ \edef\@glo@type{#2}%
+ \forlistcsloop{\@glo@do@sortentries}{@glsref@#2}%
+ \csdef{@glsref@#2}{}%
+ \@for\@this@label:=\@glo@sortinglist\do{%
+% \end{macrocode}
+% Has this entry already been added?
+% \begin{macrocode}
+ \xifinlistcs{\@this@label}{@glsref@#2}%
+ {}%
+ {%
+ \listcsxadd{@glsref@#2}{\@this@label}%
+ }%
+ \ifcsdef{@glo@sortingchildren@\@this@label}%
+ {%
+ \@glo@addchildren{#2}{\@this@label}%
+ }%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glo@addchildren}
+%\changes{4.04}{2014-03-06}{new}
+%\begin{definition}
+%\cs{@glo@addchildren}\marg{type}\marg{parent}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\@glo@addchildren}[2]{%
+% \end{macrocode}
+% Scope to allow nesting.
+% \begin{macrocode}
+ \bgroup
+ \letcs{\@glo@childlist}{@glo@sortingchildren@#2}%
+ \@for\@this@childlabel:=\@glo@childlist\do
+ {%
+% \end{macrocode}
+% Check this label hasn't already been added.
+% \begin{macrocode}
+ \xifinlistcs{\@this@childlabel}{@glsref@#1}%
+ {}%
+ {%
+ \listcsxadd{@glsref@#1}{\@this@childlabel}%
+ }%
+% \end{macrocode}
+% Does this child have children?
+% \begin{macrocode}
+ \ifcsdef{@glo@sortingchildren@\@this@childlabel}%
+ {%
+ \@glo@addchildren{#1}{\@this@childlabel}%
+ }%
+ {%
+ }%
+ }%
+ \egroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@do@sortentries}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@glo@do@sortentries}[1]{%
+ \ifglshasparent{#1}%
+ {%
+% \end{macrocode}
+% This entry has a parent, so add it to the child list
+% \begin{macrocode}
+ \edef\@glo@parent{\csuse{glo@\glsdetoklabel{#1}@parent}}%
+ \ifcsundef{@glo@sortingchildren@\@glo@parent}%
+ {%
+ \csdef{@glo@sortingchildren@\@glo@parent}{}%
+ }%
+ {}%
+ \expandafter\@glo@sortedinsert
+ \csname @glo@sortingchildren@\@glo@parent\endcsname{#1}%
+% \end{macrocode}
+% Has the parent been added?
+% \begin{macrocode}
+ \xifinlistcs{\@glo@parent}{@glsref@\@glo@type}%
+ {%
+% \end{macrocode}
+% Yes, it has so do nothing.
+% \begin{macrocode}
+ }%
+ {%
+% \end{macrocode}
+% No, it hasn't so add it now.
+% \begin{macrocode}
+ \expandafter\@glo@do@sortentries\expandafter{\@glo@parent}%
+ }%
+ }%
+ {%
+ \@glo@sortedinsert{\@glo@sortinglist}{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortedinsert}
+%\changes{4.04}{2014-03-06}{new}
+%\begin{definition}
+%\cs{@glo@sortedinsert}\marg{list}\marg{entry label}
+%\end{definition}
+% Insert into list.
+% \begin{macrocode}
+\newcommand*{\@glo@sortedinsert}[2]{%
+ \dtl@insertinto{#2}{#1}{\@glo@sortinghandler}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+% The sort handlers need to be in the form required by
+% \sty{datatool}'s \cs{dtl@sortlist} macro. These must set the count
+% register \cs{dtl@sortresult} to either $-1$ (\#1 less than \#2), 0
+% (\#1 = \#2) or $+1$ (\#1 greater than \#2).
+%\begin{macro}{\@glo@sorthandler@word}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@glo@sorthandler@word}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlwordindexcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sorthandler@letter}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\newcommand*{\@glo@sorthandler@letter}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlletterindexcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sorthandler@case}
+%\changes{4.04}{2014-03-06}{new}
+% Case-sensitive sort.
+% \begin{macrocode}
+\newcommand*{\@glo@sorthandler@case}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlcompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sorthandler@nocase}
+%\changes{4.04}{2014-03-06}{new}
+% Case-insensitive sort.
+% \begin{macrocode}
+\newcommand*{\@glo@sorthandler@nocase}[2]{%
+ \letcs\@gls@sort@A{glo@\glsdetoklabel{#1}@sort}%
+ \letcs\@gls@sort@B{glo@\glsdetoklabel{#2}@sort}%
+ \edef\glo@do@compare{%
+ \noexpand\dtlicompare{\noexpand\dtl@sortresult}%
+ {\expandonce\@gls@sort@B}%
+ {\expandonce\@gls@sort@A}%
+ }%
+ \glo@do@compare
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@word}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `word'
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@word}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@word}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=word]}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@letter}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `letter'
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@letter}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@letter}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=letter]}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@standard}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `standard'. (Use either `word' or `letter' order.)
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@standard}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \ifcsdef{@glo@sorthandler@\glsorder}%
+ {%
+ \@glo@sortentries{\csuse{@glo@sorthandler@\glsorder}}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\glsorder'}{}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=standard]}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@case}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `case'
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@case}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@case}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=case]}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@nocase}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `nocase'
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@nocase}[1]{%
+ \ifdefstring{\@glo@default@sorttype}{standard}%
+ {%
+ \@glo@sortentries{\@glo@sorthandler@nocase}{#1}%
+ }%
+ {%
+ \PackageError{glossaries}{Conflicting sort options:^^J
+ \string\usepackage[sort=\@glo@default@sorttype]{glossaries}^^J
+ \string\printnoidxglossary[sort=nocase]}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@def}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `def'. The order of definition is given in
+% \cs{glolist@\meta{type}}.
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@def}[1]{%
+ \def\@glo@sortinglist{}%
+ \forglsentries[#1]{\@gls@thislabel}%
+ {%
+ \xifinlistcs{\@gls@thislabel}{@glsref@#1}%
+ {%
+ \listeadd{\@glo@sortinglist}{\@gls@thislabel}%
+ }%
+ {%
+% \end{macrocode}
+% Hasn't been referenced.
+% \begin{macrocode}
+ }%
+ }%
+ \cslet{@glsref@#1}{\@glo@sortinglist}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@def@do}
+%\changes{4.04}{2014-03-06}{new}
+% This won't include parent entries that haven't been referenced.
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@def@do}[1]{%
+ \ifinlistcs{#1}{@glsref@\@glo@type}%
+ {}%
+ {%
+ \listcsadd{@glsref@\@glo@type}{#1}%
+ }%
+ \ifcsdef{@glo@sortingchildren@#1}%
+ {%
+ \@glo@addchildren{\@glo@type}{#1}%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@sortmacro@use}
+%\changes{4.04}{2014-03-06}{new}
+% Sort macro for `use'. (No sorting is required, as the entries are
+% already in order of use, so do nothing.)
+% \begin{macrocode}
+\newcommand*{\@glo@sortmacro@use}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@print@noidx@glossary}
+%\changes{4.04}{2014-03-06}{new}
+% Glossary handler for \cs{printnoidxglossary} which doesn't use an
+% indexing application. Since \cs{printnoidxglossary} may occur at
+% the start of the document, we can't just check if an entry has
+% been used. Instead, the first pass needs to write information to
+% the aux file every time an entry is referenced. This needs to be
+% read in on the second run and stored in a~list corresponding to
+% the appropriate glossary.
+% \begin{macrocode}
+\newcommand*{\@print@noidx@glossary}{%
+ \ifcsdef{@glsref@\@glo@type}%
+ {%
+% \end{macrocode}
+% Sort the entries:
+% \begin{macrocode}
+ \ifcsdef{@glo@sortmacro@\@glo@sorttype}%
+ {%
+ \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}%
+ }%
+% \end{macrocode}
+% Do the glossary heading and preamble
+% \begin{macrocode}
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+% \end{macrocode}
+% \changes{4.29}{2017-01-19}{moved definition of
+% \cs{@gls@currentlettergroup} outside of \envfmt{theglossary} environment}
+%The glossary style might use a tabular-like environment, which may
+%cause scoping problems when setting the current letter group.
+%The predefined tabular-like styles don't support letter group
+%headings, but there's nothing to stop the user from defining their
+%own custom style that might, so any redefinition of this command
+%within \env{theglossary} will have to be done globally.
+% \begin{macrocode}
+ \def\@gls@currentlettergroup{}%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+% \end{macrocode}
+% Iterate through the entries.
+% \begin{macrocode}
+ \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}%
+% \end{macrocode}
+% Finally end the glossary and do the postamble:
+% \begin{macrocode}
+ \end{theglossary}%
+ \glossarypostamble
+ }%
+ {%
+ \@gls@noref@warn{\@glo@type}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glo@grabfirst}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\def\glo@grabfirst#1#2\@nil{%
+ \def\@gls@firsttok{#1}%
+ \ifdefempty\@gls@firsttok
+ {%
+ \def\@glo@thislettergrp{0}%
+ }%
+ {%
+% \end{macrocode}
+% Sanitize it:
+% \begin{macrocode}
+ \@onelevel@sanitize\@gls@firsttok
+% \end{macrocode}
+% Fetch the first letter:
+% \begin{macrocode}
+ \expandafter\@glo@grabfirst\@gls@firsttok{}{}\@nil
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glo@grabfirst}
+%\changes{4.04}{2014-03-06}{new}
+% \begin{macrocode}
+\def\@glo@grabfirst#1#2\@nil{%
+ \ifdefempty\@glo@thislettergrp
+ {%
+ \def\@glo@thislettergrp{glssymbols}%
+ }%
+ {%
+ \count@=\uccode`#1\relax
+ \ifnum\count@=0\relax
+ \def\@glo@thislettergrp{glssymbols}%
+ \else
+ \ifdefstring\@glo@sorttype{case}%
+ {%
+ \count@=`#1\relax
+ }%
+ {%
+ }%
+ \edef\@glo@thislettergrp{\the\count@}%
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@noidx@do}
+%\changes{4.04}{2014-03-06}{new}
+% Handler for list iteration used by \cs{@print@noidx@glossary}.
+% The argument is the entry label. This only allows one sublevel.
+% \begin{macrocode}
+\newcommand{\@gls@noidx@do}[1]{%
+% \end{macrocode}
+% Get this entry's location list
+%\changes{4.07}{2014-04-04}{added \cs{global} in case it's used in a
+%tabular-like style}
+% \begin{macrocode}
+ \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+% \end{macrocode}
+% Does this entry have a~parent?
+% \begin{macrocode}
+ \ifglshasparent{#1}%
+ {%
+% \end{macrocode}
+% Has a~parent.
+% \begin{macrocode}
+ \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \subglossentry{\gls@level}{#1}{}%
+ }%
+ {%
+ \subglossentry{\gls@level}{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Doesn't have a parent
+% Get this entry's sort key
+% \begin{macrocode}
+ \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}%
+% \end{macrocode}
+% Fetch the first letter:
+% \begin{macrocode}
+ \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
+ {}%
+ {%
+% \end{macrocode}
+% Do the group header:
+% \begin{macrocode}
+ \ifdefempty{\@gls@currentlettergroup}{}%
+ {%
+% \end{macrocode}
+%\changes{4.30}{2017-06-11}{letter group assignment made
+%global}
+%The group skip may start a new scope, so make a global assignment.
+% \begin{macrocode}
+ \global\let\@glo@thislettergrp\@glo@thislettergrp
+ \glsgroupskip
+ }%
+ \glsgroupheading{\@glo@thislettergrp}%
+ }%
+% \end{macrocode}
+%\changes{4.29}{2017-01-19}{current letter group assignment made
+%global}
+% \begin{macrocode}
+ \global\let\@gls@currentlettergroup\@glo@thislettergrp
+% \end{macrocode}
+% Do this entry:
+% \begin{macrocode}
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \glossentry{#1}{}%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxloclist}
+%\changes{4.04}{2014-03-06}{new}
+%\begin{definition}
+%\cs{glsnoidxloclist}\marg{list cs}
+%\end{definition}
+% Display location list.
+% \begin{macrocode}
+\newcommand*{\glsnoidxloclist}[1]{%
+ \def\@gls@noidxloclist@sep{}%
+ \def\@gls@noidxloclist@prev{}%
+ \forlistloop{\glsnoidxloclisthandler}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxloclisthandler}
+%\changes{4.04}{2014-03-06}{new}
+% Handler for location list iterator.
+% \begin{macrocode}
+\newcommand*{\glsnoidxloclisthandler}[1]{%
+ \ifdefstring{\@gls@noidxloclist@prev}{#1}%
+ {%
+% \end{macrocode}
+% Same as previous location so skip.
+% \begin{macrocode}
+ }%
+ {%
+ \@gls@noidxloclist@sep
+ #1%
+ \def\@gls@noidxloclist@sep{\delimN}%
+ \def\@gls@noidxloclist@prev{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxdisplayloclisthandler}
+%\changes{4.04}{2014-03-06}{new}
+% Handler for location list iterator when used with
+% \ics{glsdisplaynumberlist}.
+% \begin{macrocode}
+\newcommand*{\glsnoidxdisplayloclisthandler}[1]{%
+ \ifdefstring{\@gls@noidxloclist@prev}{#1}%
+ {%
+% \end{macrocode}
+% Same as previous location so skip.
+% \begin{macrocode}
+ }%
+ {%
+ \@gls@noidxloclist@sep
+ \@gls@noidxloclist@prev
+ \def\@gls@noidxloclist@prev{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxdisplayloc}
+%\changes{4.04}{2014-03-06}{new}
+%\begin{definition}
+%\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location}
+%\end{definition}
+% Display a location in the location list.
+% \begin{macrocode}
+\newcommand*\glsnoidxdisplayloc[4]{%
+ \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@reference}
+%\changes{4.04}{2014-03-06}{new}
+%\begin{definition}
+%\cs{@gls@reference}\marg{type}\marg{label}\marg{loc}
+%\end{definition}
+% Identifies that a reference has been used (for use in the aux file).
+% All entries must be defined in the preamble.
+% \begin{macrocode}
+\newcommand*{\@gls@reference}[3]{%
+% \end{macrocode}
+% Add to label list
+% \begin{macrocode}
+ \glsdoifexistsorwarn{#2}%
+ {%
+ \ifcsundef{@glsref@#1}{\csgdef{@glsref@#1}{}}{}%
+ \ifinlistcs{#2}{@glsref@#1}%
+ {}%
+ {\listcsgadd{@glsref@#1}{#2}}%
+% \end{macrocode}
+% Add to location list
+% \begin{macrocode}
+ \ifcsundef{glo@\glsdetoklabel{#2}@loclist}%
+ {\csgdef{glo@\glsdetoklabel{#2}@loclist}{}}%
+ {}%
+ \listcsgadd{glo@\glsdetoklabel{#2}@loclist}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The keys that can be used in the optional argument to
+% \ics{printglossary} or \ics{printnoidxglossary} are as follows:
+% The \gloskey[printglossary]{type} key sets the glossary type.
+% \begin{macrocode}
+\define@key{printgloss}{type}{\def\@glo@type{#1}}
+% \end{macrocode}
+% The \gloskey[printglossary]{title} key sets the title used in the glossary section
+% header. This overrides the title used in \ics{newglossary}.
+%\changes{3.03}{2012/09/21}{allow title to set toctitle}
+% \begin{macrocode}
+\define@key{printgloss}{title}{%
+ \def\glossarytitle{#1}%
+ \let\gls@dotoctitle\relax
+}
+% \end{macrocode}
+% The \gloskey[printglossary]{toctitle} sets the text used for the relevant entry
+% in the table of contents.
+% \begin{macrocode}
+\define@key{printgloss}{toctitle}{%
+ \def\glossarytoctitle{#1}%
+ \let\gls@dotoctitle\relax
+}
+% \end{macrocode}
+% The \gloskey[printglossary]{style} key sets the glossary style (but only for
+% the given glossary).
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\define@key{printgloss}{style}{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}%
+ {Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \def\@glossarystyle{\setglossentrycompatibility
+ \csname @glsstyle@#1\endcsname}%
+ }%
+}
+% \end{macrocode}
+% \changes{1.14}{2008-06-17}{added numberedsection key to
+% \cs{printglossary}}
+% The \gloskey[printglossary]{numberedsection} key determines if this
+% glossary should be in a numbered section.
+%\changes{4.41}{2018-07-23}{changed \cs{val} and \cs{nr} to
+%\cs{gls@numberedsection@val} and \cs{gls@numberedsection@nr}}
+% \begin{macrocode}
+\define@choicekey{printgloss}{numberedsection}%
+ [\gls@numberedsection@val\gls@numberedsection@nr]%
+ {false,nolabel,autolabel,nameref}[nolabel]%
+{%
+ \ifcase\gls@numberedsection@nr\relax
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{}%
+ \renewcommand*{\@@glossaryseclabel}{\label{\glsautoprefix\@glo@type}}%
+ \or
+ \renewcommand*{\@@glossarysecstar}{*}%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{\glsautoprefix\@glo@type}}%
+ \fi
+}
+% \end{macrocode}
+%
+%\changes{3.08a}{2013-09-28}{added nogroupskip key to \cs{printglossary}}
+% The \gloskey[printglossary]{nogroupskip} key determines whether or
+% not there should be a vertical gap between glossary groups.
+% \begin{macrocode}
+\define@choicekey{printgloss}{nogroupskip}{true,false}[true]{%
+ \csuse{glsnogroupskip#1}%
+}
+% \end{macrocode}
+%
+%\changes{4.08}{2014-07-30}{added nopostdot option to
+%\texttt{printgloss} family}
+% The \gloskey[printglossary]{nopostdot} key has the same effect as
+% the package option of the same name.
+% \begin{macrocode}
+\define@choicekey{printgloss}{nopostdot}{true,false}[true]{%
+ \csuse{glsnopostdot#1}%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\GlsEntryCounterLabelPrefix}
+%\changes{4.38}{2018-05-10}{new}
+%Make it easier to redefine the label prefix.
+% \begin{macrocode}
+\newcommand*{\GlsEntryCounterLabelPrefix}{glsentry-}
+% \end{macrocode}
+%\end{macro}
+%
+%The conditionals have been moved inside the appropriate commands to
+%make it easier for the user to redefine them in the preamble
+%and selectively switch the counter display on and off. Previously
+%the helper commands were redefined by the \gloskey{entrycounter}
+%option, which would counteract any earlier customisation.
+%
+%\changes{4.08}{2014-07-30}{added entrycounter option to
+%\texttt{printgloss} family}
+% The \gloskey[printglossary]{entrycounter} key is the same as the
+% package option but localised to the current glossary.
+% \begin{macrocode}
+\define@choicekey{printgloss}{entrycounter}{true,false}[true]{%
+ \csuse{glsentrycounter#1}%
+ \@gls@define@glossaryentrycounter
+}
+% \end{macrocode}
+%
+%\changes{4.08}{2014-07-30}{added subentrycounter option to
+%\texttt{printgloss} family}
+% The \gloskey[printglossary]{subentrycounter} key is the same as the
+% package option but localised to the current glossary.
+% Note that this doesn't affect the master/slave counter attributes,
+% which occurs if \pkgopt{subentrycounter} and \pkgopt{entrycounter}
+% package options are set to true.
+% \begin{macrocode}
+\define@choicekey{printgloss}{subentrycounter}{true,false}[true]{%
+ \csuse{glssubentrycounter#1}%
+ \@gls@define@glossarysubentrycounter
+}
+% \end{macrocode}
+%
+% \changes{1.14}{2008-06-17}{added nonumberlist key to
+% \cs{printglossary}}
+% The \gloskey[printglossary]{nonumberlist} key determines if this
+% glossary should have a number list.
+% \begin{macrocode}
+\define@boolkey{printgloss}[gls]{nonumberlist}[true]{%
+\ifglsnonumberlist
+ \def\glossaryentrynumbers##1{}%
+\else
+ \def\glossaryentrynumbers##1{##1}%
+\fi}
+% \end{macrocode}
+%
+%\changes{4.04}{2014-03-06}{added sort key to printgloss group}
+% The \gloskey[printnoidxglossary]{sort} key sets the glossary sort
+% handler (\cs{printnoidxglossary} only).
+% \begin{macrocode}
+\define@key{printgloss}{sort}{\@glo@assign@sortkey{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\@glo@no@assign@sortkey}
+% Issue error if used with \cs{printglossary}
+% \begin{macrocode}
+\newcommand*{\@glo@no@assign@sortkey}[1]{%
+ \PackageError{glossaries}{`sort' key not permitted with
+ \string\printglossary}%
+ {The `sort' key may only be used with \string\printnoidxglossary}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glo@assign@sortkey}
+% For use with \cs{printnoidxglossary}
+% \begin{macrocode}
+\newcommand*{\@@glo@assign@sortkey}[1]{%
+ \def\@glo@sorttype{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\@glsnonextpages}
+%\changes{1.17}{2008-12-26}{new}%
+% Suppresses the next number list only. Global assignments required
+% as it may not occur in the same level of grouping as the
+% next numberlist. (For example, if \cs{glsnonextpages} is place
+% in the entry's description and 3 column tabular style glossary
+% is used.) \cs{org@glossaryentrynumbers} needs to be set at
+% the start of each glossary, in the event that
+% \ics{glossaryentrynumber} is redefined.
+% \begin{macrocode}
+\newcommand*{\@glsnonextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ \glsresetentrylist
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsnextpages}
+%\changes{3.0}{2011-04-02}{new}%
+% Activate the next number list only. Global assignments required
+% as it may not occur in the same level of grouping as the
+% next numberlist. (For example, if \cs{glsnextpages} is place
+% in the entry's description and 3 column tabular style glossary
+% is used.) \cs{org@glossaryentrynumbers} needs to be set at
+% the start of each glossary, in the event that
+% \ics{glossaryentrynumber} is redefined.
+% \begin{macrocode}
+\newcommand*{\@glsnextpages}{%
+ \gdef\glossaryentrynumbers##1{%
+ ##1\glsresetentrylist}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsresetentrylist}
+% Resets \cs{glossaryentrynumbers}
+% \begin{macrocode}
+\newcommand*{\glsresetentrylist}{%
+ \global\let\glossaryentrynumbers\org@glossaryentrynumbers}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glsnonextpages}
+% Outside of \cs{printglossary} this does nothing.
+% \begin{macrocode}
+\newcommand*{\glsnonextpages}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnextpages}
+% Outside of \cs{printglossary} this does nothing.
+% \begin{macrocode}
+\newcommand*{\glsnextpages}{}
+% \end{macrocode}
+%\end{macro}
+%
+%Process \pkgopt{entrycounter} and then \pkgopt{subentrycounter}
+%options (this ensures the sub-counter can pick up the main counter
+%as the master if required):
+% \begin{macrocode}
+\@gls@define@glossaryentrycounter
+\@gls@define@glossarysubentrycounter
+% \end{macrocode}
+%\begin{macro}{\glsresetsubentrycounter}
+%\changes{3.0}{2011-04-02}{new}
+% Resets the \ctr{glossarysubentry} counter.
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% \begin{macrocode}
+\newcommand*{\glsresetsubentrycounter}{%
+ \ifglssubentrycounter
+ \setcounter{glossarysubentry}{0}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsresetsubentrycounter}
+%\changes{3.02}{2012-05-21}{new}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% Resets the \ctr{glossaryentry} counter.
+% \begin{macrocode}
+\newcommand*{\glsresetentrycounter}{%
+ \ifglsentrycounter
+ \setcounter{glossaryentry}{0}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsstepentry}
+%\changes{3.0}{2011-04-02}{new}
+% Advance the \ctr{glossaryentry} counter if in use. The argument is
+% the label associated with the entry.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% \begin{macrocode}
+\newcommand*{\glsstepentry}[1]{%
+ \ifglsentrycounter
+ \refstepcounter{glossaryentry}%
+ \label{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsstepsubentry}
+%\changes{3.0}{2011-04-02}{new}
+% Advance the \ctr{glossarysubentry} counter if in use. The argument is
+% the label associated with the subentry.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% \begin{macrocode}
+\newcommand*{\glsstepsubentry}[1]{%
+ \ifglssubentrycounter
+ \edef\currentglssubentry{\glsdetoklabel{#1}}%
+ \refstepcounter{glossarysubentry}%
+ \label{\GlsEntryCounterLabelPrefix\currentglssubentry}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsrefentry}
+%\changes{3.0}{2011-04-02}{new}
+% Reference the entry or sub-entry counter if in use, otherwise just do
+% \ics{gls}.
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% \begin{macrocode}
+\newcommand*{\glsrefentry}[1]{%
+ \ifglsentrycounter
+ \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \ref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentrycounterlabel}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% Defines how to display the \ctr{glossaryentry} counter.
+% \begin{macrocode}
+\newcommand*{\glsentrycounterlabel}{%
+ \ifglsentrycounter
+ \theglossaryentry.\space
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssubentrycounterlabel}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% Defines how to display the \ctr{glossarysubentry} counter.
+% \begin{macrocode}
+\newcommand*{\glssubentrycounterlabel}{%
+ \ifglssubentrycounter
+ \theglossarysubentry)\space
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryitem}
+% Step and display \ctr{glossaryentry} counter, if appropriate.
+%\changes{3.0}{2011-04-02}{new}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% \begin{macrocode}
+\newcommand*{\glsentryitem}[1]{%
+ \ifglsentrycounter
+ \glsstepentry{#1}\glsentrycounterlabel
+ \else
+ \glsresetsubentrycounter
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssubentryitem}
+% Step and display \ctr{glossarysubentry} counter, if appropriate.
+%\changes{3.0}{2011-04-02}{new}
+%\changes{4.38}{2018-05-10}{bug fix: move conditional inside command}
+% \begin{macrocode}
+\newcommand*{\glssubentryitem}[1]{%
+ \ifglssubentrycounter
+ \glsstepsubentry{#1}\glssubentrycounterlabel
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{environment}{theglossary}
+% If the \env{theglossary} environment has
+% already been defined, a warning will be issued.
+% This environment should be redefined by glossary styles.
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{theglossary}%
+{%
+ \newenvironment{theglossary}{}{}%
+}%
+{%
+ \@gls@warnontheglossdefined
+ \renewenvironment{theglossary}{}{}%
+}
+% \end{macrocode}
+%\end{environment}
+%
+% The glossary header is given by \cs{glossaryheader}.
+% This forms part of the glossary style, and
+% must indicate what should appear immediately after the start of the
+% \env{theglossary} environment. (For example, if the glossary
+% uses a tabular-like environment, it may be used to set the
+% header row.) Note that if you don't want a header row, the glossary
+% style must redefine \cs{glossaryheader} to do nothing.
+%\begin{macro}{\glossaryheader}
+% \begin{macrocode}
+\newcommand*{\glossaryheader}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstarget}
+%\changes{1.18}{2009-01-14}{new}
+%\begin{definition}
+%\cs{glstarget}\marg{label}\marg{name}
+%\end{definition}
+% Provide user interface to \cs{@glstarget} to make it easier to
+% modify the glossary style in the document.
+% \begin{macrocode}
+\newcommand*{\glstarget}[2]{\@glstarget{\glolinkprefix#1}{#2}}
+% \end{macrocode}
+%\end{macro}
+%
+% As from version 3.08, glossary information is now written to the
+% external files using \ics{glossentry} and \ics{subglossentry}
+% instead of \cs{glossaryentryfield} and \cs{glossarysubentryfield}.
+% The default definition provides backward compatibility for
+% glossary styles that use the old forms.
+%\begin{macro}{\compatibleglossentry}
+%\changes{3.08a}{2013-09-28}{new}
+%\begin{definition}
+% \cs{glossentry}\marg{label}\marg{page-list}
+%\end{definition}
+% \begin{macrocode}
+\providecommand*{\compatibleglossentry}[2]{%
+ \toks@{#2}%
+ \protected@edef\@do@glossentry{\noexpand\glossaryentryfield{#1}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@#1@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@#1@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@#1@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@glossentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossentryname}
+%\changes{3.08a}{2013-09-28}{new}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\glsnamefont\expandafter{\glo@name}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glossentryname}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\Glossentryname}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsnamefont{\Glsentryname{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossentrydesc}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrydesc{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glossentrydesc}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrydesc{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossentrysymbol}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glsentrysymbol{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glossentrysymbol}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\compatiblesubglossentry}
+%\changes{3.08a}{2013-09-28}{new}
+%\begin{definition}
+% \cs{subglossentry}\marg{level}\marg{label}\marg{page-list}
+%\end{definition}
+% \begin{macrocode}
+\providecommand*{\compatiblesubglossentry}[3]{%
+ \toks@{#3}%
+ \protected@edef\@do@subglossentry{\noexpand\glossarysubentryfield{\number#1}%
+ {#2}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@#2@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@#2@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@#2@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@subglossentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\setglossentrycompatibility}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\setglossentrycompatibility}{%
+ \let\glossentry\compatibleglossentry
+ \let\subglossentry\compatiblesubglossentry
+}
+\setglossentrycompatibility
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glossaryentryfield}
+%\begin{definition}
+% \cs{glossaryentryfield}\marg{label}\marg{name}\marg{description}\marg{symbol}\marg{page-list}
+%\end{definition}
+% This command formerly governed how each entry row should be formatted
+% in the glossary. Now deprecated.
+%\changes{3.08a}{2013-09-28}{deprecated}
+% \begin{macrocode}
+\newcommand{\glossaryentryfield}[5]{%
+ \GlossariesWarning
+ {Deprecated use of \string\glossaryentryfield.^^J
+ I recommend you change to \string\glossentry.^^J
+ If you've just upgraded, try removing your gls auxiliary
+ files^^J and recompile}%
+ \noindent\textbf{\glstarget{#1}{#2}} #4 #3. #5\par}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glossarysubentryfield}
+%\begin{definition}
+% \cs{glossarysubentryfield}\marg{level}\marg{label}\marg{name}\marg{description}\marg{symbol}\marg{page-list}
+%\end{definition}
+% This command governs how each subentry should be formatted
+% in the glossary. Glossary styles need to redefine this command.
+% Most of the predefined styles ignore \meta{symbol}. The first
+% argument is a number indicating the level. (The level should
+% be greater than or equal to 1.)
+% \begin{macrocode}
+\newcommand*{\glossarysubentryfield}[6]{%
+ \GlossariesWarning
+ {Deprecated use of \string\glossarysubentryfield.^^J
+ I recommend you change to \string\subglossentry.^^J
+ If you've just upgraded, try removing your gls auxiliary
+ files^^J and recompile}%
+ \glstarget{#2}{\strut}#4. #6\par}
+% \end{macrocode}
+%\end{macro}
+%
+% Within each glossary, the entries form distinct groups
+% which are determined by the first character of the \gloskey{sort}
+% key. When using \app{makeindex}, there will be a maximum of 28 groups: symbols, numbers,
+% and the 26 alphabetical groups A, \ldots, Z\@. If you use
+% \app{xindy} the groups will depend on whatever alphabet
+% is used. This is determined by the language or custom
+% alphabets can be created in the \app{xindy} style file.
+% The command \cs{glsgroupskip}
+% specifies what to do between glossary groups. Glossary styles
+% must redefine this command. (Note that \cs{glsgroupskip}
+% only occurs between groups, not at the start or end of the
+% glossary.)
+%\begin{macro}{\glsgroupskip}
+% \begin{macrocode}
+\newcommand*{\glsgroupskip}{}
+% \end{macrocode}
+%\end{macro}
+%
+% Each of the 28 glossary groups described above is preceded by a
+% group heading.
+% This is formatted by the command \cs{glsgroupheading}
+% which takes one argument which is the \emph{label} assigned to that
+% group (not the title). The corresponding labels are: \texttt{glssymbols},
+% \texttt{glsnumbers}, \texttt{A}, \ldots, \texttt{Z}.
+% Glossary styles must redefined this command. (In between groups,
+% \cs{glsgroupheading} comes immediately after \cs{glsgroupskip}.)
+%\begin{macro}{\glsgroupheading}
+% \begin{macrocode}
+\newcommand*{\glsgroupheading}[1]{}
+% \end{macrocode}
+%\end{macro}
+% It is possible to ``trick'' \app{makeindex} into
+% treating entries as though they belong to the same group,
+% even if the terms don't start with the same letter, by
+% modifying the \gloskey{sort} key. For example, all entries
+% belonging to one
+% group could be defined so that the \gloskey{sort} key starts with an
+% "a", while entries belonging to another group could be defined
+% so that the \gloskey{sort} key starts with a "b", and so on. If
+% you want each group to have a heading, you would then need to
+% modify the translation control sequences \cs{glsgetgrouptitle}
+% and \cs{glsgetgrouplabel} so that the label is translated
+% into the required title (and vice-versa).
+%
+%\begin{definition}
+%\cs{glsgetgrouptitle}\marg{label}
+%\end{definition}
+% This command produces the title for the glossary group
+% whose label is given by \meta{label}. By default, the group
+% labelled \texttt{glssymbols} produces
+% \ics{glssymbolsgroupname}, the group labelled
+% \texttt{glsnumbers} produces \ics{glsnumbersgroupname}
+% and all the other groups simply produce their label.
+% As mentioned above, the group labels are: \texttt{glssymbols}, \texttt{glsnumbers},
+% \texttt{A}, \ldots, \texttt{Z}\@. If you want to redefine
+% the group titles, you will need to redefine this command.
+% Languages other than English may produce labels that are
+% non-expandable, so we need to check for that otherwise it will
+% create a \qt{missing \cs{endcsname} inserted} error.
+%\begin{macro}{\glsgetgrouptitle}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+%\changes{3.11a}{2013-10-15}{Added check in case non-Latin alphabet
+%in use}
+% \begin{macrocode}
+\newcommand*{\glsgetgrouptitle}[1]{%
+ \@gls@getgrouptitle{#1}{\@gls@grptitle}%
+ \@gls@grptitle
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@getgrouptitle}
+% Gets the group title specified by the label (first argument) and
+% stores in the second argument, which must be a control sequence.
+% \begin{macrocode}
+\newcommand*{\@gls@getgrouptitle}[2]{%
+% \end{macrocode}
+% Even if the argument appears to be a single letter, it won't be
+% considered a single letter by \cs{dtl@ifsingle} if it's an active
+% character.
+% \begin{macrocode}
+ \dtl@ifsingle{#1}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+ {%
+ \ifboolexpr{test{\ifstrequal{#1}{glssymbols}}
+ or test{\ifstrequal{#1}{glsnumbers}}}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+ {%
+ \def#2{#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@gls@noidx@getgrouptitle}
+%\changes{4.04}{2014-03-06}{new}
+% Version for the no-indexing app option:
+% \begin{macrocode}
+\newcommand*{\@gls@noidx@getgrouptitle}[2]{%
+ \DTLifint{#1}%
+ {\edef#2{\char#1\relax}}%
+ {%
+ \ifcsundef{#1groupname}{\def#2{#1}}{\letcs#2{#1groupname}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{definition}
+%\cs{glsgetgrouplabel}\marg{title}
+%\end{definition}
+%This command does the reverse to the previous command. The
+% argument is the group title, and it produces the group label.
+% Note that if you redefine \cs{glsgetgrouptitle}, you
+% will also need to redefine \cs{glsgetgrouplabel}.
+%\begin{macro}{\glsgetgrouplabel}
+%\changes{3.05}{2013-04-21}{fixed bug (typo in \cs{equal})}
+% \begin{macrocode}
+\newcommand*{\glsgetgrouplabel}[1]{%
+\ifthenelse{\equal{#1}{\glssymbolsgroupname}}{glssymbols}{%
+\ifthenelse{\equal{#1}{\glsnumbersgroupname}}{glsnumbers}{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+% The command \cs{setentrycounter} sets the entry's
+% associated counter (required by
+% \cs{glshypernumber} etc.) \ics{glslink} and
+% \ics{glsadd} encode the
+% \ics{glossary} argument so that the relevant counter is
+% set prior to the formatting command.
+%\begin{macro}{\setentrycounter}
+%\changes{3.0}{2011-04-02}{added optional argument}
+% \begin{macrocode}
+\newcommand*{\setentrycounter}[2][]{%
+ \def\@glo@counterprefix{#1}%
+ \ifx\@glo@counterprefix\@empty
+ \def\@glo@counterprefix{.}%
+ \else
+ \def\@glo@counterprefix{.#1.}%
+ \fi
+ \def\glsentrycounter{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The current glossary style can be set using
+% \cs{setglossarystyle}\marg{style}.
+%\begin{macro}{\setglossarystyle}
+%\changes{3.08a}{2013-09-28}{new}
+% \begin{macrocode}
+\newcommand*{\setglossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \csname @glsstyle@#1\endcsname
+ }%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{set default style if not already set}
+% Set the default style if it's not already set.
+% \begin{macrocode}
+ \ifx\@glossary@default@style\relax
+ \protected@edef\@glossary@default@style{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glossarystyle}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\newcommand*{\glossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \GlossariesWarning
+ {Deprecated command \string\glossarystyle.^^J
+ I recommend you switch to \string\setglossarystyle\space unless
+ you want to maintain backward compatibility}%
+ \setglossentrycompatibility
+ \csname @glsstyle@#1\endcsname
+% \end{macrocode}
+%\changes{3.13a}{2013-11-05}{fixed bug caused by using \cs{ifdef} instead of
+%\cs{ifcsdef}}
+% \begin{macrocode}
+ \ifcsdef{@glscompstyle@#1}%
+ {\setglossentrycompatibility\csuse{@glscompstyle@#1}}%
+ {}%
+ }%
+% \end{macrocode}
+%\changes{4.21}{2016-01-24}{set default style if not already set}
+% Set the default style if it isn't already set so that
+% \cs{printglossary} can warn if the fallback style is in use.
+% \begin{macrocode}
+ \ifx\@glossary@default@style\relax
+ \protected@edef\@glossary@default@style{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newglossarystyle}
+% New glossary styles can be defined using:
+%\begin{definition}
+% \cs{newglossarystyle}\marg{name}\marg{definition}
+%\end{definition}
+% The \meta{definition} argument should redefine
+% \env{theglossary}, \ics{glossaryheader},
+% \ics{glsgroupheading}, \ics{glossaryentryfield} and
+% \ics{glsgroupskip} (see \autoref{sec:code:styles} for the
+% definitions of predefined styles). Glossary styles should not
+% redefine \ics{glossarypreamble} and
+% \ics{glossarypostamble}, as
+% the user should be able to switch between styles without affecting
+% the pre- and postambles.
+%\changes{1.17}{2008-12-26}{made \cs{newglossarystyle} long}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\newcommand{\newglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \expandafter\def\csname @glsstyle@#1\endcsname{#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' is already defined}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\renewglossarystyle}
+%\changes{3.02}{2012-05-21}{new}
+%Code for this macro supplied by Marco Daniel.
+% \begin{macrocode}
+\newcommand{\renewglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries}{Glossary style `#1' isn't already defined}{}%
+ }%
+ {%
+ \csdef{@glsstyle@#1}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Glossary entries are encoded so that the second argument
+% to \ics{glossaryentryfield} is always specified as
+% \cs{glsnamefont}\marg{name}. This allows the
+% user to change the font used to display the name term
+% without having to redefine \ics{glossaryentryfield}.
+% The default uses the surrounding font, so in the list type
+% styles (which place the name in the optional argument to
+% \ics{item}) the name will appear in bold.
+%\begin{macro}{\glsnamefont}
+% \begin{macrocode}
+\newcommand*{\glsnamefont}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Each glossary entry has an associated number list (usually page
+% numbers) that indicate where in the document the entry has been
+% used. The format for these number lists can be changed using the
+% \gloskey[glslink]{format}\igloskey[glsadd]{format} key in commands like \ics{glslink}.
+% The default format is given by \cs{glshypernumber}. This takes
+% a single argument which may be a single number, a number range
+% or a number list. The number ranges are delimited with
+% \ics{delimR}, the number lists are delimited with
+% \ics{delimN}.
+%
+% If the document doesn't have hyperlinks, the numbers can be
+% displayed just as they are, but if the document supports
+% hyperlinks, the numbers should link to the relevant location.
+% This means extracting the individual numbers from the list or
+% ranges. The \isty{hyperref} package does this with the
+% \ics{hyperpage} command, but this is encoded for comma and
+% dash delimiters and only for the page counter, but this code needs
+% to be more general. So I have adapted the code used in the
+% \isty{hyperref} package.
+%\begin{macro}{\glshypernumber}
+%\changes{1.17}{2008-12-26}{modified to allow material
+% to be attached to location}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\ifcsundef{hyperlink}%
+{%
+ \def\glshypernumber#1{#1}%
+}%
+{%
+ \def\glshypernumber#1{\@glshypernumber#1\nohyperpage{}\@nil}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glshypernumber}
+% This code was provided by Heiko~Oberdiek to allow material
+% to be attached to the location.
+%\changes{1.17}{2008-12-26}{new}
+% \begin{macrocode}
+\def\@glshypernumber#1\nohyperpage#2#3\@nil{%
+ \ifx\\#1\\%
+ \else
+ \@delimR#1\delimR\delimR\\%
+ \fi
+ \ifx\\#2\\%
+ \else
+ #2%
+ \fi
+ \ifx\\#3\\%
+ \else
+ \@glshypernumber#3\@nil
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+% \cs{@delimR} displays a range of numbers for the counter
+% whose name is given by
+% \cs{@gls@counter} (which must be set prior to using
+% \cs{glshypernumber}).
+%\begin{macro}{\@delimR}
+% \begin{macrocode}
+\def\@delimR#1\delimR #2\delimR #3\\{%
+\ifx\\#2\\%
+ \@delimN{#1}%
+\else
+ \@gls@numberlink{#1}\delimR\@gls@numberlink{#2}%
+\fi}
+% \end{macrocode}
+%\end{macro}
+% \cs{@delimN} displays a list of individual numbers,
+% instead of a range:
+%\begin{macro}{\@delimN}
+% \begin{macrocode}
+\def\@delimN#1{\@@delimN#1\delimN \delimN\\}
+\def\@@delimN#1\delimN #2\delimN#3\\{%
+\ifx\\#3\\%
+ \@gls@numberlink{#1}%
+\else
+ \@gls@numberlink{#1}\delimN\@gls@numberlink{#2}%
+\fi
+}
+% \end{macrocode}
+%\end{macro}
+% The following code is modified from hyperref's
+% \cs{HyInd@pagelink} where
+% the name of the counter being used is given by
+% \cs{@gls@counter}.
+% \begin{macrocode}
+\def\@gls@numberlink#1{%
+\begingroup
+ \toks@={}%
+ \@gls@removespaces#1 \@nil
+\endgroup}
+% \end{macrocode}
+% \begin{macrocode}
+\def\@gls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\x{\the\toks@}%
+ \ifx\x\empty
+ \else
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added prefix to hyperlink}
+% \begin{macrocode}
+ \hyperlink{\glsentrycounter\@glo@counterprefix\the\toks@}%
+ {\the\toks@}%
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@gls@removespaces#2\@nil
+ }%
+ \fi
+}
+\long\def\@gls@ReturnAfterFi#1\fi{\fi#1}
+% \end{macrocode}
+%
+% The following commands will switch to the
+% appropriate font, and create a hyperlink, if hyperlinks are
+% supported. If hyperlinks are not supported, they will just
+% display their argument in the appropriate font.
+%\begin{macro}{\hyperrm}
+% \begin{macrocode}
+\newcommand*{\hyperrm}[1]{\textrm{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hypersf}
+% \begin{macrocode}
+\newcommand*{\hypersf}[1]{\textsf{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hypertt}
+% \begin{macrocode}
+\newcommand*{\hypertt}[1]{\texttt{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hyperbf}
+% \begin{macrocode}
+\newcommand*{\hyperbf}[1]{\textbf{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hypermd}
+% \begin{macrocode}
+\newcommand*{\hypermd}[1]{\textmd{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hyperit}
+% \begin{macrocode}
+\newcommand*{\hyperit}[1]{\textit{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hypersl}
+% \begin{macrocode}
+\newcommand*{\hypersl}[1]{\textsl{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hyperup}
+% \begin{macrocode}
+\newcommand*{\hyperup}[1]{\textup{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hypersc}
+% \begin{macrocode}
+\newcommand*{\hypersc}[1]{\textsc{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\hyperemph}
+% \begin{macrocode}
+\newcommand*{\hyperemph}[1]{\emph{\glshypernumber{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Acronyms}\label{sec:code:acronym}
+%\begin{macro}{\oldacronym}
+%\begin{definition}
+%\cs{oldacronym}\oarg{label}\marg{abbrv}\marg{long}\marg{key-val list}
+%\end{definition}
+% This emulates the way the old \isty{glossary} package defined
+% acronyms. It is equivalent to \ics{newacronym}\oarg{key-val
+% list}\marg{label}\marg{abbrv}\marg{long} and it additionally
+% defines the command \cs{}\meta{label} which is equivalent to
+% \cs{gls}\marg{label} (thus \meta{label} must only contain
+% alphabetical characters). If \meta{label} is omitted, \meta{abbrv}
+% is used. This only emulates the syntax of the old \isty{glossary}
+% package. The way the acronyms appear in the list of acronyms is
+% determined by the definition of \ics{newacronym} and the
+% glossary style.
+%
+% Note that \cs{}\meta{label} can't have an optional
+% argument if the \isty{xspace} package is loaded. If
+% \isty{xspace} hasn't been loaded then you can do
+% \cs{}\meta{label}\oarg{insert} but you can't do
+% \cs{}\meta{label}\oarg{key-val list}. For example if you define the
+% acronym svm, then you can do "\svm['s]" but you can't do
+% "\svm[format=textbf]". If the \isty{xspace} package is loaded,
+% "\svm['s]" will appear as "svm ['s]" which is unlikely to be
+% the desired result. In this case, you will need to use
+% \cs{gls} explicitly, e.g.\ "\gls{svm}['s]". Note that it is
+% up to the user to load \isty{xspace} if desired.
+%\changes{1.18}{2009-01-14}{new}
+%\changes{3.0}{2011-04-02}{replaced \cs{@ifundefined} with
+%\cs{ifcsundef}}
+% \begin{macrocode}
+\newcommand{\oldacronym}[4][\gls@label]{%
+ \def\gls@label{#2}%
+ \newacronym[#4]{#1}{#2}{#3}%
+ \ifcsundef{xspace}%
+ {%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\@ifstar{\noexpand\Gls{#1}}{\noexpand\gls{#1}}%
+ }%
+ }%
+ {%
+ \expandafter\edef\csname#1\endcsname{%
+ \noexpand\@ifstar{\noexpand\Gls{#1}\noexpand\xspace}{%
+ \noexpand\gls{#1}\noexpand\xspace}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{definition}
+% \cs{newacronym}\oarg{key-val list}\marg{label}\marg{abbrev}\marg{long}
+%\end{definition}
+% This is a quick way of defining acronyms,
+% using \ics{newglossaryentry} with the appropriate
+% values. It sets the
+% glossary type to \ics{acronymtype} which will be
+% "acronym" if the package option \pkgopt{acronym} has
+% been used, otherwise it will be the default glossary.
+% Since \cs{newacronym} merely calls \ics{newglossaryentry},
+% the acronym is treated like any other glossary entry.
+%
+% If you prefer a different format, you
+% can redefine \cs{newacronym} as required. The optional
+% argument can be used to override any of the settings.
+%
+% This is just a stub. It's redefined by commands like
+% \cs{SetDefaultAcronymStyle}.
+%\begin{macro}{\newacronym}
+% \begin{macrocode}
+ \newcommand{\newacronym}[4][]{}
+% \end{macrocode}
+%\changes{1.13}{2008-05-10}{Removed restriction on only using
+% \cs{newacronym} in the preamble}
+%\end{macro}
+% Set up some convenient short cuts. These need to be changed if
+% \cs{newacronym} is changed (or if the \gloskey{description} key
+% is changed).
+%
+%\begin{macro}{\acrpluralsuffix}
+%\changes{1.13}{2008-05-10}{New}
+% Plural suffix used by \cs{newacronym}. This just defaults to
+% \cs{glspluralsuffix} but is changed to include \cs{textup}
+% if the smallcaps option is used, so that the suffix doesn't appear
+% in small caps as it doesn't look right. For example,
+% \textsc{abcs} looks as though the ``s'' is part of the acronym, but
+% \textsc{abc}s looks as though the ``s'' is a plural suffix. Since
+% the entire text \texttt{abcs} is set in \cs{textsc}, \cs{textup}
+% is need to cancel it out.
+% \begin{macrocode}
+\newcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+% If \sty{garamondx} has been loaded, need to use \cs{textulc}
+% instead of \cs{textup}.
+%\begin{macro}{\glstextup}
+%\changes{3.09a}{2013-10-09}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glstextup}[1]{\ifdef\textulc{\textulc{#1}}{\textup{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+% The following are defined for compatibility with version 2.07 and
+% earlier.
+%\begin{macro}{\glsshortkey}
+% \begin{macrocode}
+\newcommand*{\glsshortkey}{short}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsshortpluralkey}
+% \begin{macrocode}
+\newcommand*{\glsshortpluralkey}{shortplural}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongkey}
+% \begin{macrocode}
+\newcommand*{\glslongkey}{long}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongpluralkey}
+% \begin{macrocode}
+\newcommand*{\glslongpluralkey}{longplural}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\acrfull}
+% Full form of the acronym.
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrfull}{\@gls@hyp@opt\ns@acrfull}
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{removed \cs{@sacrfull}}
+%\changes{3.0}{2011-04-02}{added starred version}
+% \begin{macrocode}
+\newcommand*\ns@acrfull[2][]{%
+ \new@ifnextchar[{\@acrfull{#1}{#2}}%
+ {\@acrfull{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@acrfull}
+%\changes{4.02}{2013-12-05}{now using \cs{acrfullfmt}}
+% Low-level macro:
+% \begin{macrocode}
+\def\@acrfull#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \acrfullfmt{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Using \cs{acrlinkfullformat} and \cs{acrfullformat} is now
+% deprecated as it can cause complications with the first letter
+% upper case variants, but the package needs to provide backward
+% compatibility support.
+%
+%\begin{macro}{\acrfullfmt}
+%\changes{4.02}{2013-12-05}{new}
+% No case change full format.
+% \begin{macrocode}
+\newcommand*{\acrfullfmt}[3]{%
+ \acrlinkfullformat{\@acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\acrlinkfullformat}
+% Format for full links like \ics{acrfull}. Syntax:
+% \cs{acrlinkfullformat}\marg{long cs}\marg{short
+% cs}\marg{options}\marg{label}\marg{insert}
+% \begin{macrocode}
+\newcommand{\acrlinkfullformat}[5]{%
+ \acrfullformat{#1{#3}{#4}[#5]}{#2{#3}{#4}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\acrfullformat}
+% Default full form is \meta{long} \parg{short}.
+%\changes{3.01}{2011-04-12}{removed \cs{acronymfont} as it should
+%already be set in the second argument.}
+% \begin{macrocode}
+\newcommand{\acrfullformat}[2]{#1\glsspace(#2)}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsspace}
+% Robust space to ensure it's written to the \texttt{.glsdefs} file.
+%\changes{4.08}{2014-07-30}{new}
+% \begin{macrocode}
+\newrobustcmd{\glsspace}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+% Default format for full acronym
+%\begin{macro}{\Acrfull}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Acrfull}{\@gls@hyp@opt\ns@Acrfull}
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added starred version}
+%\changes{4.08}{2014-07-30}{removed \cs{@sAcrfull}}
+% \begin{macrocode}
+\newcommand*\ns@Acrfull[2][]{%
+ \new@ifnextchar[{\@Acrfull{#1}{#2}}%
+ {\@Acrfull{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Low-level macro:
+% \begin{macrocode}
+\def\@Acrfull#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \Acrfullfmt{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Acrfullfmt}
+%\changes{4.02}{2013-12-05}{new}
+% First letter upper case full format.
+% \begin{macrocode}
+\newcommand*{\Acrfullfmt}[3]{%
+ \acrlinkfullformat{\@Acrlong}{\@acrshort}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ACRfull}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\ACRfull}{\@gls@hyp@opt\ns@ACRfull}
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added starred version}
+%\changes{4.08}{2014-07-30}{removed \cs{s@ACRfull}}
+% \begin{macrocode}
+\newcommand*\ns@ACRfull[2][]{%
+ \new@ifnextchar[{\@ACRfull{#1}{#2}}%
+ {\@ACRfull{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Low-level macro:
+% \begin{macrocode}
+\def\@ACRfull#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \ACRfullfmt{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ACRfullfmt}
+%\changes{4.02}{2013-12-05}{new}
+% All upper case full format.
+% \begin{macrocode}
+\newcommand*{\ACRfullfmt}[3]{%
+ \acrlinkfullformat{\@ACRlong}{\@ACRshort}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Plural:
+%\begin{macro}{\acrfullpl}
+%\changes{1.13}{2008-05-10}{new}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\acrfullpl}{\@gls@hyp@opt\ns@acrfullpl}
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added starred version}
+%\changes{4.08}{2014-07-30}{removed \cs{s@acrfullpl}}
+% \begin{macrocode}
+\newcommand*\ns@acrfullpl[2][]{%
+ \new@ifnextchar[{\@acrfullpl{#1}{#2}}%
+ {\@acrfullpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Low-level macro:
+% \begin{macrocode}
+\def\@acrfullpl#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \acrfullplfmt{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\acrfullplfmt}
+%\changes{4.02}{2013-12-05}{new}
+% No case change plural full format.
+% \begin{macrocode}
+\newcommand*{\acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Acrfullpl}
+%\changes{1.13}{2008-05-10}{new}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\Acrfullpl}{\@gls@hyp@opt\ns@Acrfullpl}
+% \end{macrocode}
+%\changes{4.08}{2014-07-30}{removed \cs{s@Acrfullpl}}
+%\changes{3.0}{2011-04-02}{added starred version}
+% \begin{macrocode}
+\newcommand*\ns@Acrfullpl[2][]{%
+ \new@ifnextchar[{\@Acrfullpl{#1}{#2}}%
+ {\@Acrfullpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Low-level macro:
+% \begin{macrocode}
+\def\@Acrfullpl#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \Acrfullplfmt{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Acrfullplfmt}
+%\changes{4.02}{2013-12-05}{new}
+% First letter upper case plural full format.
+%\changes{4.07}{2014-04-04}{fixed no case change bug}
+% \begin{macrocode}
+\newcommand*{\Acrfullplfmt}[3]{%
+ \acrlinkfullformat{\@Acrlongpl}{\@acrshortpl}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\ACRfullpl}
+%\changes{1.13}{2008-05-10}{new}
+%\changes{3.01}{2011-04-12}{made robust}
+%\changes{4.08}{2014-07-30}{switched to using \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd*{\ACRfullpl}{\@gls@hyp@opt\ns@ACRfullpl}
+% \end{macrocode}
+%\changes{3.0}{2011-04-02}{added starred version}
+%\changes{4.08}{2014-07-30}{removed \cs{s@ACRfullpl}}
+% \begin{macrocode}
+\newcommand*\ns@ACRfullpl[2][]{%
+ \new@ifnextchar[{\@ACRfullpl{#1}{#2}}%
+ {\@ACRfullpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Low-level macro:
+% \begin{macrocode}
+\def\@ACRfullpl#1#2[#3]{%
+% \end{macrocode}
+% Make it easier for acronym styles to change this:
+% \begin{macrocode}
+ \ACRfullplfmt{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ACRfullplfmt}
+%\changes{4.02}{2013-12-05}{new}
+% All upper case plural full format.
+% \begin{macrocode}
+\newcommand*{\ACRfullplfmt}[3]{%
+ \acrlinkfullformat{\@ACRlongpl}{\@ACRshortpl}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Predefined acronym styles}
+%\begin{macro}{\acronymfont}
+%This is only used with the additional acronym styles:
+% \begin{macrocode}
+\newcommand{\acronymfont}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\firstacronymfont}
+%This is only used with the additional acronym styles:
+%\changes{1.14}{2008-06-17}{new}
+% \begin{macrocode}
+\newcommand{\firstacronymfont}[1]{\acronymfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\acrnameformat}
+% The styles that allow an additional description use
+% \cs{acrnameformat}\marg{short}\marg{long} to determine what
+% information is displayed in the name.
+% \begin{macrocode}
+\newcommand*{\acrnameformat}[2]{\acronymfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+% Define some tokens used by \cs{newacronym}:
+%\begin{macro}{\glskeylisttok}
+% \begin{macrocode}
+\newtoks\glskeylisttok
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslabeltok}
+% \begin{macrocode}
+\newtoks\glslabeltok
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsshorttok}
+% \begin{macrocode}
+\newtoks\glsshorttok
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongtok}
+% \begin{macrocode}
+\newtoks\glslongtok
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\newacronymhook}
+% Provide a hook for \cs{newacronym}:
+% \begin{macrocode}
+\newcommand*{\newacronymhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetGenericNewAcronym}
+% New improved version of setting the acronym style.
+%\changes{4.02}{2013-12-05}{new}
+% \begin{macrocode}
+\newcommand*{\SetGenericNewAcronym}{%
+% \end{macrocode}
+% Change the behaviour of \cs{Glsentryname} to workaround expansion
+% issues that cause a problem for \cs{makefirstuc}
+% \begin{macrocode}
+ \let\@Gls@entryname\@Gls@acrentryname
+% \end{macrocode}
+% Change the way acronyms are defined:
+% \begin{macrocode}
+ \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},%
+ \GenericAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ }%
+% \end{macrocode}
+% Make sure that \ics{acrfull} etc reflects the new style:
+% \begin{macrocode}
+ \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}}}}%
+% \end{macrocode}
+% Make sure that \ics{glsentryfull} etc reflects the new style:
+% \begin{macrocode}
+ \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
+ \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GenericAcronymFields}
+%\changes{4.02}{2013-12-05}{new}
+% Fields used by \cs{SetGenericNewAcronym} that can be changed by
+% the acronym style.
+% \begin{macrocode}
+\newcommand*{\GenericAcronymFields}{description={\the\glslongtok}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\acronymentry}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{acronymentry}\marg{label}
+%\end{definition}
+% Display style for the name field in the list of acronyms.
+% \begin{macrocode}
+\newcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{#1}}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\acronymsort}
+%\begin{definition}
+%\cs{acronymsort}\marg{short}\marg{long}
+%\end{definition}
+% Default sort format for acronyms.
+% \begin{macrocode}
+\newcommand*{\acronymsort}[2]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\setacronymstyle}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{setacronymstyle}\marg{style name}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\setacronymstyle}[1]{%
+ \ifcsundef{@glsacr@dispstyle@#1}
+ {%
+ \PackageError{glossaries}{Undefined acronym style `#1'}{}%
+ }%
+ {%
+ \ifdefempty{\@glsacronymlists}%
+ {%
+ \DeclareAcronymList{\acronymtype}%
+ }%
+ {}%
+ \SetGenericNewAcronym
+ \GlsUseAcrStyleDefs{#1}%
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \defglsentryfmt[\@gls@type]{\GlsUseAcrEntryDispStyle{#1}}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newacronymstyle}
+%\changes{4.02}{2013-12-05}{new}
+%\begin{definition}
+%\cs{newacronymstyle}\marg{style name}\marg{entry format
+%definition}\marg{display definitions}
+%\end{definition}
+% Defines a new acronym style called \meta{style name}.
+% \begin{macrocode}
+\newcommand*{\newacronymstyle}[3]{%
+ \ifcsdef{@glsacr@dispstyle@#1}%
+ {%
+ \PackageError{glossaries}{Acronym style `#1' already exists}{}%
+ }%
+ {%
+ \csdef{@glsacr@dispstyle@#1}{#2}%
+ \csdef{@glsacr@styledefs@#1}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\renewacronymstyle}
+% Redefines the given acronym style.
+%\changes{4.03}{2014-01-20}{new}
+% \begin{macrocode}
+\newcommand*{\renewacronymstyle}[3]{%
+ \ifcsdef{@glsacr@dispstyle@#1}%
+ {%
+ \csdef{@glsacr@dispstyle@#1}{#2}%
+ \csdef{@glsacr@styledefs@#1}{#3}%
+ }%
+ {%
+ \PackageError{glossaries}{Acronym style `#1' doesn't exist}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsUseAcrEntryDispStyle}
+%\changes{4.02}{2013-12-05}{new}
+% \begin{macrocode}
+\newcommand*{\GlsUseAcrEntryDispStyle}[1]{\csuse{@glsacr@dispstyle@#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsUseAcrStyleDefs}
+%\changes{4.02}{2013-12-05}{new}
+% \begin{macrocode}
+\newcommand*{\GlsUseAcrStyleDefs}[1]{\csuse{@glsacr@styledefs@#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%Predefined acronym styles:
+%\begin{acrstyle}{long-short}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\meta{short}) acronym style.
+% \begin{macrocode}
+\newacronymstyle{long-short}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sp-short}
+%\changes{4.16}{2015-07-08}{new}
+% Similar to the previous style but allows the space between the
+% long and short form to be customized.
+% \begin{macrocode}
+\newacronymstyle{long-sp-short}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\glsacspace{##1}%
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{macro}{\glsacspace}
+%\changes{4.16}{2015-07-08}{new}
+% Space between long and short form for the above style.
+% This uses a non-breakable space if the short form is less than
+% 3em, otherwise it uses a regular space.
+% \begin{macrocode}
+\newcommand*{\glsacspace}[1]{%
+ \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}%
+ \ifdim\dimen@<3em~\else\space\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{acrstyle}{short-long}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{short} (\meta{long}) acronym style.
+% \begin{macrocode}
+\newacronymstyle{short-long}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylongpl{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylongpl{##1})%
+ }%
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{commented spurious EOL}
+% \begin{macrocode}
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sc-short}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\cs{textsc}\marg{short}) acronym style.
+% \begin{macrocode}
+\newacronymstyle{long-sc-short}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sm-short}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\cs{textsmaller}\marg{short}) acronym style.
+% \begin{macrocode}
+\newacronymstyle{long-sm-short}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{sc-short-long}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{short} (\cs{textsc}\marg{long}) acronym style.
+% \begin{macrocode}
+\newacronymstyle{sc-short-long}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{sm-short-long}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{short} (\cs{textsmaller}\marg{long}) acronym style.
+% \begin{macrocode}
+\newacronymstyle{sm-short-long}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-short-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{long-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sp-short-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% The space between the long and short form is given by
+% \cs{glsacspace}.
+% \begin{macrocode}
+\newacronymstyle{long-sp-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sp-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sp-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\glsacspace{##1}(\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sc-short-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\cs{textsc}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{long-sc-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sc-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sc-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sm-short-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\cs{textsmaller}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{long-sm-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sm-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sm-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{short-long-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{short} (\marg{long}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{sc-short-long-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\cs{textsc}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{sc-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sc-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sc-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{sm-short-long-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} (\cs{textsmaller}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{sm-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sm-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sm-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{dua}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} only acronym style.
+% \begin{macrocode}
+\newacronymstyle{dua}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifdefempty\glscustomtext
+ {%
+ \ifglshaslong{\glslabel}%
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form:
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Plural form, don't adjust case:
+% \begin{macrocode}
+ \glsentrylongpl{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Plural form, make first letter upper case:
+% \begin{macrocode}
+ \Glsentrylongpl{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsentrylongpl{\glslabel}\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Singular form, don't adjust case:
+% \begin{macrocode}
+ \glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, make first letter upper case:
+% \begin{macrocode}
+ \Glsentrylong{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsentrylong{\glslabel}\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Not an acronym:
+% \begin{macrocode}
+ \glsgenentryfmt
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{fixed bug in \cs{acrfullfmt}}
+% \begin{macrocode}
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})}}}%
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{fixed bug in \cs{acrfullplfmt}}
+% \begin{macrocode}
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}%
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{fixed bug in \cs{Acrfullplfmt}}
+% \begin{macrocode}
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{dua-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{long} only acronym style with user-supplied description.
+% \begin{macrocode}
+\newacronymstyle{dua-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{dua}%
+}%
+{%
+ \GlsUseAcrStyleDefs{dua}%
+ \renewcommand*{\GenericAcronymFields}{}%
+% \end{macrocode}
+%\changes{4.03}{2014-01-20}{commented spurious EOL}
+% \begin{macrocode}
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentrylong{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+}%
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{short}\cs{footnote}\marg{long} acronym style.
+% \begin{macrocode}
+\newacronymstyle{footnote}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+% \end{macrocode}
+% Need to ensure hyperlinks are switched off on first use:
+% \begin{macrocode}
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}}%
+ }%
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+% \end{macrocode}
+% Don't use footnotes for \ics{acrfull}:
+% \begin{macrocode}
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\Glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\acronymfont{\glsentryshort{##2}}##3\space
+ (\glsentrylong{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\acronymfont{\Glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{##2}}##3\space
+ (\glsentrylongpl{##2})}}}%
+% \end{macrocode}
+% Similarly for \ics{glsentryfull} etc:
+% \begin{macrocode}
+ \renewcommand*{\glsentryfull}[1]{%
+ \acronymfont{\glsentryshort{##1}}\space(\glsentrylong{##1})}%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \acronymfont{\Glsentryshort{##1}}\space(\glsentrylong{##1})}%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \acronymfont{\glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \acronymfont{\Glsentryshortpl{##1}}\space(\glsentrylongpl{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sc}
+%\changes{4.02}{2013-12-05}{new}
+% \cs{textsc}\marg{short}\cs{footnote}\marg{long} acronym style.
+% \begin{macrocode}
+\newacronymstyle{footnote-sc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+}%
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sm}
+%\changes{4.02}{2013-12-05}{new}
+% \cs{textsmaller}\marg{short}\cs{footnote}\marg{long} acronym style.
+% \begin{macrocode}
+\newacronymstyle{footnote-sm}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}%
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \meta{short}\cs{footnote}\marg{long} acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{footnote-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sc-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \cs{textsc}\marg{short}\cs{footnote}\marg{long} acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{footnote-sc-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sc}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sc}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sm-desc}
+%\changes{4.02}{2013-12-05}{new}
+% \cs{textsmaller}\marg{short}\cs{footnote}\marg{long} acronym style that has an
+% accompanying description (which the user needs to supply).
+% \begin{macrocode}
+\newacronymstyle{footnote-sm-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sm}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sm}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1}\space (\acronymfont{\glsentryshort{##1}})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%
+%
+%\begin{macro}{\DefineAcronymSynonyms}
+%\changes{2.04}{2009-11-10}{new}
+% \begin{macrocode}
+\newcommand*{\DefineAcronymSynonyms}{%
+% \end{macrocode}
+%\end{macro}
+% Short form
+%\begin{macro}{\acs}
+% \begin{macrocode}
+ \let\acs\acrshort
+% \end{macrocode}
+%\end{macro}
+% First letter uppercase short form
+%\begin{macro}{\Acs}
+% \begin{macrocode}
+ \let\Acs\Acrshort
+% \end{macrocode}
+%\end{macro}
+% Plural short form
+%\begin{macro}{\acsp}
+% \begin{macrocode}
+ \let\acsp\acrshortpl
+% \end{macrocode}
+%\end{macro}
+% First letter uppercase plural short form
+%\begin{macro}{\Acsp}
+% \begin{macrocode}
+ \let\Acsp\Acrshortpl
+% \end{macrocode}
+%\end{macro}
+% Long form
+%\begin{macro}{\acl}
+% \begin{macrocode}
+ \let\acl\acrlong
+% \end{macrocode}
+%\end{macro}
+% Plural long form
+%\begin{macro}{\aclp}
+% \begin{macrocode}
+ \let\aclp\acrlongpl
+% \end{macrocode}
+%\end{macro}
+% First letter upper case long form
+%\begin{macro}{\Acl}
+% \begin{macrocode}
+ \let\Acl\Acrlong
+% \end{macrocode}
+%\end{macro}
+% First letter upper case plural long form
+%\begin{macro}{\Aclp}
+% \begin{macrocode}
+ \let\Aclp\Acrlongpl
+% \end{macrocode}
+%\end{macro}
+% Full form
+%\begin{macro}{\acf}
+% \begin{macrocode}
+ \let\acf\acrfull
+% \end{macrocode}
+%\end{macro}
+% Plural full form
+%\begin{macro}{\acfp}
+% \begin{macrocode}
+ \let\acfp\acrfullpl
+% \end{macrocode}
+%\end{macro}
+% First letter upper case full form
+%\begin{macro}{\Acf}
+% \begin{macrocode}
+ \let\Acf\Acrfull
+% \end{macrocode}
+%\end{macro}
+% First letter upper case plural full form
+%\begin{macro}{\Acfp}
+% \begin{macrocode}
+ \let\Acfp\Acrfullpl
+% \end{macrocode}
+%\end{macro}
+% Standard form
+%\begin{macro}{\ac}
+% \begin{macrocode}
+ \let\ac\gls
+% \end{macrocode}
+%\end{macro}
+% First upper case standard form
+%\begin{macro}{\Ac}
+% \begin{macrocode}
+ \let\Ac\Gls
+% \end{macrocode}
+%\end{macro}
+% Standard plural form
+%\begin{macro}{\acp}
+% \begin{macrocode}
+ \let\acp\glspl
+% \end{macrocode}
+%\end{macro}
+% Standard first letter upper case plural form
+%\begin{macro}{\Acp}
+% \begin{macrocode}
+ \let\Acp\Glspl
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+% \end{macrocode}
+% Define synonyms if required
+% \begin{macrocode}
+\ifglsacrshortcuts
+ \DefineAcronymSynonyms
+\fi
+% \end{macrocode}
+%
+% These commands for setting the style are now deprecated but are
+% kept for backward compatibility.
+%
+%\begin{macro}{\SetDefaultAcronymDisplayStyle}
+% Sets the default acronym display style for given glossary.
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.11a}{2013-10-15}{changed to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetDefaultAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DefaultNewAcronymDef}
+% Sets up the acronym definition for the default style.
+% The information is provided by the tokens \cs{glslabeltok},
+% \cs{glsshorttok}, \cs{glslongtok} and \cs{glskeylisttok}.
+% \begin{macrocode}
+\newcommand*{\DefaultNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glsshorttok},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ firstplural={\acrfullformat{\noexpand\expandonce\noexpand\@glo@longpl}%
+ {\noexpand\expandonce\noexpand\@glo@shortpl}},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+% \end{macrocode}
+% Remaining options specified by the user:
+% \begin{macrocode}
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetDefaultAcronymStyle}
+%\changes{2.04}{2009-11-10}{new}
+% Set up the default acronym style:
+% \begin{macrocode}
+\newcommand*{\SetDefaultAcronymStyle}{%
+% \end{macrocode}
+% Set the display style:
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDefaultAcronymDisplayStyle{\@gls@type}%
+ }%
+% \end{macrocode}
+% Set up the definition of \cs{newacronym}:
+% \begin{macrocode}
+ \renewcommand{\newacronym}[4][]{%
+% \end{macrocode}
+% If user is just using the main glossary and hasn't identified it
+% as a list of acronyms, then update. (This is done to ensure
+% backwards compatibility with versions prior to 2.04).
+% \begin{macrocode}
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDefaultAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DefaultNewAcronymDef
+ }%
+ \renewcommand*{\acrpluralsuffix}{\glsacrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\acrfootnote}
+%\changes{3.0}{2011-04-02}{new}
+% Used by the footnote acronym styles.
+% \begin{macrocode}
+\newcommand*{\acrfootnote}[3]{\acrlinkfootnote{#1}{#2}{#3}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\acrlinkfootnote}
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\acrlinkfootnote}[3]{%
+ \footnote{\glslink[#1]{#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\acrnolinkfootnote}
+%\changes{3.0}{2011-04-02}{new}
+% \begin{macrocode}
+\newcommand*{\acrnolinkfootnote}[3]{%
+ \footnote{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetDescriptionFootnoteAcronymDisplayStyle}
+% Sets the acronym display style for given glossary for the
+% description and footnote combination.
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.0}{2011-04-02}{expanded options link options}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetDescriptionFootnoteAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+% \end{macrocode}
+%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
+%unwanted parenthetical material}
+% \begin{macrocode}
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused{\glslabel}%
+ {%
+ \acronymfont{\glsgenentryfmt}%
+ }%
+ {%
+ \firstacronymfont{\glsgenentryfmt}%
+ \ifglshassymbol{\glslabel}%
+ {%
+ \expandafter\protect\expandafter\acrfootnote\expandafter
+ {\@gls@link@opts}{\@gls@link@label}%
+ {%
+ \glsifplural
+ {\glsentrysymbolplural{\glslabel}}%
+ {\glsentrysymbol{\glslabel}}%
+ }%
+ }%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DescriptionFootnoteNewAcronymDef}
+% \begin{macrocode}
+\newcommand*{\DescriptionFootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ first={\the\glsshorttok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ symbol={\the\glslongtok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetDescriptionFootnoteAcronymStyle}
+% If a description and footnote are both required, store the long form
+% in the \gloskey{symbol} key. Store the short form in \gloskey{text}
+% key. Note that since the long form is stored in the symbol key,
+% if you want the long form to appear in the list of acronyms, you
+% need to use a glossary style that displays the symbol key.
+% \begin{macrocode}
+\newcommand*{\SetDescriptionFootnoteAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDescriptionFootnoteAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DescriptionFootnoteNewAcronymDef
+ }%
+% \end{macrocode}
+%
+% If \pkgopt{footnote} package option is specified, set the first
+% use to append the long form (stored in \gloskey{symbol}) as a
+% footnote.
+%\changes{1.12}{2008-03-08}{Added \cs{protect} before \cs{footnote}
+% and \cs{glslink}}
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDescriptionFootnoteAcronymDisplayStyle{\@gls@type}%
+ }%
+% \end{macrocode}
+% Redefine \ics{acronymfont} if small caps required. The plural suffix
+% is set in an upright font so that it remains in normal lower case,
+% otherwise it looks as though it's part of the acronym.
+%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
+%\cs{textsmaller} instead
+%of \cs{smaller}}
+% \begin{macrocode}
+ \ifglsacrsmallcaps
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+% \end{macrocode}
+% \begin{macrocode}
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \ifglsacrsmaller
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
+ \fi
+ \fi
+% \end{macrocode}
+% Check for package option clash
+% \begin{macrocode}
+ \ifglsacrdua
+ \PackageError{glossaries}{Option clash: `footnote' and `dua'
+ can't both be set}{}%
+ \fi
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetDescriptionDUAAcronymDisplayStyle}
+% Sets the acronym display style for given glossary with
+% description and dua combination.
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetDescriptionDUAAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DescriptionDUANewAcronymDef}
+% \begin{macrocode}
+\newcommand*{\DescriptionDUANewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glslongtok},%
+ sort={\the\glslongtok},
+ text={\the\glslongtok},%
+ first={\the\glslongtok},%
+ plural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ symbol={\the\glsshorttok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetDescriptionDUAAcronymStyle}
+% Description, don't use acronym and no footnote.
+% Note that the short form is stored in the \gloskey{symbol} key,
+% so if the short form needs to be displayed in the glossary,
+% use a style the displays the symbol.
+% \begin{macrocode}
+\newcommand*{\SetDescriptionDUAAcronymStyle}{%
+ \ifglsacrsmallcaps
+ \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
+ can't both be set}{}%
+ \else
+ \ifglsacrsmaller
+ \PackageError{glossaries}{Option clash: `smaller' and `dua'
+ can't both be set}{}%
+ \fi
+ \fi
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDescriptionDUAAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DescriptionDUANewAcronymDef
+ }%
+% \end{macrocode}
+% Set display.
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDescriptionDUAAcronymDisplayStyle{\@gls@type}%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetDescriptionAcronymDisplayStyle}
+% Sets the acronym display style for given glossary using
+% the description setting (but not \pkgopt{footnote} or \pkgopt{dua}).
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.07}{2013-07-05}{now using \cs{glsdoparenifnotempty}}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetDescriptionAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+% \end{macrocode}
+%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
+%unwanted parenthetical material}
+% \begin{macrocode}
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused{\glslabel}%
+ {%
+% \end{macrocode}
+% Move the inserted text outside of \cs{acronymfont}
+% \begin{macrocode}
+ \let\gls@org@insert\glsinsert
+ \let\glsinsert\@empty
+ \acronymfont{\glsgenentryfmt}\gls@org@insert
+ }%
+ {%
+ \glsgenentryfmt
+ \ifglshassymbol{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \def\@glo@symbol{\glsentrysymbolplural{\glslabel}}%
+ }%
+ {%
+ \def\@glo@symbol{\glsentrysymbol{\glslabel}}%
+ }%
+ \space(\protect\firstacronymfont
+ {\glscapscase
+ {\@glo@symbol}
+ {\@glo@symbol}
+ {\mfirstucMakeUppercase{\@glo@symbol}}})%
+ }%
+ {}%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DescriptionNewAcronymDef}
+% \begin{macrocode}
+\newcommand*{\DescriptionNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand
+ \acrnameformat{\the\glsshorttok}{\the\glslongtok}},%
+ sort={\the\glsshorttok},%
+ first={\the\glslongtok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ symbol={\noexpand\@glo@text},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok}%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetDescriptionAcronymStyle}
+% Option \pkgopt{description} is used, but not \pkgopt{dua}
+% or \pkgopt{footnote}.
+% Store long form in \gloskey{first} key
+% and short form in \gloskey{text} and \gloskey{symbol} key.
+% The name is stored using \ics{acrnameformat} to allow the
+% user to override the way the name is displayed in the
+% list of acronyms.
+% \begin{macrocode}
+\newcommand*{\SetDescriptionAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDescriptionAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DescriptionNewAcronymDef
+ }%
+% \end{macrocode}
+% Set display.
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDescriptionAcronymDisplayStyle{\@gls@type}%
+ }%
+% \end{macrocode}
+% Redefine \ics{acronymfont} if small caps required. The plural suffix
+% is set in an upright font so that it remains in normal lower case,
+% otherwise it looks as though it's part of the acronym.
+%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
+%\cs{textsmaller} instead
+%of \cs{smaller}}
+% \begin{macrocode}
+ \ifglsacrsmallcaps
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \ifglsacrsmaller
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
+ \fi
+ \fi
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetFootnoteAcronymDisplayStyle}
+% Sets the acronym display style for given glossary with
+% footnote setting (but not \pkgopt{description} or \pkgopt{dua}).
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetFootnoteAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+% \end{macrocode}
+%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
+%unwanted parenthetical material}
+% \begin{macrocode}
+ \ifdefempty\glscustomtext
+ {%
+% \end{macrocode}
+% Move the inserted text outside of \cs{acronymfont}
+% \begin{macrocode}
+ \let\gls@org@insert\glsinsert
+ \let\glsinsert\@empty
+ \ifglsused{\glslabel}%
+ {%
+ \acronymfont{\glsgenentryfmt}\gls@org@insert
+ }%
+ {%
+ \firstacronymfont{\glsgenentryfmt}\gls@org@insert
+ \ifglshaslong{\glslabel}%
+ {%
+ \expandafter\protect\expandafter\acrfootnote\expandafter
+ {\@gls@link@opts}{\@gls@link@label}%
+ {%
+ \glsifplural
+ {\glsentrylongpl{\glslabel}}%
+ {\glsentrylong{\glslabel}}%
+ }%
+ }%
+% \end{macrocode}
+%\changes{3.13a}{2013-11-05}{fixed missing argument bug}
+% \begin{macrocode}
+ {}%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\FootnoteNewAcronymDef}
+% \begin{macrocode}
+\newcommand*{\FootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ first={\the\glsshorttok},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetFootnoteAcronymStyle}
+% If \pkgopt{footnote} package option is specified, set the first
+% use to append the long form (stored in \gloskey{description}) as a
+% footnote.
+% Use the \gloskey{description} key to store the long form.
+% \begin{macrocode}
+\newcommand*{\SetFootnoteAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetFootnoteAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \FootnoteNewAcronymDef
+ }%
+% \end{macrocode}
+% Set display
+%\changes{1.12}{2008-03-08}{Added \cs{protect} before \cs{footnote} and
+% \cs{glslink}}
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetFootnoteAcronymDisplayStyle{\@gls@type}%
+ }%
+% \end{macrocode}
+% Redefine \ics{acronymfont} if small caps required. The plural suffix
+% is set in an upright font so that it remains in normal lower case,
+% otherwise it looks as though it's part of the acronym.
+%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
+%\cs{textsmaller} instead
+%of \cs{smaller}}
+% \begin{macrocode}
+ \ifglsacrsmallcaps
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \ifglsacrsmaller
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}%
+ \fi
+ \fi
+% \end{macrocode}
+% Check for option clash
+% \begin{macrocode}
+ \ifglsacrdua
+ \PackageError{glossaries}{Option clash: `footnote' and `dua'
+ can't both be set}{}%
+ \fi
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdoparenifnotempty}
+% Do a space followed by the argument if the argument doesn't expand
+% to empty or \cs{relax}. If argument isn't empty (or \cs{relax}), apply
+% the macro to it given in the second argument.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsdoparenifnotempty}[2]{%
+ \protected@edef\gls@tmp{#1}%
+ \ifdefempty\gls@tmp
+ {}%
+ {%
+ \ifx\gls@tmp\@gls@default@value
+ \else
+ \space (#2{#1})%
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetSmallAcronymDisplayStyle}
+% Sets the acronym display style for given glossary where neither
+% footnote nor description is required, but smallcaps or smaller
+% specified.
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetSmallAcronymDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{%
+% \end{macrocode}
+%\changes{4.02}{2013-12-05}{Moved check for empty custom text to prevent
+%unwanted parenthetical material}
+% \begin{macrocode}
+ \ifdefempty\glscustomtext
+ {%
+% \end{macrocode}
+% Move the inserted text outside of \cs{acronymfont}
+% \begin{macrocode}
+ \let\gls@org@insert\glsinsert
+ \let\glsinsert\@empty
+ \ifglsused{\glslabel}%
+ {%
+ \acronymfont{\glsgenentryfmt}\gls@org@insert
+ }%
+ {%
+ \glsgenentryfmt
+ \ifglshassymbol{\glslabel}%
+ {%
+ \glsifplural
+ {%
+ \def\@glo@symbol{\glsentrysymbolplural{\glslabel}}%
+ }%
+ {%
+ \def\@glo@symbol{\glsentrysymbol{\glslabel}}%
+ }%
+ \space
+ (\glscapscase
+ {\firstacronymfont{\@glo@symbol}}%
+ {\firstacronymfont{\@glo@symbol}}%
+ {\firstacronymfont{\mfirstucMakeUppercase{\@glo@symbol}}})%
+ }%
+ {}%
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SmallNewAcronymDef}
+%\changes{3.02}{2012-05-21}{fixed broken short and long plural}
+% \begin{macrocode}
+\newcommand*{\SmallNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+% \end{macrocode}
+% Default to the short plural.
+% \begin{macrocode}
+ plural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ first={\the\glslongtok},%
+% \end{macrocode}
+% Default to the long plural.
+% \begin{macrocode}
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\noexpand\@glo@first},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ symbol={\the\glsshorttok},%
+% \end{macrocode}
+% Default to the short plural.
+% \begin{macrocode}
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetSmallAcronymStyle}
+% Neither footnote nor description required, but smallcaps or
+% smaller specified.
+% Use the \gloskey{symbol} key to store the short form and
+% \gloskey{first} to store the long form.
+% \begin{macrocode}
+\newcommand*{\SetSmallAcronymStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetSmallAcronymDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \SmallNewAcronymDef
+ }%
+% \end{macrocode}
+% Change the display since \gloskey{first} only contains long form.
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetSmallAcronymDisplayStyle{\@gls@type}%
+ }%
+% \end{macrocode}
+% Redefine \ics{acronymfont} if small caps required. The plural suffix
+% is set in an upright font so that it remains in normal lower case,
+% otherwise it looks as though it's part of the acronym.
+%\changes{1.19}{2009-03-02}{changed \cs{acronymfont} to use
+%\cs{textsmaller} instead
+%of \cs{smaller}}
+% \begin{macrocode}
+ \ifglsacrsmallcaps
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}
+ \renewcommand*{\acrpluralsuffix}{\glsupacrpluralsuffix}%
+ \else
+ \renewcommand*{\acronymfont}[1]{\textsmaller{##1}}
+ \fi
+% \end{macrocode}
+% check for option clash
+% \begin{macrocode}
+ \ifglsacrdua
+ \ifglsacrsmallcaps
+ \PackageError{glossaries}{Option clash: `smallcaps' and `dua'
+ can't both be set}{}%
+ \else
+ \PackageError{glossaries}{Option clash: `smaller' and `dua'
+ can't both be set}{}%
+ \fi
+ \fi
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetDUADisplayStyle}
+% Sets the acronym display style for given glossary with dua
+% setting.
+%\changes{2.04}{2009-11-10}{new}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetDUADisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DUANewAcronymDef}
+% \begin{macrocode}
+\newcommand*{\DUANewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glsshorttok},%
+ text={\the\glslongtok},%
+ first={\the\glslongtok},%
+ plural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ firstplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\noexpand\expandonce\noexpand\@glo@longpl},%
+ symbol={\the\glsshorttok},%
+ symbolplural={\noexpand\expandonce\noexpand\@glo@shortpl},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetDUAStyle}
+% Always expand acronyms.
+% \begin{macrocode}
+\newcommand*{\SetDUAStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetDUADisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \DUANewAcronymDef
+ }%
+% \end{macrocode}
+% Set the display
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetDUADisplayStyle{\@gls@type}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\SetAcronymStyle}
+% \begin{macrocode}
+\newcommand*{\SetAcronymStyle}{%
+ \SetDefaultAcronymStyle
+ \ifglsacrdescription
+ \ifglsacrfootnote
+ \SetDescriptionFootnoteAcronymStyle
+ \else
+ \ifglsacrdua
+ \SetDescriptionDUAAcronymStyle
+ \else
+ \SetDescriptionAcronymStyle
+ \fi
+ \fi
+ \else
+ \ifglsacrfootnote
+ \SetFootnoteAcronymStyle
+ \else
+ \ifthenelse{\boolean{glsacrsmallcaps}\OR
+ \boolean{glsacrsmaller}}%
+ {%
+ \SetSmallAcronymStyle
+ }%
+ {%
+ \ifglsacrdua
+ \SetDUAStyle
+ \fi
+ }%
+ \fi
+ \fi
+}
+% \end{macrocode}
+% Set the acronym style according to the package options
+% \begin{macrocode}
+\SetAcronymStyle
+% \end{macrocode}
+%\end{macro}
+%
+% Allow user to define their own custom acronyms.
+% (For compatibility with versions before v3.0, the short form is
+% stored in the user1 key, the plural short form is stored in the
+% user2 key, the long form is stored in the user3 key and the
+% plural long form is stored in the user4 key.) Defaults to
+% displaying only the acronym with the long form as the description.
+%\begin{macro}{\SetCustomDisplayStyle}
+% Sets the acronym display style.
+%\changes{2.06}{2010-06-14}{new}
+%\changes{3.11a}{2013-10-15}{updated to use \cs{defglsentryfmt}}
+% \begin{macrocode}
+\newcommand*{\SetCustomDisplayStyle}[1]{%
+ \defglsentryfmt[#1]{\glsgenentryfmt}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\CustomAcronymFields}
+%\changes{2.06}{2010-06-14}{new}
+% \begin{macrocode}
+\newcommand*{\CustomAcronymFields}{%
+ name={\the\glsshorttok},%
+ description={\the\glslongtok},%
+ first={\acrfullformat{\the\glslongtok}{\the\glsshorttok}},%
+ firstplural={\acrfullformat
+ {\noexpand\glsentrylongpl{\the\glslabeltok}}%
+ {\noexpand\glsentryshortpl{\the\glslabeltok}}},%
+% \end{macrocode}
+% \changes{4.01}{2013-11-16}{inserted missing comma}
+% \begin{macrocode}
+ text={\the\glsshorttok},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\CustomNewAcronymDef}
+%\changes{2.06}{2010-06-14}{new}
+% \begin{macrocode}
+\newcommand*{\CustomNewAcronymDef}{%
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ user1={\the\glsshorttok},%
+ user2={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ user3={\the\glslongtok},%
+ user4={\the\glslongtok\noexpand\acrpluralsuffix},%
+ \CustomAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SetCustomStyle}
+%\changes{2.06}{2010-06-14}{new}
+% \begin{macrocode}
+\newcommand*{\SetCustomStyle}{%
+ \renewcommand{\newacronym}[4][]{%
+ \ifx\@glsacronymlists\@empty
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ \SetCustomDisplayStyle{\@glo@type}%
+ \fi
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \CustomNewAcronymDef
+ }%
+% \end{macrocode}
+% Set the display
+% \begin{macrocode}
+ \@for\@gls@type:=\@glsacronymlists\do{%
+ \SetCustomDisplayStyle{\@gls@type}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% \section{Predefined Glossary Styles}\label{sec:code:styles}
+% The \sty{glossaries} bundle comes with some predefined glossary
+% styles. These need to be loaded now for the \pkgopt{style} option
+% to use them.
+%
+% First, the glossary hyper-navigation commands need to be loaded.
+% \begin{macrocode}
+\RequirePackage{glossary-hypernav}
+% \end{macrocode}
+% The styles that use list-like environments. These are not loaded
+% if the \pkgopt{nolist} option is used:
+% \begin{macrocode}
+\@gls@loadlist
+% \end{macrocode}
+% The styles that use the \env{longtable} environment. These are
+% not loaded if the \pkgopt{nolong} package option is used.
+% \begin{macrocode}
+\@gls@loadlong
+% \end{macrocode}
+% The styles that use the \env{supertabular} environment. These are
+% not loaded if the \pkgopt{nosuper} package option is used or if
+% the \isty{supertabular} package isn't installed.
+% \begin{macrocode}
+\@gls@loadsuper
+% \end{macrocode}
+% The tree-like styles. These are not loaded if the \pkgopt{notree}
+% package option is used.
+% \begin{macrocode}
+\@gls@loadtree
+% \end{macrocode}
+% The default glossary style is set according to the \pkgopt{style} package
+% option, but can be overridden by \ics{glossarystyle}. The
+% required style must be defined at this point.
+% \begin{macrocode}
+\ifx\@glossary@default@style\relax
+\else
+ \setglossarystyle{\@glossary@default@style}
+\fi
+% \end{macrocode}
+%
+%\section{Debugging Commands}
+%
+%\begin{macro}{\showgloparent}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showgloparent}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloparent}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@parent\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglolevel}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglolevel}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglolevel}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@level\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglotext}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglotext}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglotext}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@text\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showgloplural}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showgloplural}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@plural\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglofirst}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglofirst}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglofirst}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@first\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglofirstpl}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglofirstpl}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglofirstpl}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstpl\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglotype}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglotype}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglotype}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@type\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglocounter}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglocounter}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglocounter}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@counter\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglouseri}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglouseri}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglouseri}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useri\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglouserii}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglouserii}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglouserii}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@userii\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglouseriii}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglouseriii}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglouseriii}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useriii\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglouseriv}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglouseriv}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglouseriv}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@useriv\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglouserv}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglouserv}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglouserv}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@userv\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglouservi}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglouservi}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglouservi}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@uservi\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showgloname}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showgloname}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloname}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@name\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglodesc}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglodesc}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglodesc}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@desc\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglodescplural}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglodescplural}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglodescplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descplural\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglosort}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglosort}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosort}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@sort\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglosymbol}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglosymbol}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosymbol}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbol\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglosymbolplural}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglosymbolplural}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosymbolplural}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolplural\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showgloshort}
+%\changes{3.11a}{2013-10-15}{new}
+%\begin{definition}
+%\cs{showgloshort}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloshort}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@short\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglolong}
+%\changes{3.11a}{2013-10-15}{new}
+%\begin{definition}
+%\cs{showglolong}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglolong}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@long\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showgloindex}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showgloindex}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloindex}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@index\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showgloflag}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showgloflag}\marg{label}
+%\end{definition}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloflag}[1]{%
+ \expandafter\show\csname ifglo@\glsdetoklabel{#1}@flag\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showgloloclist}
+%\changes{4.04}{2014-03-06}{new}
+%\begin{definition}
+%\cs{showgloloclist}\marg{label}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\showgloloclist}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@loclist\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglofield}
+%\changes{4.16}{2015-07-08}{new}
+%\begin{definition}
+%\cs{showglofield}\marg{label}\marg{field}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\showglofield}[2]{%
+ \csshow{glo@\glsdetoklabel{#1}@#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showacronymlists}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showacronymlists}
+%\end{definition}
+% Show list of glossaries that have been flagged as a list of
+% acronyms.
+% \begin{macrocode}
+\newcommand*{\showacronymlists}{%
+ \show\@glsacronymlists
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglossaries}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglossaries}
+%\end{definition}
+% Show list of defined glossaries.
+% \begin{macrocode}
+\newcommand*{\showglossaries}{%
+ \show\@glo@types
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglossaryin}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglossaryin}\marg{glossary-label}
+%\end{definition}
+% Show the `in' extension for the given glossary.
+% \begin{macrocode}
+\newcommand*{\showglossaryin}[1]{%
+ \expandafter\show\csname @glotype@#1@in\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglossaryout}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglossaryout}\marg{glossary-label}
+%\end{definition}
+% Show the `out' extension for the given glossary.
+% \begin{macrocode}
+\newcommand*{\showglossaryout}[1]{%
+ \expandafter\show\csname @glotype@#1@out\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglossarytitle}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglossarytitle}\marg{glossary-label}
+%\end{definition}
+% Show the title for the given glossary.
+% \begin{macrocode}
+\newcommand*{\showglossarytitle}[1]{%
+ \expandafter\show\csname @glotype@#1@title\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglossarycounter}
+%\changes{3.0}{2011-04-02}{new}
+%\begin{definition}
+%\cs{showglossarycounter}\marg{glossary-label}
+%\end{definition}
+% Show the counter for the given glossary.
+% \begin{macrocode}
+\newcommand*{\showglossarycounter}[1]{%
+ \expandafter\show\csname @glotype@#1@counter\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\showglossaryentries}
+%\changes{3.0}{2011-04-02}{new}
+%\changes{3.02}{2012-05-21}{fixed misspelt command}
+%\begin{definition}
+%\cs{showglossaryentries}\marg{glossary-label}
+%\end{definition}
+% Show the list of entry labels for the given glossary.
+% \begin{macrocode}
+\newcommand*{\showglossaryentries}[1]{%
+ \expandafter\show\csname glolist@#1\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Compatibility with version 2.07 and below}
+%
+% In order to fix some bugs in v3.0, it was necessary to change the
+% way information is written to the \filetype{glo} file, which also meant
+% a change in the format of the Xindy style file. The compatibility
+% option is meant for documents that use a customised Xindy style
+% file with \ics{noist}. With the compatibility option, hopefully
+% \app{xindy} will still be able to process the old document, but
+% the bugs will remain. The issues in versions 2.07 and below:
+%\begin{itemize}
+% \item With \pkgopt{xindy}, the counter used by the entry was
+% hard-coded into the Xindy style file. This meant that you couldn't
+% use the \gloskey[glslink]{counter} to swap counters.
+% \item With both \pkgopt{xindy} and \pkgopt{makeindex}, if used
+% with \sty{hyperref} and \cs{theH}\meta{counter} was different to
+% \cs{thecounter}, the link in the location number would be
+% undefined.
+%\end{itemize}
+% \begin{macrocode}
+\csname ifglscompatible-2.07\endcsname
+ \RequirePackage{glossaries-compatible-207}
+\fi
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-prefix.sty>
+% \end{macrocode}
+%\fi
+%\chapter{Prefix Support (glossaries-prefix Code)}
+%\label{sec:code:prefix}
+%\changes{3.14a}{2013-11-12}{new}
+% This package provides a means of adding prefixes to your glossary
+% entries. For example, you may want to use \qt{a
+% \cs{gls}\marg{label}} on first use but use \qt{an
+% \cs{gls}\marg{label}} on subsequent use.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-prefix}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Pass all options to \sty{glossaries}:
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
+% \end{macrocode}
+% Process options:
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% Load \sty{glossaries}:
+% \begin{macrocode}
+\RequirePackage{glossaries}
+% \end{macrocode}
+% Add the new keys:
+% \begin{macrocode}
+\define@key{glossentry}{prefixfirst}{\def\@glo@entryprefixfirst{#1}}%
+\define@key{glossentry}{prefixfirstplural}{\def\@glo@entryprefixfirstplural{#1}}%
+\define@key{glossentry}{prefix}{\def\@glo@entryprefix{#1}}%
+\define@key{glossentry}{prefixplural}{\def\@glo@entryprefixplural{#1}}%
+% \end{macrocode}
+% Add them to \ics{@gls@keymap}:
+% \begin{macrocode}
+\appto\@gls@keymap{,%
+ {prefixfirst}{prefixfirst},%
+ {prefixfirstplural}{prefixfirstplural},%
+ {prefix}{prefix},%
+ {prefixplural}{prefixplural}%
+ }
+% \end{macrocode}
+% Set the default values:
+% \begin{macrocode}
+\appto\@newglossaryentryprehook{%
+ \def\@glo@entryprefix{}%
+ \def\@glo@entryprefixplural{}%
+ \let\@glo@entryprefixfirst\@gls@default@value
+ \let\@glo@entryprefixfirstplural\@gls@default@value
+}
+% \end{macrocode}
+% Set the assignment code:
+% \begin{macrocode}
+\appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{prefix}{\@glo@entryprefix}%
+ \gls@assign@field{}{\@glo@label}{prefixplural}{\@glo@entryprefixplural}%
+% \end{macrocode}
+% If \gloskey{prefixfirst} has not been supplied, make it the same
+% as \gloskey{prefix}.
+% \begin{macrocode}
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefix\endcsname}{\@glo@label}{prefixfirst}%
+ {\@glo@entryprefixfirst}%
+% \end{macrocode}
+% If \gloskey{prefixfirstplural} has not been supplied, make it the same
+% as \gloskey{prefixplural}.
+% \begin{macrocode}
+ \expandafter\gls@assign@field\expandafter
+ {\csname glo@\@glo@label @prefixplural\endcsname}{\@glo@label}%
+ {prefixfirstplural}{\@glo@entryprefixfirstplural}%
+}
+% \end{macrocode}
+%
+% Define commands to access these fields:
+%\begin{macro}{\glsentryprefixfirst}
+% \begin{macrocode}
+\newcommand*{\glsentryprefixfirst}[1]{\csuse{glo@#1@prefixfirst}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryprefixfirstplural}
+% \begin{macrocode}
+\newcommand*{\glsentryprefixfirstplural}[1]{\csuse{glo@#1@prefixfirstplural}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryprefix}
+% \begin{macrocode}
+\newcommand*{\glsentryprefix}[1]{\csuse{glo@#1@prefix}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryprefixplural}
+% \begin{macrocode}
+\newcommand*{\glsentryprefixplural}[1]{\csuse{glo@#1@prefixplural}}
+% \end{macrocode}
+%\end{macro}
+%
+% Now for the initial upper case variants:
+%\begin{macro}{\Glsentryprefixfirst}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryprefixfirst}[1]{%
+ \protected@edef\@glo@text{\csname glo@#1@prefixfirst\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryprefixfirstplural}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryprefixfirstplural}[1]{%
+ \protected@edef\@glo@text{\csname glo@#1@prefixfirstplural\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryprefix}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryprefix}[1]{%
+ \protected@edef\@glo@text{\csname glo@#1@prefix\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsentryprefixplural}
+% \begin{macrocode}
+\newrobustcmd*{\Glsentryprefixplural}[1]{%
+ \protected@edef\@glo@text{\csname glo@#1@prefixplural\endcsname}%
+ \xmakefirstuc\@glo@text
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define commands to determine if the prefix keys have been set:
+%\begin{macro}{\ifglshasprefix}
+% \begin{macrocode}
+\newcommand*{\ifglshasprefix}[3]{%
+ \ifcsempty{glo@#1@prefix}%
+ {#3}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ifglshasprefixplural}
+% \begin{macrocode}
+\newcommand*{\ifglshasprefixplural}[3]{%
+ \ifcsempty{glo@#1@prefixplural}%
+ {#3}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ifglshasprefixfirst}
+% \begin{macrocode}
+\newcommand*{\ifglshasprefixfirst}[3]{%
+ \ifcsempty{glo@#1@prefixfirst}%
+ {#3}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\ifglshasprefixfirstplural}
+% \begin{macrocode}
+\newcommand*{\ifglshasprefixfirstplural}[3]{%
+ \ifcsempty{glo@#1@prefixfirstplural}%
+ {#3}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Define commands that insert the prefix before commands like \ics{gls}:
+%\begin{macro}{\pgls}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd{\pgls}{\@gls@hyp@opt\@pgls}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@spgls}
+%\begin{macro}{\@pgls}
+% Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@pgls@{#1}{#2}}%
+ {\@pgls@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@pgls@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@pgls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \glsentryprefix{#2}%
+ }%
+ {%
+ \glsentryprefixfirst{#2}%
+ }%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Similarly for the plural version:
+%\begin{macro}{\pglspl}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd{\pglspl}{\@gls@hyp@opt\@pglspl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@spglspl}
+%\begin{macro}{\@pglspl}
+% Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@pglspl@{#1}{#2}}%
+ {\@pglspl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@pglspl@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@pglspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \glsentryprefixplural{#2}%
+ }%
+ {%
+ \glsentryprefixfirstplural{#2}%
+ }%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Now for the first letter upper case versions:
+%\begin{macro}{\Pgls}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd{\Pgls}{\@gls@hyp@opt\@Pgls}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@sPgls}
+%\begin{macro}{\@Pgls}
+% Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@Pgls}[2][]{%
+ \new@ifnextchar[%
+ {\@Pgls@{#1}{#2}}%
+ {\@Pgls@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Pgls@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Pgls@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefix{#2}%
+ {%
+ \Glsentryprefix{#2}%
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirst{#2}%
+ {%
+ \Glsentryprefixfirst{#2}%
+ \@gls@{#1}{#2}[#3]%
+ }%
+ {\@Gls@{#1}{#2}[#3]}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Similarly for the plural version:
+%\begin{macro}{\Pglspl}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd{\Pglspl}{\@gls@hyp@opt\@Pglspl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@sPglspl}
+%\begin{macro}{\@Pglspl}
+% Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@Pglspl}[2][]{%
+ \new@ifnextchar[%
+ {\@Pglspl@{#1}{#2}}%
+ {\@Pglspl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Pglspl@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Pglspl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \ifglshasprefixplural{#2}%
+ {%
+ \Glsentryprefixplural{#2}%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ {%
+ \ifglshasprefixfirstplural{#2}%
+ {%
+ \Glsentryprefixfirstplural{#2}%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+ {\@Glspl@{#1}{#2}[#3]}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Finally the all upper case versions:
+%\begin{macro}{\PGLS}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd{\PGLS}{\@gls@hyp@opt\@PGLS}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@sPGLS}
+%\begin{macro}{\@PGLS}
+% Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@PGLS}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLS@{#1}{#2}}%
+ {\@PGLS@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@PGLS@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@PGLS@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \mfirstucMakeUppercase{\glsentryprefix{#2}}%
+ }%
+ {%
+ \mfirstucMakeUppercase{\glsentryprefixfirst{#2}}%
+ }%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Plural version:
+%\begin{macro}{\PGLSpl}
+%\changes{4.08}{2014-07-30}{changed to use \cs{@gls@hyp@opt}}
+% \begin{macrocode}
+\newrobustcmd{\PGLSpl}{\@gls@hyp@opt\@PGLSpl}
+% \end{macrocode}
+%\end{macro}
+%\changes{4.08}{2014-07-30}{removed \@sPGLSpl}
+%\begin{macro}{\@PGLSpl}
+% Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@PGLSpl}[2][]{%
+ \new@ifnextchar[%
+ {\@PGLSpl@{#1}{#2}}%
+ {\@PGLSpl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@PGLSpl@}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@PGLSpl@#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \ifglsused{#2}%
+ {%
+ \mfirstucMakeUppercase{\glsentryprefixplural{#2}}%
+ }%
+ {%
+ \mfirstucMakeUppercase{\glsentryprefixfirstplural{#2}}%
+ }%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-prefix.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-hypernav.sty>
+% \end{macrocode}
+%\fi
+%\chapter{Glossary Styles}
+% \section{Glossary hyper-navigation definitions (glossary-hypernav package)}
+%\label{sec:code:hypernav}
+% Package Definition:
+% \begin{macrocode}
+\ProvidesPackage{glossary-hypernav}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%
+% The commands defined in this package are provided to
+% help navigate around the groups within a glossary
+% (see \autoref{sec:code:printglos}.)
+% \ics{printglossary} (and \ics{printglossaries})
+% set \cs{@glo@type} to the label of the current
+% glossary. This is used to create a unique hypertarget in
+% the event of multiple glossaries.
+%\\[10pt]
+% \cs{glsnavhyperlink}\oarg{type}\marg{label}\marg{text}\\[10pt]
+% This command makes \meta{text} a hyperlink to the glossary group
+% whose label is given by \meta{label} for the glossary given
+% by \meta{type}.
+%\begin{macro}{\glsnavhyperlink}
+%\changes{1.14}{2008-06-17}{changed \cs{edef} to \cs{protected@edef}}
+%\changes{1.17}{2008-12-26}{replaced \cs{hyperlink} to
+%\cs{@glslink}}
+% \begin{macrocode}
+\newcommand*{\glsnavhyperlink}[3][\@glo@type]{%
+ \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsnavhyperlinkname}
+%\changes{4.29}{2017-01-19}{new}
+%Expands to the hypertarget name. The first argument is the glossary
+%type. The second argument is the group label.
+% \begin{macrocode}
+\newcommand*{\glsnavhyperlinkname}[2]{glsn:#1@#2}
+% \end{macrocode}
+%\end{macro}
+%\vskip5pt
+% \cs{glsnavhypertarget}\oarg{type}\marg{label}\marg{text}\\[10pt]
+% This command makes \meta{text} a hypertarget for the glossary group
+% whose label is given by \meta{label} in the glossary given
+% by \meta{type}. If \meta{type} is omitted, \cs{@glo@type} is
+% used which is set by \ics{printglossary} to the current
+% glossary label.
+%\begin{macro}{\glsnavhypertarget}
+%\changes{1.14}{2008-06-17}{added write to aux file}
+%\changes{1.15}{2008-08-15}{added check if rerun required}
+%\changes{1.17}{2008-12-26}{replaced \cs{hypertarget} to
+%\cs{@glstarget}}
+% \begin{macrocode}
+\newcommand*{\glsnavhypertarget}[3][\@glo@type]{%
+ \@glsnavhypertarget{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%The actual code is now in an internal command that doesn't have an
+%optional argument, which makes it easier to save and restore the
+%original behaviour.
+%\begin{macro}{\@glsnavhypertarget}
+%\changes{4.32}{2017-08-24}{new}
+% \begin{macrocode}
+\newcommand*{\@glsnavhypertarget}[3]{%
+% \end{macrocode}
+% Add this group to the aux file for re-run check.
+% \begin{macrocode}
+ \protected@write\@auxout{}{\string\@gls@hypergroup{#1}{#2}}%
+% \end{macrocode}
+% Add the target.
+% \begin{macrocode}
+ \@glstarget{\glsnavhyperlinkname{#1}{#2}}{#3}%
+% \end{macrocode}
+% Check list of known groups to determine if a re-run is required.
+% \begin{macrocode}
+ \expandafter\let
+ \expandafter\@gls@list\csname @gls@hypergrouplist@#1\endcsname
+% \end{macrocode}
+% Iterate through list and terminate loop if this group is found.
+% \begin{macrocode}
+ \@for\@gls@elem:=\@gls@list\do{%
+ \ifthenelse{\equal{\@gls@elem}{#2}}{\@endfortrue}{}}%
+% \end{macrocode}
+% Check if list terminated prematurely.
+% \begin{macrocode}
+ \if@endfor
+ \else
+% \end{macrocode}
+% This group was not included in the list, so issue a warning.
+% \begin{macrocode}
+ \GlossariesWarningNoLine{Navigation panel
+ for glossary type `#1'^^Jmissing group `#2'}%
+ \gdef\gls@hypergrouprerun{%
+ \GlossariesWarningNoLine{Navigation panel
+ has changed. Rerun LaTeX}}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\gls@hypergrouprerun}
+% Give a warning at the end if re-run required
+%\changes{1.15}{2008-08-15}{new}
+% \begin{macrocode}
+\let\gls@hypergrouprerun\relax
+\AtEndDocument{\gls@hypergrouprerun}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@hypergroup}
+% This adds to (or creates) the command \cs{@gls@hypergrouplist@}\meta{glossary type}
+% which lists all groups for a given glossary, so that
+% the navigation bar only contains those groups that are present.
+% However it requires at least 2 runs to ensure the information is
+% up-to-date.
+%\changes{1.14}{2008-06-17}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@hypergroup}[2]{%
+\@ifundefined{@gls@hypergrouplist@#1}{%
+ \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{#2}%
+}{%
+ \expandafter\let\expandafter\@gls@tmp
+ \csname @gls@hypergrouplist@#1\endcsname
+ \expandafter\xdef\csname @gls@hypergrouplist@#1\endcsname{%
+ \@gls@tmp,#2}%
+}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The \cs{glsnavigation} command displays a simple glossary
+% group navigation.
+% The symbol and number elements are defined separately,
+% so that they can be suppressed if need be. (In earlier verions this
+% command will produce a link to all 28 groups, but some groups
+% may not be defined if there are groups that do not contain any
+% terms, in which case you will get an undefined hyperlink warning.
+% Version 1.14 changed this to only use labels for groups that are
+% present.)
+% Now for the whole navigation bit:
+%\begin{macro}{\glsnavigation}
+% \changes{1.14}{2008-06-17}{changed to only use labels for
+% groups that are present}
+% \begin{macrocode}
+\newcommand*{\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
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{switched to using
+%\cs{@gls@getgrouptitle}}
+% \begin{macrocode}
+ \@gls@getgrouptitle{\@gls@tmp}{\@gls@grptitle}%
+ \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}%
+ \let\@gls@between\glshypernavsep
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glshypernavsep}
+% Separator for the hyper navigation bar.
+% \begin{macrocode}
+\newcommand*{\glshypernavsep}{\space\textbar\space}
+% \end{macrocode}
+%\end{macro}
+% The \cs{glssymbolnav} produces a simple navigation set of
+% links for just the symbol and number groups. This used to be used at
+% the start of \cs{glsnavigation}. This command is no longer needed.
+%\begin{macro}{\glssymbolnav}
+% \begin{macrocode}
+\newcommand*{\glssymbolnav}{%
+ \glsnavhyperlink{glssymbols}{\glsgetgrouptitle{glssymbols}}%
+ \glshypernavsep
+ \glsnavhyperlink{glsnumbers}{\glsgetgrouptitle{glsnumbers}}%
+ \glshypernavsep
+}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</glossary-hypernav.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-inline.sty>
+% \end{macrocode}
+%\fi
+% \section{In-line Style (glossary-inline.sty)}
+% This defines an in-line style where the entries are
+% comma-separated with just the name and description displayed.
+% \begin{macrocode}
+\ProvidesPackage{glossary-inline}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%
+%\begin{style}{inline}
+% Define the inline style.
+% \begin{macrocode}
+\newglossarystyle{inline}{%
+% \end{macrocode}
+% Start of glossary sets up first empty separator between entries.
+% (This is then changed by \cs{glossentry})
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {%
+ \def\gls@inlinesep{}%
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{}%
+ }%
+ {\glspostinline}%
+% \end{macrocode}
+% No header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings (if heading is required, add
+% \ics{glsinlinedopostchild} to start definition in case heading
+% follows a child entry):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Just display separator followed by name and description:
+%\changes{3.08a}{2013-08-30}{updated inline style to use
+%\cs{glossentry} and \cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsinlinedopostchild
+ \gls@inlinesep
+ \glsentryitem{##1}%
+ \glsinlinenameformat{##1}{%
+ \glossentryname{##1}%
+ }%
+ \ifglsdescsuppressed{##1}%
+ {%
+ \glsinlineemptydescformat
+ {%
+ \glossentrysymbol{##1}%
+ }%
+ {%
+ ##2%
+ }%
+ }%
+ {%
+ \ifglshasdesc{##1}%
+ {\glsinlinedescformat{\glossentrydesc{##1}}{\glossentrysymbol{##1}}{##2}}%
+ {\glsinlineemptydescformat{\glossentrysymbol{##1}}{##2}}%
+ }%
+ \ifglshaschildren{##1}%
+ {%
+ \glsresetsubentrycounter
+ \glsinlineparentchildseparator
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{\glsinlinepostchild}%
+ }%
+ {}%
+ \def\gls@inlinesep{\glsinlineseparator}%
+ }%
+% \end{macrocode}
+% Sub-entries display description:
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ \gls@inlinesubsep%
+ \glsinlinesubnameformat{##2}{%
+ \glossentryname{##2}}%
+ \glssubentryitem{##2}%
+ \glsinlinesubdescformat{\glossentrydesc{##2}}{\glossentrysymbol{##2}}{##3}%
+ \def\gls@inlinesubsep{\glsinlinesubseparator}%
+ }%
+% \end{macrocode}
+% Nothing special between groups:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glsinlinedopostchild}
+% \begin{macrocode}
+\newcommand*{\glsinlinedopostchild}{%
+ \gls@inlinepostchild
+ \def\gls@inlinepostchild{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlineseparator}
+% Separator to use between entries.
+% \begin{macrocode}
+\newcommand*{\glsinlineseparator}{;\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlinesubseparator}
+% Separator to use between sub-entries.
+% \begin{macrocode}
+\newcommand*{\glsinlinesubseparator}{,\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlineparentchildseparator}
+% Separator to use between parent and children.
+% \begin{macrocode}
+\newcommand*{\glsinlineparentchildseparator}{:\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlinepostchild}
+%\changes{3.03}{2012/09/21}{new}
+% Hook to use between child and next entry
+% \begin{macrocode}
+\newcommand*{\glsinlinepostchild}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspostinline}
+% Terminator for inline glossary.
+%\changes{3.03}{2012/09/21}{replaced ``.'' with \cs{glspostdescription}}
+% \begin{macrocode}
+\newcommand*{\glspostinline}{\glspostdescription\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlinenameformat}
+%\changes{3.03}{2012/09/21}{new}
+% Formats the name of the entry (first argument label, second
+% argument name):
+% \begin{macrocode}
+\newcommand*{\glsinlinenameformat}[2]{\glstarget{#1}{#2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlinedescformat}
+%\changes{3.03}{2012/09/21}{new}
+% Formats the entry's description, symbol and location list:
+% \begin{macrocode}
+\newcommand*{\glsinlinedescformat}[3]{\space#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlineemptydescformat}
+%\changes{3.03}{2012/09/21}{new}
+% Formats the entry's symbol and location list when the description
+% is empty:
+% \begin{macrocode}
+\newcommand*{\glsinlineemptydescformat}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlinesubnameformat}
+%\changes{3.03}{2012/09/21}{new}
+% Formats the name of the subentry (first argument label, second
+% argument name):
+% \begin{macrocode}
+\newcommand*{\glsinlinesubnameformat}[2]{\glstarget{#1}{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsinlinesubdescformat}
+%\changes{3.03}{2012/09/21}{new}
+% Formats the subentry's description, symbol and location list:
+% \begin{macrocode}
+\newcommand*{\glsinlinesubdescformat}[3]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\iffalse
+% \begin{macrocode}
+%</glossary-inline.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-list.sty>
+% \end{macrocode}
+%\fi
+% \section{List Style (glossary-list.sty)}
+% The \isty{glossary-list} style file defines glossary styles
+% that use the \env{description} environment. Note that since
+% the entry name is placed in the optional argument to the
+% \ics{item} command, it will appear in a bold font by
+% default.
+% \begin{macrocode}
+\ProvidesPackage{glossary-list}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%\begin{macro}{\indexspace}
+%\changes{4.13}{2015-02-03}{new}
+% There are a few classes that don't define \cs{indexspace}, so
+% provide a definition if it hasn't been defined.
+% \begin{macrocode}
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslistgroupheaderfmt}
+%\changes{4.22}{2016-04-19}{new}
+% Provide a way of adjusting the format of the group headings.
+% \begin{macrocode}
+\newcommand*{\glslistgroupheaderfmt}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslistnavigationitem}
+%\changes{4.22}{2016-04-19}{new}
+% Provide a way of adjusting the format of the navigation header.
+% This puts the navigation line inside the optional argument
+% of item to prevent unwanted space occurring at the start, but
+% this can cause a problem if the navigation line is too long.
+% With this command, it makes it easier for the user to customise
+% the style without having to remember to modify \cs{glossaryheader}
+% after the style has been set.
+% \begin{macrocode}
+\newcommand*{\glslistnavigationitem}[1]{\item[#1]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{list}
+% The \glostyle{list} glossary style
+% uses the \env{description} environment. The group separator
+% \ics{glsgroupskip} is redefined as \cs{indexspace}
+% which produces a gap between groups. The glossary heading
+% and the group headings do nothing. Sub-entries immediately
+% follow the main entry without the sub-entry name. This style
+% does not use the entry's symbol. This is used as the default
+% style for the \sty{glossaries} package.
+% \begin{macrocode}
+\newglossarystyle{list}{%
+% \end{macrocode}
+% Use \env{description} environment:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{description}}{\end{description}}%
+% \end{macrocode}
+% No header at the start of the environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries start a new item in the list:
+%\changes{3.08a}{2013-08-30}{updated list style to use
+%\cs{glossentry} and \cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+% \end{macrocode}
+% Sub-entries continue on the same line:
+%\changes{4.22}{2016-04-19}{fixed missing space before description}
+% \begin{macrocode}
+ \renewcommand*{\subglossentry}[3]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\space
+ \glossentrydesc{##2}\glspostdescription\space ##3.}%
+% \end{macrocode}
+% Add vertical space between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{listgroup}
+% The \glostyle{listgroup} style is like the \glostyle{list}
+% style, but the glossary groups have headings.
+%\changes{1.08}{2007-10-13}{changed listgroup style to use \cs{glsgetgrouptitle}}
+% \begin{macrocode}
+\newglossarystyle{listgroup}{%
+% \end{macrocode}
+% Base it on the \glostyle{list} style:
+% \begin{macrocode}
+ \setglossarystyle{list}%
+% \end{macrocode}
+% Each group has a heading:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{listhypergroup}
+% The \glostyle{listhypergroup} style is like the \glostyle{listgroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{listhypergroup}{%
+% \end{macrocode}
+% Base it on the \glostyle{list} style:
+% \begin{macrocode}
+ \setglossarystyle{list}%
+% \end{macrocode}
+% Add navigation links at the start of the environment.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+% \end{macrocode}
+% Each group has a heading with a hypertarget:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlist}
+% The \glostyle{altlist} glossary style is like the \glostyle{list}
+% style, but places the description on a new line. Sub-entries
+% follow in separate paragraphs without the sub-entry name. This
+% style does not use the entry's symbol.
+% \begin{macrocode}
+\newglossarystyle{altlist}{%
+% \end{macrocode}
+% Base it on the \glostyle{list} style:
+% \begin{macrocode}
+ \setglossarystyle{list}%
+% \end{macrocode}
+% Main (level 0) entries start a new item in the list with a
+% line break after the entry name:
+%\changes{3.08a}{2013-08-30}{updated altlist style to use
+%\cs{glossentry} and \cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]%
+% \end{macrocode}
+%\changes{3.04}{2012-11-11}{replaced \cs{newline} with paragraph break}
+% Version 3.04 changed \cs{newline} to the following paragraph break
+% stuff (thanks to Daniel Gebhardt for supplying the fix) to prevent
+% a page break occurring at this point.
+% \begin{macrocode}
+ \mbox{}\par\nobreak\@afterheading
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+% \end{macrocode}
+% Sub-entries start a new paragraph:
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space ##3}%
+}
+% \end{macrocode}
+%\end{style}
+%\begin{style}{altlistgroup}
+% The \glostyle{altlistgroup} glossary style is like the
+% \glostyle{altlist} style, but the glossary groups have headings.
+%\changes{1.08}{2007-10-13}{changed altlistgroup style to use \cs{glsgetgrouptitle}}
+% \begin{macrocode}
+\newglossarystyle{altlistgroup}{%
+% \end{macrocode}
+% Base it on the \glostyle{altlist} style:
+% \begin{macrocode}
+ \setglossarystyle{altlist}%
+% \end{macrocode}
+% Each group has a heading:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]}}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlisthypergroup}
+% The \glostyle{altlisthypergroup} glossary style is like the
+% \glostyle{altlistgroup} style, but has a
+% set of links to the groups at the start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{altlisthypergroup}{%
+% \end{macrocode}
+% Base it on the \glostyle{altlist} style:
+% \begin{macrocode}
+ \setglossarystyle{altlist}%
+% \end{macrocode}
+% Add navigation links at the start of the environment.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+% \end{macrocode}
+% Each group has a heading with a hypertarget:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]}}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{listdotted}
+% The \glostyle{listdotted} glossary style was supplied by
+% Axel~Menzel. I've modified it slightly so that the distance from
+% the start of the name to the end of the dotted line is specified
+% by \cs{glslistdottedwidth}.
+% Note that this style ignores the page numbers as well as the
+% symbol. Sub-entries are displayed in the same way as top-level
+% entries.
+% \begin{macrocode}
+\newglossarystyle{listdotted}{%
+% \end{macrocode}
+% Base it on the \glostyle{list} style:
+% \begin{macrocode}
+ \setglossarystyle{list}%
+% \end{macrocode}
+% Each main (level 0) entry starts a new item:
+%\changes{3.08a}{2013-08-30}{updated listdotted style to use
+%\cs{glossentry} and \cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand*{\glossentry}[2]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##1}}%
+% \end{macrocode}
+% Sub entries have the same format as main entries:
+% \begin{macrocode}
+ \renewcommand*{\subglossentry}[3]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\glossentryname{##2}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}\glossentrydesc{##2}}%
+}
+% \end{macrocode}
+%\end{style}
+%\begin{macro}{\glslistdottedwidth}
+%\changes{2.01}{2009 May 30}{changed \cs{linewidth} to \cs{hsize}}
+% \begin{macrocode}
+\newlength\glslistdottedwidth
+\setlength{\glslistdottedwidth}{.5\hsize}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{sublistdotted}
+% This style is similar to the glostyle{listdotted} style, except
+% that the main entries just have the name displayed.
+% \begin{macrocode}
+\newglossarystyle{sublistdotted}{%
+% \end{macrocode}
+% Base it on the \glostyle{listdotted} style:
+% \begin{macrocode}
+ \setglossarystyle{listdotted}%
+% \end{macrocode}
+% Main (level 0) entries just display the name:
+% \begin{macrocode}
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}}]}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-list.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-long.sty>
+% \end{macrocode}
+%\fi
+% \section{Glossary Styles using longtable (the glossary-long
+% package)}
+% The glossary styles defined in the \isty{glossary-long} package
+% used the \env{longtable} environment in the glossary.
+% \begin{macrocode}
+\ProvidesPackage{glossary-long}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Requires the \isty{longtable} package:
+% \begin{macrocode}
+\RequirePackage{longtable}
+% \end{macrocode}
+%\begin{macro}{\glsdescwidth}
+% This is a length that governs the width of the description column.
+% (There's a chance that the user may specify \pkgopt{nolong}
+% and then load \isty{glossary-long} later, in which case
+% \cs{glsdescwidth} may have already been defined by
+% \isty{glossary-super}. The same goes for \cs{glspagelistwidth}.)
+%\changes{2.01}{2009 May 30}{changed \cs{linewidth} to \cs{hsize}}
+% \begin{macrocode}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspagelistwidth}
+% This is a length that governs the width of the page list column.
+%\changes{2.01}{2009 May 30}{changed \cs{linewidth} to \cs{hsize}}
+% \begin{macrocode}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{long}
+% The \glostyle{long} glossary style command which
+% uses the \env{longtable} environment:
+% \begin{macrocode}
+\newglossarystyle{long}{%
+% \end{macrocode}
+% Use \env{longtable} with two columns:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Do nothing at the start of the environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No heading between groups:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries displayed in a row:
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries displayed on the following row without the name:
+%\changes{4.22}{2016-04-19}{fixed typo in \cs{glossentrydesc}}
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longborder}
+% The \glostyle{longborder} style is like the above, but with horizontal and
+% vertical lines:
+% \begin{macrocode}
+\newglossarystyle{longborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long} style:
+% \begin{macrocode}
+ \setglossarystyle{long}%
+% \end{macrocode}
+% Use \env{longtable} with two columns with vertical lines
+% between each column:
+% \begin{macrocode}
+ \renewenvironment{theglossary}{%
+ \begin{longtable}{|l|p{\glsdescwidth}|}}{\end{longtable}}%
+% \end{macrocode}
+% Place horizontal lines at the head and foot of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longheader}
+% The \glostyle{longheader} style is like the
+% \glostyle{long} style but with a header:
+% \begin{macrocode}
+\newglossarystyle{longheader}{%
+% \end{macrocode}
+% Base it on the glostyle{long} style:
+% \begin{macrocode}
+ \setglossarystyle{long}%
+% \end{macrocode}
+% Set the table's header:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \bfseries \entryname & \bfseries \descriptionname\tabularnewline\endhead}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longheaderborder}
+% The \glostyle{longheaderborder} style is
+% like the \glostyle{long} style but with a header and border:
+% \begin{macrocode}
+\newglossarystyle{longheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{longborder} style:
+% \begin{macrocode}
+ \setglossarystyle{longborder}%
+% \end{macrocode}
+% Set the table's header and add horizontal line to table's foot:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries \entryname & \bfseries
+ \descriptionname\tabularnewline\hline
+ \endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long3col}
+% The \glostyle{long3col} style is like \glostyle{long} but with 3 columns
+% \begin{macrocode}
+\newglossarystyle{long3col}{%
+% \end{macrocode}
+% Use a \env{longtable} with 3 columns:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% No table header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No headings between groups:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a row (name in first column,
+% description in second column, page list in last column):
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub-entries on a separate row (no name, description in
+% second column, page list in third column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long3colborder}
+% The \glostyle{long3colborder} style is like the
+% \glostyle{long3col} style but with a border:
+% \begin{macrocode}
+\newglossarystyle{long3colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long3col} style:
+% \begin{macrocode}
+ \setglossarystyle{long3col}%
+% \end{macrocode}
+% Use a \env{longtable} with 3 columns with vertical lines
+% around them:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Place horizontal lines at the head and foot of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long3colheader}
+% The \glostyle{long3colheader} style is like \glostyle{long3col} but with a header row:
+% \begin{macrocode}
+\newglossarystyle{long3colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{long3col} style:
+% \begin{macrocode}
+ \setglossarystyle{long3col}%
+% \end{macrocode}
+% Set the table's header:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long3colheaderborder}
+% The \glostyle{long3colheaderborder} style is like the above but with a border
+% \begin{macrocode}
+\newglossarystyle{long3colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long3colborder} style:
+% \begin{macrocode}
+ \setglossarystyle{long3colborder}%
+% \end{macrocode}
+% Set the table's header and add horizontal line at table's foot:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long4col}
+% The \glostyle{long4col} style has four columns where the third
+% column contains the value of the associated \gloskey{symbol} key.
+% \begin{macrocode}
+\newglossarystyle{long4col}{%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{llll}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% No table header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a single row (name in first column,
+% description in second column, symbol in third column, page list
+% in last column):
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries on a single row with no name (description in second
+% column, symbol in third column, page list in last column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long4colheader}
+% The \glostyle{long4colheader} style is like \glostyle{long4col}
+% but with a header row.
+% \begin{macrocode}
+\newglossarystyle{long4colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{long4col} style:
+% \begin{macrocode}
+ \setglossarystyle{long4col}%
+% \end{macrocode}
+% Table has a header:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long4colborder}
+% The \glostyle{long4colborder} style is like \glostyle{long4col}
+% but with a border.
+% \begin{macrocode}
+\newglossarystyle{long4colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long4col} style:
+% \begin{macrocode}
+ \setglossarystyle{long4col}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns surrounded by vertical
+% lines:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|l|l|l|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Add horizontal lines to the head and foot of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long4colheaderborder}
+% The \glostyle{long4colheaderborder} style is like the above but
+% with a border.
+% \begin{macrocode}
+\newglossarystyle{long4colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long4col} style:
+% \begin{macrocode}
+ \setglossarystyle{long4col}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns surrounded by vertical
+% lines:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|l|l|l|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Add table header and horizontal line at the table's foot:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlong4col}
+% The \glostyle{altlong4col} style is like the \glostyle{long4col}
+% style but can have multiline descriptions and page lists.
+% \begin{macrocode}
+\newglossarystyle{altlong4col}{%
+% \end{macrocode}
+% Base it on the glostyle{long4col} style:
+% \begin{macrocode}
+ \setglossarystyle{long4col}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlong4colheader}
+% The \glostyle{altlong4colheader} style is like
+% \glostyle{altlong4col} but with a header row.
+% \begin{macrocode}
+\newglossarystyle{altlong4colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{long4colheader} style:
+% \begin{macrocode}
+ \setglossarystyle{long4colheader}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlong4colborder}
+% The \glostyle{altlong4colborder} style is like
+% \glostyle{altlong4col} but with a border.
+% \begin{macrocode}
+\newglossarystyle{altlong4colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long4colborder} style:
+% \begin{macrocode}
+ \setglossarystyle{long4colborder}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlong4colheaderborder}
+% The \glostyle{altlong4colheaderborder} style is like the above but
+% with a header as well as a border.
+% \begin{macrocode}
+\newglossarystyle{altlong4colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{long4colheaderborder} style:
+% \begin{macrocode}
+ \setglossarystyle{long4colheaderborder}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-long.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-longbooktabs.sty>
+% \end{macrocode}
+%\fi
+%\section{Glossary Styles using longtable and booktabs (the
+%glossary-longbooktabs) package}
+% The styles here are based on David Carlisle's patch at
+% \url{http://tex.stackexchange.com/a/56890}
+%
+% \begin{macrocode}
+\ProvidesPackage{glossary-longbooktabs}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Requires \sty{booktabs} package:
+% \begin{macrocode}
+\RequirePackage{booktabs}
+% \end{macrocode}
+% and the base packages for long styles:
+% \begin{macrocode}
+\RequirePackage{glossary-long}
+\RequirePackage{glossary-longragged}
+% \end{macrocode}
+%(\sty{longtable} and \sty{array} loaded by those packages).
+%
+%\begin{style}{long-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{long-booktabs} style is similar to the
+% \glostyle{longheader}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{long-booktabs}{%
+% \end{macrocode}
+% If the style change is scoped, the patch will only have a local
+% effect, which may be useful if it conflicts with other tables in
+% the document.
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% As with the \glostyle{longheader} style, use the
+% \glostyle{long} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{long}%
+% \end{macrocode}
+% Add a header with rules.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname & \bfseries
+ \descriptionname\tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+% \end{macrocode}
+% Check for the \pkgopt{nogroupskip} package option. If there should
+% be a gap between groups, insert the penalty and the vertical
+% space.
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} should occur outside
+%\cs{glsgroupskip} to be on the safe side.
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long3col-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{long3col-booktabs} style is similar to the
+% \glostyle{long3colheader}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{long3col-booktabs}{%
+% \end{macrocode}
+% If the style change is scoped, the patch will only have a local
+% effect, which may be useful if it conflicts with other tables in
+% the document.
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% Use the \glostyle{long3col} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{long3col}%
+% \end{macrocode}
+% Add a header with rules.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname &
+ \bfseries \descriptionname &
+ \bfseries \pagelistname
+ \tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+% \end{macrocode}
+% Check for the \pkgopt{nogroupskip} package option. If there should
+% be a gap between groups, insert the penalty and the vertical
+% space.
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} should occur outside
+%\cs{glsgroupskip} to be on the safe side.
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{long4col-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{long4col-booktabs} style is similar to the
+% \glostyle{long4colheader}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{long4col-booktabs}{%
+% \end{macrocode}
+% If the style change is scoped, the patch will only have a local
+% effect, which may be useful if it conflicts with other tables in
+% the document.
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% Use the \glostyle{long4col} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{long4col}%
+% \end{macrocode}
+% Add a header with rules.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \toprule \bfseries \entryname &
+ \bfseries \descriptionname &
+ \bfseries \symbolname &
+ \bfseries \pagelistname
+ \tabularnewline\midrule\endhead
+ \bottomrule\endfoot}%
+% \end{macrocode}
+% Check for the \pkgopt{nogroupskip} package option. If there should
+% be a gap between groups, insert the penalty and the vertical
+% space.
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} should occur outside
+%\cs{glsgroupskip} to be on the safe side.
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlong4col-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{altlong4col-booktabs} style is similar to the
+% \glostyle{altlong4colheader}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{altlong4col-booktabs}{%
+% \end{macrocode}
+%The patch \cs{glspatchLToutput} is already applied in
+%\glostyle{long4col-booktabs} and so doesn't need to be here.
+%\changes{4.42}{??}{removed superfluous \cs{glspatchLToutput}}
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% Use the
+% \glostyle{long4col-booktabs} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{long4col-booktabs}%
+% \end{macrocode}
+% Change the column specifications:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+% Ragged styles.
+%\begin{style}{longragged-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{longragged-booktabs} style is similar to the
+% \glostyle{longragged}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{longragged-booktabs}{%
+% \end{macrocode}
+% If the style change is scoped, the patch will only have a local
+% effect, which may be useful if it conflicts with other tables in
+% the document.
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% Use the \glostyle{long-booktabs} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{long-booktabs}%
+% \end{macrocode}
+% Adjust the column specification.
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longragged3col-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{longragged3col-booktabs} style is similar to the
+% \glostyle{longragged3col}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{longragged3col-booktabs}{%
+% \end{macrocode}
+% If the style change is scoped, the patch will only have a local
+% effect, which may be useful if it conflicts with other tables in
+% the document.
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% Use the \glostyle{long3col-booktabs} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{long3col-booktabs}%
+% \end{macrocode}
+% Adjust the column specification.
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlongragged4col-booktabs}
+%\changes{4.21}{2016-01-24}{new}
+% The \glostyle{altlongragged4col-booktabs} style is similar to the
+% \glostyle{altlongragged4col}
+% style but uses the \sty{booktabs} rules and patches
+% \env{longtable} to check for group skip occurring at a page break.
+% \begin{macrocode}
+\newglossarystyle{altlongragged4col-booktabs}{%
+% \end{macrocode}
+% If the style change is scoped, the patch will only have a local
+% effect, which may be useful if it conflicts with other tables in
+% the document.
+% \begin{macrocode}
+ \glspatchLToutput
+% \end{macrocode}
+% Use the \glostyle{altlong4col-booktabs} style as a base.
+% \begin{macrocode}
+ \setglossarystyle{altlong4col-booktabs}%
+% \end{macrocode}
+% Adjust the column specification.
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glsLTpenaltycheck}
+%\changes{4.21}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsLTpenaltycheck}{%
+ \ifnum\outputpenalty=-50\vskip-\normalbaselineskip\relax\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspenaltygroupskip}
+%\changes{4.21}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand{\glspenaltygroupskip}{%
+ \noalign{\penalty-50\vskip\normalbaselineskip}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsrestoreLToutput}
+% Provide a way of restoring \cs{LT@output} for the user.
+% \begin{macrocode}
+\let\@gls@org@LT@output\LT@output
+\newcommand*{\glsrestoreLToutput}{\let\LT@output\@gls@org@LT@output}
+% \end{macrocode}
+%\end{macro}
+%
+% This is David's patch, but I've replaced the hard-coded values
+% with \cs{glsLTpenaltycheck} to make it easier to adjust.
+%\begin{macro}{\glspatchLToutput}
+%\changes{4.21}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\glspatchLToutput}{%
+ \renewcommand*{\LT@output}{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum\outputpenalty > -\LT@end@pen
+ \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \else
+ \setbox\z@\vbox{\unvbox\@cclv}%
+ \ifdim \ht\LT@lastfoot>\ht\LT@foot
+ \dimen@\pagegoal
+ \advance\dimen@-\ht\LT@lastfoot
+ \ifdim\dimen@<\ht\z@
+ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \setbox\z@\vbox{\box\LT@head\glsLTpenaltycheck}%
+ \fi
+ \fi
+ \global\@colroom\@colht
+ \global\vsize\@colht
+ {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
+ \fi
+ \else
+ \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \global\vsize\@colroom
+ \copy\LT@head
+ \glsLTpenaltycheck
+ \nobreak
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</glossary-longbooktabs.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-longragged.sty>
+% \end{macrocode}
+%\fi
+% \section{Glossary Styles using longtable (the glossary-longragged
+% package)}
+% The glossary styles defined in the \isty{glossary-longragged} package
+% used the \env{longtable} environment in the glossary and use
+% ragged right formatting for the multiline columns.
+% \begin{macrocode}
+\ProvidesPackage{glossary-longragged}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Requires the \isty{array} package:
+% \begin{macrocode}
+\RequirePackage{array}
+% \end{macrocode}
+% Requires the \isty{longtable} package:
+% \begin{macrocode}
+\RequirePackage{longtable}
+% \end{macrocode}
+%\begin{macro}{\glsdescwidth}
+% This is a length that governs the width of the description column.
+% This may have already been defined.
+% \begin{macrocode}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspagelistwidth}
+% This is a length that governs the width of the page list column.
+% This may already have been defined.
+% \begin{macrocode}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{longragged}
+% The \glostyle{longragged} glossary style is like the
+% \glostyle{long} but uses ragged right formatting for the
+% description column.
+% \begin{macrocode}
+\newglossarystyle{longragged}{%
+% \end{macrocode}
+% Use \env{longtable} with two columns:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Do nothing at the start of the environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No heading between groups:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries displayed in a row:
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries displayed on the following row without the name:
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}%
+ \glspostdescription\space ##3%
+ \tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longraggedborder}
+% The \glostyle{longraggedborder} style is like the above, but with horizontal and
+% vertical lines:
+% \begin{macrocode}
+\newglossarystyle{longraggedborder}{%
+% \end{macrocode}
+% Base it on the glostyle{longragged} style:
+% \begin{macrocode}
+ \setglossarystyle{longragged}%
+% \end{macrocode}
+% Use \env{longtable} with two columns with vertical lines
+% between each column:
+% \begin{macrocode}
+ \renewenvironment{theglossary}{%
+ \begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Place horizontal lines at the head and foot of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longraggedheader}
+% The \glostyle{longraggedheader} style is like the
+% \glostyle{longragged} style but with a header:
+% \begin{macrocode}
+\newglossarystyle{longraggedheader}{%
+% \end{macrocode}
+% Base it on the glostyle{longragged} style:
+% \begin{macrocode}
+ \setglossarystyle{longragged}%
+% \end{macrocode}
+% Set the table's header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline\endhead}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longraggedheaderborder}
+% The \glostyle{longraggedheaderborder} style is
+% like the \glostyle{longragged} style but with a header and border:
+% \begin{macrocode}
+\newglossarystyle{longraggedheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{longraggedborder} style:
+% \begin{macrocode}
+ \setglossarystyle{longraggedborder}%
+% \end{macrocode}
+% Set the table's header and add horizontal line to table's foot:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline\hline
+ \endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longragged3col}
+% The \glostyle{longragged3col} style is like \glostyle{longragged} but with 3 columns
+% \begin{macrocode}
+\newglossarystyle{longragged3col}{%
+% \end{macrocode}
+% Use a \env{longtable} with 3 columns:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% No table header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No headings between groups:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a row (name in first column,
+% description in second column, page list in last column):
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub-entries on a separate row (no name, description in
+% second column, page list in third column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longragged3colborder}
+% The \glostyle{longragged3colborder} style is like the
+% \glostyle{longragged3col} style but with a border:
+% \begin{macrocode}
+\newglossarystyle{longragged3colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{longragged3col} style:
+% \begin{macrocode}
+ \setglossarystyle{longragged3col}%
+% \end{macrocode}
+% Use a \env{longtable} with 3 columns with vertical lines
+% around them:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Place horizontal lines at the head and foot of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longragged3colheader}
+% The \glostyle{longragged3colheader} style is like \glostyle{longragged3col} but with a header row:
+% \begin{macrocode}
+\newglossarystyle{longragged3colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{longragged3col} style:
+% \begin{macrocode}
+ \setglossarystyle{longragged3col}%
+% \end{macrocode}
+% Set the table's header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{longragged3colheaderborder}
+% The \glostyle{longragged3colheaderborder} style is like the above but with a border
+% \begin{macrocode}
+\newglossarystyle{longragged3colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{longragged3colborder} style:
+% \begin{macrocode}
+ \setglossarystyle{longragged3colborder}%
+% \end{macrocode}
+% Set the table's header and add horizontal line at table's foot:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlongragged4col}
+% The \glostyle{altlongragged4col} style is like the \glostyle{altlong4col}
+% style defined in the \isty{glossary-long} package, except that
+% ragged right formatting is used for the description and page list
+% columns.
+% \begin{macrocode}
+\newglossarystyle{altlongragged4col}{%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% No table header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a single row (name in first column,
+% description in second column, symbol in third column, page list
+% in last column):
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+%\changes{4.08}{2014-07-30}{fixed bug that displayed description instead of
+%symbol}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries on a single row with no name (description in second
+% column, symbol in third column, page list in last column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & & & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlongragged4colheader}
+% The \glostyle{altlongragged4colheader} style is like
+% \glostyle{altlongragged4col} but with a header row.
+% \begin{macrocode}
+\newglossarystyle{altlongragged4colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{altlongragged4col} style:
+% \begin{macrocode}
+ \setglossarystyle{altlongragged4col}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Table has a header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\endhead}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlongragged4colborder}
+% The \glostyle{altlongragged4colborder} style is like
+% \glostyle{altlongragged4col} but with a border.
+% \begin{macrocode}
+\newglossarystyle{altlongragged4colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{altlongragged4col} style:
+% \begin{macrocode}
+ \setglossarystyle{altlongragged4col}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Add horizontal lines to the head and foot of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\hline\endhead\hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altlongragged4colheaderborder}
+% The \glostyle{altlongragged4colheaderborder} style is like the above but
+% with a header as well as a border.
+% \begin{macrocode}
+\newglossarystyle{altlongragged4colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{altlongragged4col} style:
+% \begin{macrocode}
+ \setglossarystyle{altlongragged4col}%
+% \end{macrocode}
+% Use a \env{longtable} with 4 columns where the second and
+% last columns may have multiple lines in each row:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{longtable}}%
+% \end{macrocode}
+% Add table header and horizontal line at the table's foot:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries \symbolname&
+ \bfseries\pagelistname\tabularnewline\hline\endhead
+ \hline\endfoot}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-longragged.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-mcols.sty>
+% \end{macrocode}
+%\fi
+%\section{Glossary Styles using \styfmt{multicol}
+%(glossary-mcols.sty)}
+%The \isty{glossary-mcols} style file defines glossary styles that
+%use the \sty{multicol} package. These use the tree-like glossary
+%styles in a multicol environment.
+% \begin{macrocode}
+\ProvidesPackage{glossary-mcols}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Required packages:
+% \begin{macrocode}
+\RequirePackage{multicol}
+\RequirePackage{glossary-tree}
+% \end{macrocode}
+%
+%\begin{macro}{\indexspace}
+%\changes{4.13}{2015-02-03}{new}
+% The are a few classes that don't define \cs{indexspace}, so
+% provide a definition if it hasn't been defined.
+% \begin{macrocode}
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsmcols}
+% Define macro in which to store the number of columns. (Defaults to
+% 2.)
+% \begin{macrocode}
+\newcommand*{\glsmcols}{2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{mcolindex}
+% Multi-column index style. Same as the \glostyle{index}, but puts the
+% glossary in multiple columns. (Ideally the glossary title should go in the
+% optional argument of \env{multicols}, but the title isn't part of
+% the glossary style.)
+% \begin{macrocode}
+\newglossarystyle{mcolindex}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{replaced `2' with \cs{glsmcols}}
+% \begin{macrocode}
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+% \end{macrocode}
+%\changes{4.26}{2016-10-12}{replaced \cs{@idxitem} with
+%\cs{glstreeitem}}
+% \begin{macrocode}
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\end{multicols}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolindexgroup}
+% As \glostyle{mcolindex} but has headings:
+% \begin{macrocode}
+\newglossarystyle{mcolindexgroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolindexhypergroup}
+% The \glostyle{mcolindexhypergroup} style is like the
+% \glostyle{mcolindexgroup} style but has hyper navigation.
+% \begin{macrocode}
+\newglossarystyle{mcolindexhypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcolindex} style:
+% \begin{macrocode}
+ \setglossarystyle{mcolindex}%
+% \end{macrocode}
+% Put navigation links to the groups at the start of the glossary:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}\indexspace}%
+% \end{macrocode}
+% Add a heading for each group (with a target). The group's title is
+% in bold followed by a vertical gap.
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolindexspannav}
+%\changes{4.22}{2016-04-19}{new}
+% Similar to \glostyle{mcolindexhypergroup}, but puts the navigation
+% line
+% in the optional argument of \env{multicols}.
+% \begin{macrocode}
+\newglossarystyle{mcolindexspannav}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{replaced `2' with \cs{glsmcols}}
+% \begin{macrocode}
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+% \end{macrocode}
+%\changes{4.26}{2016-10-12}{replaced \cs{@idxitem} with
+%\cs{glstreeitem}}
+% \begin{macrocode}
+ \let\item\glstreeitem}%
+ {\end{multicols}}%
+% \end{macrocode}
+% Add a heading for each group (with a target). The group's title is
+% in bold followed by a vertical gap.
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltree}
+% Multi-column index style. Same as the \glostyle{tree}, but puts the
+% glossary in multiple columns.
+% \begin{macrocode}
+\newglossarystyle{mcoltree}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{replaced `2' with \cs{glsmcols}}
+% \begin{macrocode}
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreegroup}
+% Like the \glostyle{mcoltree} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{mcoltreegroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcoltree} style:
+% \begin{macrocode}
+ \setglossarystyle{mcoltree}%
+% \end{macrocode}
+% Each group has a heading (in bold) followed by a vertical gap):
+% \begin{macrocode}
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreehypergroup}
+% The \glostyle{mcoltreehypergroup} style is like the
+% \glostyle{treegroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{mcoltreehypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcoltree} style:
+% \begin{macrocode}
+ \setglossarystyle{mcoltree}%
+% \end{macrocode}
+% Put navigation links to the groups at the start of the
+% \env{theglossary} environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Each group has a heading (in bold with a target) followed by a
+% vertical gap):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreespannav}
+%\changes{4.22}{2016-04-19}{new}
+% Similar to the \glostyle{mcoltreehypergroup} style but the
+% navigation line is put in the optional argument of the
+% \env{multicols} environment.
+% \begin{macrocode}
+\newglossarystyle{mcoltreespannav}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{replaced `2' with \cs{glsmcols}}
+% \begin{macrocode}
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+% \end{macrocode}
+% Each group has a heading (in bold with a target) followed by a
+% vertical gap):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreenoname}
+% Multi-column index style. Same as the \glostyle{treenoname}, but puts the
+% glossary in multiple columns.
+% \begin{macrocode}
+\newglossarystyle{mcoltreenoname}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{replaced `2' with \cs{glsmcols}}
+% \begin{macrocode}
+ \begin{multicols}{\glsmcols}
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreenonamegroup}
+% Like the \glostyle{mcoltreenoname} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{mcoltreenonamegroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcoltreenoname} style:
+% \begin{macrocode}
+ \setglossarystyle{mcoltreenoname}%
+% \end{macrocode}
+% Give each group a heading:
+% \begin{macrocode}
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreenonamehypergroup}
+% The \glostyle{mcoltreenonamehypergroup} style is like the
+% \glostyle{mcoltreenonamegroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{mcoltreenonamehypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcoltreenoname} style:
+% \begin{macrocode}
+ \setglossarystyle{mcoltreenoname}%
+% \end{macrocode}
+% Put navigation links to the groups at the start of the
+% \env{theglossary} environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Each group has a heading (in bold with a target) followed by a
+% vertical gap):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcoltreenonamespannav}
+%\changes{4.22}{2016-04-19}{new}
+% Similar to the \glostyle{mcoltreenonamehypergroup} style but the
+% navigation line is put in the optional argument of the
+% \env{multicols} environment.
+% \begin{macrocode}
+\newglossarystyle{mcoltreenonamespannav}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+% \end{macrocode}
+% Each group has a heading (in bold with a target) followed by a
+% vertical gap):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolalttree}
+% Multi-column index style. Same as the \glostyle{alttree}, but puts the
+% glossary in multiple columns.
+% \begin{macrocode}
+\newglossarystyle{mcolalttree}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+% \end{macrocode}
+%\changes{3.05}{2013-04-21}{replaced `2' with \cs{glsmcols}}
+% \begin{macrocode}
+ \begin{multicols}{\glsmcols}
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par
+ }%
+ {\par\end{multicols}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolalttreegroup}
+% Like the \glostyle{mcolalttree} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{mcolalttreegroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcolalttree} style:
+% \begin{macrocode}
+ \setglossarystyle{mcolalttree}%
+% \end{macrocode}
+% Give each group a heading.
+% \begin{macrocode}
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolalttreehypergroup}
+% The \glostyle{mcolalttreehypergroup} style is like the
+% \glostyle{mcolalttreegroup} style, but has a set of links to the
+% groups at the start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{mcolalttreehypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{mcolalttree} style:
+% \begin{macrocode}
+ \setglossarystyle{mcolalttree}%
+% \end{macrocode}
+% Put the navigation links in the header
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Put a hypertarget at the start of each group
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{mcolalttreespannav}
+%\changes{4.22}{2016-04-19}{new}
+% Similar to the \glostyle{mcolalttreehypergroup} style but the
+% navigation line is put in the optional argument of the
+% \env{multicols} environment.
+% \begin{macrocode}
+\newglossarystyle{mcolalttreespannav}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par
+ }%
+ {\par\end{multicols}}%
+% \end{macrocode}
+% Put a hypertarget at the start of each group
+%\changes{4.34}{2017-11-03}{removed spurious space}
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+
+%\iffalse
+% \begin{macrocode}
+%</glossary-mcols.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-super.sty>
+% \end{macrocode}
+%\fi
+% \section{Glossary Styles using supertabular environment (glossary-super package)}
+% The glossary styles defined in the \isty{glossary-super} package
+% use the \env{supertabular} environment.
+% \begin{macrocode}
+\ProvidesPackage{glossary-super}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Requires the \isty{supertabular} package:
+% \begin{macrocode}
+\RequirePackage{supertabular}
+% \end{macrocode}
+%\begin{macro}{\glsdescwidth}
+% This is a length that governs the width of the description column.
+% This may already have been defined if \isty{glossary-long}
+% has been loaded.\changes{2.01}{2009 May 30}{changed \cs{linewidth}
+% to \cs{hsize}}
+% \begin{macrocode}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspagelistwidth}
+% This is a length that governs the width of the page list column.
+% This may already have been defined if \isty{glossary-long}
+% has been loaded.\changes{2.01}{2009 May 30}{changed \cs{linewidth}
+% to \cs{hsize}}
+% \begin{macrocode}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{super}
+% The \glostyle{super} glossary style uses the
+% \env{supertabular} environment
+% (it uses lengths defined in the \isty{glossary-long} package.)
+% \begin{macrocode}
+\newglossarystyle{super}{%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+% \end{macrocode}
+% Do nothing at the start of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries put in a row (name in first column,
+% description and page list in second column):
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries put in a row (no name, description and page list
+% in second column):
+%\changes{4.0}{2013-11-14}{fixed typo in \cs{subglossentry} (\cs{glossentrydesc})}
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superborder}
+% The \glostyle{superborder} style is like the above, but with
+% horizontal and vertical lines:
+% \begin{macrocode}
+\newglossarystyle{superborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super} style:
+% \begin{macrocode}
+ \setglossarystyle{super}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superheader}
+% The \glostyle{superheader} style is like the
+% \glostyle{super} style, but with a header:
+% \begin{macrocode}
+\newglossarystyle{superheader}{%
+% \end{macrocode}
+% Base it on the glostyle{super} style:
+% \begin{macrocode}
+ \setglossarystyle{super}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns, a header and no tail:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+\renewenvironment{theglossary}%
+ {\tablehead{\bfseries \entryname &
+ \bfseries\descriptionname\tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superheaderborder}
+% The \glostyle{superheaderborder} style is like
+% the \glostyle{super} style but with a header and border:
+% \begin{macrocode}
+\newglossarystyle{superheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super} style:
+% \begin{macrocode}
+ \setglossarystyle{super}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns, a header and horizontal lines above and below the
+% table:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries \entryname &
+ \bfseries \descriptionname\tabularnewline\hline}%
+ \tabletail{\hline}
+ \begin{supertabular}{|l|p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super3col}
+% The \glostyle{super3col} style is like the \glostyle{super}
+% style, but with 3 columns:
+% \begin{macrocode}
+\newglossarystyle{super3col}{%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+% \end{macrocode}
+% Do nothing at the start of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a row (name in first column,
+% description in second column, page list in last column):
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} & ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries on a row (no name, description in second column,
+% page list in last column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super3colborder}
+% The \glostyle{super3colborder} style is like the
+% \glostyle{super3col} style, but with a border:
+% \begin{macrocode}
+\newglossarystyle{super3colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super3col} style:
+% \begin{macrocode}
+ \setglossarystyle{super3col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super3colheader}
+% The \glostyle{super3colheader} style is like
+% the \glostyle{super3col} style but with a header row:
+% \begin{macrocode}
+\newglossarystyle{super3colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{super3col} style:
+% \begin{macrocode}
+ \setglossarystyle{super3col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns, a header and no tail:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super3colheaderborder}
+% The \glostyle{super3colheaderborder} style is like
+% the \glostyle{super3col} style but with a header and border:
+% \begin{macrocode}
+\newglossarystyle{super3colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super3colborder} style:
+% \begin{macrocode}
+ \setglossarystyle{super3colborder}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns, a header with horizontal lines and a horizontal
+% line in the tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|p{\glsdescwidth}|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super4col}
+% The \glostyle{super4col} glossary style has four columns,
+% where the third column contains the value of the
+% corresponding \gloskey{symbol} key used when that entry
+% was defined.
+% \begin{macrocode}
+\newglossarystyle{super4col}{%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{llll}}{%
+ \end{supertabular}}%
+% \end{macrocode}
+% Do nothing at the start of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a row with the name in the first
+% column, description in second column, symbol in third column
+% and page list in last column:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+%\changes{4.22}{2016-04-19}{fixed bug in \cs{glossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries on a row with no name, the description in the second
+% column, symbol in third column and page list in last column:
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super4colheader}
+% The \glostyle{super4colheader} style is like
+% the \glostyle{super4col} but with a header row.
+% \begin{macrocode}
+\newglossarystyle{super4colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{super4col} style:
+% \begin{macrocode}
+ \setglossarystyle{super4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns, a header and no tail:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{llll}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super4colborder}
+% The \glostyle{super4colborder} style is like
+% the \glostyle{super4col} but with a border.
+% \begin{macrocode}
+\newglossarystyle{super4colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super4col} style:
+% \begin{macrocode}
+ \setglossarystyle{super4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|l|l|l|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{super4colheaderborder}
+% The \glostyle{super4colheaderborder} style is like
+% the \glostyle{super4col} but with a header and border.
+% \begin{macrocode}
+\newglossarystyle{super4colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super4col} style:
+% \begin{macrocode}
+ \setglossarystyle{super4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and a header bordered by horizontal lines and
+% a horizontal line in the tail:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|l|l|l|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuper4col}
+% The \glostyle{altsuper4col} glossary style is like
+% \glostyle{super4col} but has provision for multiline descriptions.
+% \begin{macrocode}
+\newglossarystyle{altsuper4col}{%
+% \end{macrocode}
+% Base it on the glostyle{super4col} style:
+% \begin{macrocode}
+ \setglossarystyle{super4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuper4colheader}
+% The \glostyle{altsuper4colheader} style is like
+% the \glostyle{altsuper4col} but with a header row.
+% \begin{macrocode}
+\newglossarystyle{altsuper4colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{super4colheader} style:
+% \begin{macrocode}
+ \setglossarystyle{super4colheader}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns, a header and no tail:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}lp{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuper4colborder}
+% The \glostyle{altsuper4colborder} style is like
+% the \glostyle{altsuper4col} but with a border.
+% \begin{macrocode}
+\newglossarystyle{altsuper4colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super4colborder} style:
+% \begin{macrocode}
+ \setglossarystyle{super4colborder}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuper4colheaderborder}
+% The \glostyle{altsuper4colheaderborder} style is like
+% the \glostyle{altsuper4col} but with a header and border.
+% \begin{macrocode}
+\newglossarystyle{altsuper4colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super4colheaderborder} style:
+% \begin{macrocode}
+ \setglossarystyle{super4colheaderborder}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and a header bordered by horizontal lines and
+% a horizontal line in the tail:
+%\changes{3.13a}{2013-11-05}{switched to \cs{tabularnewline}}
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname &
+ \bfseries\descriptionname &
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|p{\glsdescwidth}|l|p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-super.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-superragged.sty>
+% \end{macrocode}
+%\fi
+% \section{Glossary Styles using supertabular environment (glossary-superragged package)}
+% The glossary styles defined in the \isty{glossary-superragged}
+% package use the \env{supertabular} environment. These styles
+% are like those provided by the \isty{glossary-super} package,
+% except that the multiline columns have ragged right justification.
+% \begin{macrocode}
+\ProvidesPackage{glossary-superragged}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Requires the \isty{array} package:
+% \begin{macrocode}
+\RequirePackage{array}
+% \end{macrocode}
+% Requires the \isty{supertabular} package:
+% \begin{macrocode}
+\RequirePackage{supertabular}
+% \end{macrocode}
+%\begin{macro}{\glsdescwidth}
+% This is a length that governs the width of the description column.
+% This may already have been defined.
+% \begin{macrocode}
+\@ifundefined{glsdescwidth}{%
+ \newlength\glsdescwidth
+ \setlength{\glsdescwidth}{0.6\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspagelistwidth}
+% This is a length that governs the width of the page list column.
+% This may already have been defined.
+% \begin{macrocode}
+\@ifundefined{glspagelistwidth}{%
+ \newlength\glspagelistwidth
+ \setlength{\glspagelistwidth}{0.1\hsize}
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{superragged}
+% The \glostyle{superragged} glossary style uses the
+% \env{supertabular} environment.
+% \begin{macrocode}
+\newglossarystyle{superragged}{%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+% \end{macrocode}
+% Do nothing at the start of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries put in a row (name in first column,
+% description and page list in second column):
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\space ##2%
+ \tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries put in a row (no name, description and page list
+% in second column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription\space
+ ##3%
+ \tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superraggedborder}
+% The \glostyle{superraggedborder} style is like the above, but with
+% horizontal and vertical lines:
+% \begin{macrocode}
+\newglossarystyle{superraggedborder}{%
+% \end{macrocode}
+% Base it on the glostyle{superragged} style:
+% \begin{macrocode}
+ \setglossarystyle{superragged}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superraggedheader}
+% The \glostyle{superraggedheader} style is like the
+% \glostyle{super} style, but with a header:
+% \begin{macrocode}
+\newglossarystyle{superraggedheader}{%
+% \end{macrocode}
+% Base it on the glostyle{superragged} style:
+% \begin{macrocode}
+ \setglossarystyle{superragged}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns, a header and no tail:
+% \begin{macrocode}
+\renewenvironment{theglossary}%
+ {\tablehead{\bfseries \entryname & \bfseries \descriptionname
+ \tabularnewline}%
+ \tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superraggedheaderborder}
+% The \glostyle{superraggedheaderborder} style is like
+% the \glostyle{superragged} style but with a header and border:
+% \begin{macrocode}
+\newglossarystyle{superraggedheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{super} style:
+% \begin{macrocode}
+ \setglossarystyle{superragged}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% two columns, a header and horizontal lines above and below the
+% table:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline\bfseries \entryname &
+ \bfseries \descriptionname\tabularnewline\hline}%
+ \tabletail{\hline}
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superragged3col}
+% The \glostyle{superragged3col} style is like the \glostyle{superragged}
+% style, but with 3 columns:
+% \begin{macrocode}
+\newglossarystyle{superragged3col}{%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+% \end{macrocode}
+% Do nothing at the start of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a row (name in first column,
+% description in second column, page list in last column):
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries on a row (no name, description in second column,
+% page list in last column):
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superragged3colborder}
+% The \glostyle{superragged3colborder} style is like the
+% \glostyle{superragged3col} style, but with a border:
+% \begin{macrocode}
+\newglossarystyle{superragged3colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{superragged3col} style:
+% \begin{macrocode}
+ \setglossarystyle{superragged3col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superragged3colheader}
+% The \glostyle{superragged3colheader} style is like
+% the \glostyle{superragged3col} style but with a header row:
+% \begin{macrocode}
+\newglossarystyle{superragged3colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{superragged3col} style:
+% \begin{macrocode}
+ \setglossarystyle{superragged3col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns, a header and no tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{superraggedright3colheaderborder}
+% The \glostyle{superragged3colheaderborder} style is like
+% the \glostyle{superragged3col} style but with a header and border:
+% \begin{macrocode}
+\newglossarystyle{superragged3colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{superragged3colborder} style:
+% \begin{macrocode}
+ \setglossarystyle{superragged3colborder}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% three columns, a header with horizontal lines and a horizontal
+% line in the tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}{|l|>{\raggedright}p{\glsdescwidth}|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuperragged4col}
+% The \glostyle{altsuperragged4col} glossary style is like
+% \glostyle{altsuper4col} style in the \isty{glossary-super}
+% package but uses ragged right formatting in the description
+% and page list columns.
+% \begin{macrocode}
+\newglossarystyle{altsuperragged4col}{%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and no head or tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+% \end{macrocode}
+% Do nothing at the start of the table:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries on a row with the name in the first
+% column, description in second column, symbol in third column
+% and page list in last column:
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1} &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+% \end{macrocode}
+% Sub entries on a row with no name, the description in the second
+% column, symbol in third column and page list in last column:
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2} &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+% Blank row between groups:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+%\changes{4.23}{2016-04-30}{check for nogroupskip changed}
+%The check for \pkgopt{nogroupskip} must occur outside
+%\cs{glsgroupskip}
+%(\url{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=108})
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & & \tabularnewline}%
+ \fi
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuperragged4colheader}
+% The \glostyle{altsuperragged4colheader} style is like
+% the \glostyle{altsuperragged4col} style but with a header row.
+% \begin{macrocode}
+\newglossarystyle{altsuperragged4colheader}{%
+% \end{macrocode}
+% Base it on the glostyle{altsuperragged4col} style:
+% \begin{macrocode}
+ \setglossarystyle{altsuperragged4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns, a header and no tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\bfseries\entryname&\bfseries\descriptionname&
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuperragged4colborder}
+% The \glostyle{altsuperragged4colborder} style is like
+% the \glostyle{altsuperragged4col} style but with a border.
+% \begin{macrocode}
+\newglossarystyle{altsuperragged4colborder}{%
+% \end{macrocode}
+% Base it on the glostyle{altsuperragged4col} style:
+% \begin{macrocode}
+ \setglossarystyle{altsuper4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and a horizontal line in the head and tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline}\tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{altsuperragged4colheaderborder}
+% The \glostyle{altsuperragged4colheaderborder} style is like
+% the \glostyle{altsuperragged4col} style but with a header and border.
+% \begin{macrocode}
+\newglossarystyle{altsuperragged4colheaderborder}{%
+% \end{macrocode}
+% Base it on the glostyle{altsuperragged4col} style:
+% \begin{macrocode}
+ \setglossarystyle{altsuperragged4col}%
+% \end{macrocode}
+% Put the glossary in a \env{supertabular} environment with
+% four columns and a header bordered by horizontal lines and
+% a horizontal line in the tail:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\tablehead{\hline
+ \bfseries\entryname &
+ \bfseries\descriptionname &
+ \bfseries\symbolname &
+ \bfseries\pagelistname\tabularnewline\hline}%
+ \tabletail{\hline}%
+ \begin{supertabular}%
+ {|l|>{\raggedright}p{\glsdescwidth}|l|%
+ >{\raggedright}p{\glspagelistwidth}|}}%
+ {\end{supertabular}}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-superragged.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-tree.sty>
+% \end{macrocode}
+%\fi
+%\section{Tree Styles (glossary-tree.sty)}
+% The \isty{glossary-tree} style file defines glossary styles
+% that have a tree-like structure. These are designed for
+% hierarchical glossaries.
+% \begin{macrocode}
+\ProvidesPackage{glossary-tree}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%
+%\begin{macro}{\indexspace}
+%\changes{4.13}{2015-02-03}{new}
+% There are a few classes that don't define \cs{indexspace}, so
+% provide a definition if it hasn't been defined.
+% \begin{macrocode}
+\providecommand{\indexspace}{%
+ \par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@ \relax
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreenamefmt}
+%\changes{4.08}{2014-07-30}{new}
+% Format used to display the name in the tree styles. (This may be
+% counteracted by \ics{glsnamefont}.) This command was previously also used to
+% format the group headings.
+% \begin{macrocode}
+\newcommand*{\glstreenamefmt}[1]{\textbf{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreegroupheaderfmt}
+%\changes{4.22}{2016-04-19}{new}
+% Format used to display the group header in the tree styles.
+% Before v4.22, \cs{glstreenamefmt} was used for the group header,
+% so the default definition uses that to help maintain
+% backward-compatibility, since in previous versions redefining
+% \cs{glstreenamefmt} would've also affected the group headings.
+% \begin{macrocode}
+\newcommand*{\glstreegroupheaderfmt}[1]{\glstreenamefmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreenavigationfmt}
+%\changes{4.22}{2016-04-19}{new}
+% Format used to display the navigation header in the tree styles.
+% \begin{macrocode}
+\newcommand*{\glstreenavigationfmt}[1]{\glstreenamefmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%Allow the user to adjust the \glostyle{index} style without disturbing the index.
+%\begin{macro}{\glstreeitem}
+%Top level item used in \glostyle{index} style.
+%\changes{4.26}{2016-10-12}{new}
+% \begin{macrocode}
+\ifdef\@idxitem
+{\newcommand{\glstreeitem}{\@idxitem}}
+{\newcommand{\glstreeitem}{\par\hangindent40\p@}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreesubitem}
+%\changes{4.26}{2016-10-12}{new}
+%Level~1 item used in \glostyle{index} style.
+% \begin{macrocode}
+\ifdef\subitem
+{\let\glstreesubitem\subitem}
+{\newcommand\glstreesubitem{\glstreeitem\hspace*{20\p@}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreesubsubitem}
+%\changes{4.26}{2016-10-12}{new}
+%Level~1 item used in \glostyle{index} style.
+% \begin{macrocode}
+\ifdef\subsubitem
+{\let\glstreesubsubitem\subsubitem}
+{\newcommand\glstreesubsubitem{\glstreeitem\hspace*{30\p@}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreepredesc}
+%Allow the user to adjust the space before the description (except
+%for the \glostyle{alttree} style).
+%\changes{4.26}{2016-10-12}{new}
+% \begin{macrocode}
+\newcommand{\glstreepredesc}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreechildpredesc}
+%Allow the user to adjust the space before the description for
+%sub-entries (except for the \glostyle{treenoname} and
+%\glostyle{alttree} style).
+%\changes{4.26}{2016-10-12}{new}
+% \begin{macrocode}
+\newcommand{\glstreechildpredesc}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{index}
+% The \glostyle{index} glossary style
+% is similar in style to the way indices are usually typeset
+% using \cs{item}, \cs{subitem} and \cs{subsubitem}.
+% The entry name is
+% set in bold. If an entry has a symbol, it is placed in
+% brackets after the name. Then the description is displayed,
+% followed by the number list. This style allows up to three
+% levels.
+% \begin{macrocode}
+\newglossarystyle{index}{%
+% \end{macrocode}
+% Set the paragraph indentation and skip and define \ics{item}
+% to be the same as that used by \env{theindex}:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+% \end{macrocode}
+%\changes{3.08a}{2013-09-28}{added paragraph break at end of environment}
+% \begin{macrocode}
+ {\par}%
+% \end{macrocode}
+% Do nothing at the start of the environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headers:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entry starts a new item with the name in bold
+% followed by the symbol in brackets (if it exists), the description
+% and the page list.
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand*{\glossentry}[2]{%
+ \item\glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc \glossentrydesc{##1}\glspostdescription\space ##2%
+ }%
+% \end{macrocode}
+% Sub entries: level 1 entries use \ics{subitem}, levels greater
+% than~1 use \ics{subsubitem}. The level ("##1") shouldn't be 0,
+% as that's catered by \cs{glossentry}, but for completeness,
+% if the level is 0, \ics{item} is used. The name is put in bold,
+% followed by the symbol in brackets (if it exists), the description
+% and the page list.
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+ % level 0
+ \item
+ \or
+ % level 1
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ % all other levels
+ \subsubitem
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
+ \glstreechildpredesc\glossentrydesc{##2}\glspostdescription\space ##3%
+ }%
+% \end{macrocode}
+% Vertical gap between groups is the same as that used by indices:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{indexgroup}
+% The \glostyle{indexgroup} style is like the \glostyle{index}
+% style but has headings.
+% \begin{macrocode}
+\newglossarystyle{indexgroup}{%
+% \end{macrocode}
+% Base it on the glostyle{index} style:
+% \begin{macrocode}
+ \setglossarystyle{index}%
+% \end{macrocode}
+% Add a heading for each group. This puts the group's title in
+% bold followed by a vertical gap.
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}%
+ \indexspace
+ }%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{indexhypergroup}
+% The \glostyle{indexhypergroup} style is like the
+% \glostyle{indexgroup} style but has hyper navigation.
+% \begin{macrocode}
+\newglossarystyle{indexhypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{index} style:
+% \begin{macrocode}
+ \setglossarystyle{index}%
+% \end{macrocode}
+% Put navigation links to the groups at the start of the glossary:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}\indexspace}%
+% \end{macrocode}
+% Add a heading for each group (with a target). The group's title is
+% in bold followed by a vertical gap.
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}%
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{tree}
+% The \glostyle{tree} glossary style
+% is similar in style to the \glostyle{index} style, but
+% can have arbitrary levels.
+% \begin{macrocode}
+\newglossarystyle{tree}{%
+% \end{macrocode}
+% Set the paragraph indentation and skip:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+% \end{macrocode}
+% Do nothing at the start of the \env{theglossary} environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries: name in bold, followed by symbol in
+% brackets (if it exists), the description and the page list:
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
+ }%
+% \end{macrocode}
+% Sub entries: level \meta{n} is indented by \meta{n} times
+% \ics{glstreeindent}. The name is in bold, followed by the
+% symbol in brackets (if it exists), the description and the
+% page list.
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \ifglshassymbol{##2}{\space(\glossentrysymbol{##2})}{}%
+ \glstreechildpredesc\glossentrydesc{##2}\glspostdescription\space ##3\par
+ }%
+% \end{macrocode}
+% Vertical gap between groups is the same as that used by
+% indices:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{treegroup}
+% Like the \glostyle{tree} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{treegroup}{%
+% \end{macrocode}
+% Base it on the glostyle{tree} style:
+% \begin{macrocode}
+ \setglossarystyle{tree}%
+% \end{macrocode}
+% Each group has a heading (in bold) followed by a vertical gap):
+% \begin{macrocode}
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt{\glsgetgrouptitle{##1}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{treehypergroup}
+% The \glostyle{treehypergroup} style is like the \glostyle{treegroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{treehypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{tree} style:
+% \begin{macrocode}
+ \setglossarystyle{tree}%
+% \end{macrocode}
+% Put navigation links to the groups at the start of the
+% \env{theglossary} environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Each group has a heading (in bold with a target) followed by a
+% vertical gap):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glstreeindent}
+% Length governing left indent for each level of the \glostyle{tree}
+% style.
+% \begin{macrocode}
+\newlength\glstreeindent
+\setlength{\glstreeindent}{10pt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{treenoname}
+% The \glostyle{treenoname} glossary style
+% is like the \glostyle{tree} style, but
+% doesn't print the name or symbol for sub-levels.
+% \begin{macrocode}
+\newglossarystyle{treenoname}{%
+% \end{macrocode}
+% Set the paragraph indentation and skip:
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+% \end{macrocode}
+% No header:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+% \end{macrocode}
+% No group headings:
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Main (level 0) entries: the name is in bold, followed by the
+% symbol in brackets (if it exists), the description and the
+% page list.
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \ifglshassymbol{##1}{\space(\glossentrysymbol{##1})}{}%
+ \glstreepredesc\glossentrydesc{##1}\glspostdescription\space##2\par
+ }%
+% \end{macrocode}
+% Sub entries: level \meta{n} is indented by \meta{n} times
+% \ics{glstreeindent}. The name and symbol are omitted. The
+% description followed by the page list are displayed.
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ \glossentrydesc{##2}\glspostdescription\space##3\par
+ }%
+% \end{macrocode}
+% Vertical gap between groups is the same as that used by indices:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{treenonamegroup}
+% Like the \glostyle{treenoname} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{treenonamegroup}{%
+% \end{macrocode}
+% Base it on the glostyle{treenoname} style:
+% \begin{macrocode}
+ \setglossarystyle{treenoname}%
+% \end{macrocode}
+% Give each group a heading:
+% \begin{macrocode}
+ \renewcommand{\glsgroupheading}[1]{\par
+ \noindent\glstreegroupheaderfmt
+ {\glsgetgrouptitle{##1}}\par\indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{treenonamehypergroup}
+% The \glostyle{treenonamehypergroup} style is like the \glostyle{treenonamegroup}
+% style, but has a set of links to the groups at the
+% start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{treenonamehypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{treenoname} style:
+% \begin{macrocode}
+ \setglossarystyle{treenoname}%
+% \end{macrocode}
+% Put navigation links to the groups at the start of the
+% \env{theglossary} environment:
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Each group has a heading (in bold with a target) followed by a
+% vertical gap):
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{macro}{\glsfindwidesttoplevelname}
+%\changes{4.22}{2016-04-19}{new}
+% Find the widest name over all parentless entries in the
+% given glossary or glossaries.
+% \begin{macrocode}
+\newrobustcmd*{\glsfindwidesttoplevelname}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \letcs{\@glswidestname}{glo@\glsdetoklabel{\@glo@label}@name}%
+ \fi
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetwidest}
+% \cs{glssetwidest}\oarg{level}\marg{text} sets the widest
+% text for the given level. It is used by the
+% \glostyle{alttree} glossary styles to determine the
+% indentation of each level.
+% \begin{macrocode}
+\newcommand*{\glssetwidest}[2][0]{%
+ \expandafter\def\csname @glswidestname\romannumeral#1\endcsname{%
+ #2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glswidestname}
+% Initialise \cs{@glswidestname}.
+% \begin{macrocode}
+\newcommand*{\@glswidestname}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstreenamebox}
+% Used by the \glostyle{alttree} style to create the box for the
+% name and associated information.
+%\changes{4.19}{2015-10-31}{new}
+% \begin{macrocode}
+\newcommand*{\glstreenamebox}[2]{%
+ \makebox[#1][l]{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{alttree}
+% The \glostyle{alttree} glossary style
+% is similar in style to the \glostyle{tree} style, but
+% the indentation is obtained from the width of
+% \cs{@glswidestname} which is set using \cs{glssetwidest}.
+% \begin{macrocode}
+\newglossarystyle{alttree}{%
+% \end{macrocode}
+% Redefine \env{theglossary} environment.
+% \begin{macrocode}
+ \renewenvironment{theglossary}%
+ {\def\@gls@prevlevel{-1}%
+ \mbox{}\par}%
+ {\par}%
+% \end{macrocode}
+% Set the header and group headers to nothing.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+% \end{macrocode}
+% Redefine the way that the level~0 entries are displayed.
+%\changes{3.08a}{2013-09-28}{updated to use \cs{glossentry} and
+%\cs{subglossentry}}
+% \begin{macrocode}
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+% \end{macrocode}
+% Find out how big the indentation should be by measuring the
+% widest entry.
+% \begin{macrocode}
+ \settowidth{\glstreeindent}{\glstreenamefmt{\@glswidestname\space}}%
+ \fi
+% \end{macrocode}
+% Set the hangindent and paragraph indent.
+%\changes{4.04}{2014-03-06}{moved hangindent and parindent assignments
+%outside level test}
+% \begin{macrocode}
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+% \end{macrocode}
+% Put the name to the left of the paragraph block.
+% \begin{macrocode}
+ \makebox[0pt][r]{\glstreenamebox{\glstreeindent}{%
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}}}%
+% \end{macrocode}
+% If the symbol is missing, ignore it, otherwise put it in
+% brackets.
+%\changes{4.10}{2014-08-27}{moved space after symbol}
+% \begin{macrocode}
+ \ifglshassymbol{##1}{(\glossentrysymbol{##1})\space}{}%
+% \end{macrocode}
+% Do the description followed by the description terminator and
+% location list.
+% \begin{macrocode}
+ \glossentrydesc{##1}\glspostdescription \space ##2\par
+% \end{macrocode}
+% Set the previous level to 0.
+% \begin{macrocode}
+ \def\@gls@prevlevel{0}%
+ }%
+% \end{macrocode}
+% Redefine the way sub-entries are displayed.
+% \begin{macrocode}
+ \renewcommand{\subglossentry}[3]{%
+% \end{macrocode}
+% Increment and display the sub-entry counter if this is a level~1
+% entry and the sub-entry counter is in use.
+% \begin{macrocode}
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+% \end{macrocode}
+% If the level hasn't changed, keep the same settings, otherwise
+% adjust \cs{glstreeindent} accordingly.
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+% \end{macrocode}
+% Compute the widest entry for this level, or for level~0 if not
+% defined for this level. Store in \cs{gls@tmplen}
+% \begin{macrocode}
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+% \end{macrocode}
+% Determine if going up or down a level
+% \begin{macrocode}
+ \ifnum\@gls@prevlevel<##1\relax
+% \end{macrocode}
+% Depth has increased, so add the width of the widest entry to
+% \cs{glstreeindent}.
+% \begin{macrocode}
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+% \end{macrocode}
+% Depth has decreased, so subtract width of the widest entry
+% from the previous level to \cs{glstreeindent}. First
+% determine the width of the widest entry for the previous level
+% and store in \cs{glstreeindent}.
+% \begin{macrocode}
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+% \end{macrocode}
+% Subtract this length from the previous level's paragraph indent
+% and set to \cs{glstreeindent}.
+% \begin{macrocode}
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+% \end{macrocode}
+% Set the hanging indentation.
+% \begin{macrocode}
+ \hangindent\glstreeindent
+% \end{macrocode}
+% Put the name to the left of the paragraph block
+% \begin{macrocode}
+ \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{%
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}%
+% \end{macrocode}
+% If the symbol is missing, ignore it, otherwise put it in
+% brackets.
+%\changes{4.10}{2014-08-27}{moved space after symbol}
+% \begin{macrocode}
+ \ifglshassymbol{##2}{(\glossentrysymbol{##2})\space}{}%
+% \end{macrocode}
+% Do the description followed by the description terminator and
+% location list.
+% \begin{macrocode}
+ \glossentrydesc{##2}\glspostdescription\space ##3\par
+% \end{macrocode}
+% Set the previous level macro to the current level.
+% \begin{macrocode}
+ \def\@gls@prevlevel{##1}%
+ }%
+% \end{macrocode}
+% Vertical gap between groups is the same as that used by indices:
+%\changes{3.03}{2012/09/21}{added check for glsnogroupskip}
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\indexspace\fi}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{alttreegroup}
+% Like the \glostyle{alttree} style but the glossary groups have
+% headings.
+% \begin{macrocode}
+\newglossarystyle{alttreegroup}{%
+% \end{macrocode}
+% Base it on the glostyle{alttree} style:
+% \begin{macrocode}
+ \setglossarystyle{alttree}%
+% \end{macrocode}
+% Give each group a heading.
+% \begin{macrocode}
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsgetgrouptitle{##1}}%
+ \par\indexspace}%
+}
+% \end{macrocode}
+%\end{style}
+%
+%\begin{style}{alttreehypergroup}
+% The \glostyle{alttreehypergroup} style is like the
+% \glostyle{alttreegroup} style, but has a set of links to the
+% groups at the start of the glossary.
+% \begin{macrocode}
+\newglossarystyle{alttreehypergroup}{%
+% \end{macrocode}
+% Base it on the glostyle{alttree} style:
+% \begin{macrocode}
+ \setglossarystyle{alttree}%
+% \end{macrocode}
+% Put the navigation links in the header
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}\par\indexspace}%
+% \end{macrocode}
+% Put a hypertarget at the start of each group
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}\par
+ \indexspace}}
+% \end{macrocode}
+%\end{style}
+%
+%\iffalse
+% \begin{macrocode}
+%</glossary-tree.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-207.sty>
+% \end{macrocode}
+%\fi
+%\chapter{Backwards Compatibility}
+%\section{glossaries-compatible-207}
+% Provides compatibility with version 2.07 and below. This uses
+% original \sty{glossaries} xindy and makeindex formatting, so can
+% be used with old documents that had customized style files, but
+% hyperlinks may not work properly.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-compatible-207}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%\begin{macro}{\GlsAddXdyAttribute}
+% Adds an attribute in old format.
+% \begin{macrocode}
+\ifglsxindy
+ \renewcommand*\GlsAddXdyAttribute[1]{%
+ \edef\@xdyattributes{\@xdyattributes ^^J \string"#1\string"}%
+ \expandafter\toks@\expandafter{\@xdylocref}%
+ \edef\@xdylocref{\the\toks@ ^^J%
+ (markup-locref
+ :open \string"\string~n\string\setentrycounter
+ {\noexpand\glscounter}%
+ \expandafter\string\csname#1\endcsname
+ \expandafter\@gobble\string\{\string" ^^J
+ :close \string"\expandafter\@gobble\string\}\string" ^^J
+ :attr \string"#1\string")}}
+% \end{macrocode}
+% Only has an effect before \ics{writeist}:
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsAddXdyCounters}
+% \begin{macrocode}
+\renewcommand*\GlsAddXdyCounters[1]{%
+ \GlossariesWarning{\string\GlsAddXdyCounters\space not available
+ in compatibility mode.}%
+}
+% \end{macrocode}
+%\end{macro}
+% Add predefined attributes
+% \begin{macrocode}
+ \GlsAddXdyAttribute{glsnumberformat}
+ \GlsAddXdyAttribute{textrm}
+ \GlsAddXdyAttribute{textsf}
+ \GlsAddXdyAttribute{texttt}
+ \GlsAddXdyAttribute{textbf}
+ \GlsAddXdyAttribute{textmd}
+ \GlsAddXdyAttribute{textit}
+ \GlsAddXdyAttribute{textup}
+ \GlsAddXdyAttribute{textsl}
+ \GlsAddXdyAttribute{textsc}
+ \GlsAddXdyAttribute{emph}
+ \GlsAddXdyAttribute{glshypernumber}
+ \GlsAddXdyAttribute{hyperrm}
+ \GlsAddXdyAttribute{hypersf}
+ \GlsAddXdyAttribute{hypertt}
+ \GlsAddXdyAttribute{hyperbf}
+ \GlsAddXdyAttribute{hypermd}
+ \GlsAddXdyAttribute{hyperit}
+ \GlsAddXdyAttribute{hyperup}
+ \GlsAddXdyAttribute{hypersl}
+ \GlsAddXdyAttribute{hypersc}
+ \GlsAddXdyAttribute{hyperemph}
+% \end{macrocode}
+%
+%\begin{macro}{\GlsAddXdyLocation}
+% Restore v2.07 definition:
+% \begin{macrocode}
+\ifglsxindy
+ \renewcommand*{\GlsAddXdyLocation}[2]{%
+ \edef\@xdyuserlocationdefs{%
+ \@xdyuserlocationdefs ^^J%
+ (define-location-class \string"#1\string"^^J\space\space
+ \space(#2))
+ }%
+ \edef\@xdyuserlocationnames{%
+ \@xdyuserlocationnames^^J\space\space\space
+ \string"#1\string"}%
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@do@wrglossary}
+% \begin{macrocode}
+\renewcommand{\@do@wrglossary}[1]{%
+% \end{macrocode}
+% Determine whether to use \app{xindy} or \app{makeindex}
+% syntax
+% \begin{macrocode}
+\ifglsxindy
+% \end{macrocode}
+% Need to determine if the formatting information starts with
+% a ( or ) indicating a range.
+% \begin{macrocode}
+ \expandafter\@glo@check@mkidxrangechar\@glsnumberformat\@nil
+ \def\@glo@range{}%
+ \expandafter\if\@glo@prefix(\relax
+ \def\@glo@range{:open-range}%
+ \else
+ \expandafter\if\@glo@prefix)\relax
+ \def\@glo@range{:close-range}%
+ \fi
+ \fi
+% \end{macrocode}
+% Get the location and escape any special characters
+% \begin{macrocode}
+ \protected@edef\@glslocref{\theglsentrycounter}%
+ \@gls@checkmkidxchars\@glslocref
+% \end{macrocode}
+% Write to the glossary file using \app{xindy} syntax.
+% \begin{macrocode}
+ \glossary[\csname glo@#1@type\endcsname]{%
+ (indexentry :tkey (\csname glo@#1@index\endcsname)
+ :locref \string"\@glslocref\string" %
+ :attr \string"\@glo@suffix\string" \@glo@range
+ )
+ }%
+\else
+% \end{macrocode}
+% Convert the format information into the format required for
+% \app{makeindex}
+% \begin{macrocode}
+ \@set@glo@numformat\@glo@numfmt\@gls@counter\@glsnumberformat
+% \end{macrocode}
+% Write to the glossary file using \app{makeindex} syntax.
+% \begin{macrocode}
+ \glossary[\csname glo@#1@type\endcsname]{%
+ \string\glossaryentry{\csname glo@#1@index\endcsname
+ \@gls@encapchar\@glo@numfmt}{\theglsentrycounter}}%
+\fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@set@glo@numformat}
+% Only had 3 arguments in v2.07
+% \begin{macrocode}
+\def\@set@glo@numformat#1#2#3{%
+ \expandafter\@glo@check@mkidxrangechar#3\@nil
+ \protected@edef#1{%
+ \@glo@prefix setentrycounter[]{#2}%
+ \expandafter\string\csname\@glo@suffix\endcsname
+ }%
+ \@gls@checkmkidxchars#1%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\writeist}
+% Redefine \cs{writeist} back to the way it was in v2.07, but change
+% \cs{istfile} to \cs{glswrite}.
+% \begin{macrocode}
+\ifglsxindy
+ \def\writeist{%
+ \openout\glswrite=\istfilename
+ \write\glswrite{;; xindy style file created by the glossaries
+ package in compatible-2.07 mode}%
+ \write\glswrite{;; for document '\jobname' on
+ \the\year-\the\month-\the\day}%
+ \write\glswrite{^^J; required styles^^J}
+ \@for\@xdystyle:=\@xdyrequiredstyles\do{%
+ \ifx\@xdystyle\@empty
+ \else
+ \protected@write\glswrite{}{(require
+ \string"\@xdystyle.xdy\string")}%
+ \fi
+ }%
+ \write\glswrite{^^J%
+ ; list of allowed attributes (number formats)^^J}%
+ \write\glswrite{(define-attributes ((\@xdyattributes)))}%
+ \write\glswrite{^^J; user defined alphabets^^J}%
+ \write\glswrite{\@xdyuseralphabets}%
+ \write\glswrite{^^J; location class definitions^^J}%
+ \protected@edef\@gls@roman{\@roman{0\string"
+ \string"roman-numbers-lowercase\string" :sep \string"}}%
+ \@onelevel@sanitize\@gls@roman
+ \edef\@tmp{\string" \string"roman-numbers-lowercase\string"
+ :sep \string"}%
+ \@onelevel@sanitize\@tmp
+ \ifx\@tmp\@gls@roman
+ \write\glswrite{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-lowercase\string")
+ :min-range-length \@glsminrange)}%
+ \else
+ \write\glswrite{(define-location-class
+ \string"roman-page-numbers\string"^^J\space\space\space
+ (:sep "\@gls@roman")
+ :min-range-length \@glsminrange)}%
+ \fi
+ \write\glswrite{(define-location-class
+ \string"Roman-page-numbers\string"^^J\space\space\space
+ (\string"roman-numbers-uppercase\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"arabic-page-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"alpha-page-numbers\string"^^J\space\space\space
+ (\string"alpha\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"Alpha-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"Appendix-page-numbers\string"^^J\space\space\space
+ (\string"ALPHA\string"
+ :sep \string"\@glsAlphacompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{(define-location-class
+ \string"arabic-section-numbers\string"^^J\space\space\space
+ (\string"arabic-numbers\string"
+ :sep \string"\glscompositor\string"
+ \string"arabic-numbers\string")
+ :min-range-length \@glsminrange)}%
+ \write\glswrite{^^J; user defined location classes}%
+ \write\glswrite{\@xdyuserlocationdefs}%
+ \write\glswrite{^^J; define cross-reference class^^J}%
+ \write\glswrite{(define-crossref-class \string"see\string"
+ :unverified )}%
+ \write\glswrite{(markup-crossref-list
+ :class \string"see\string"^^J\space\space\space
+ :open \string"\string\glsseeformat\string"
+ :close \string"{}\string")}%
+ \write\glswrite{^^J; define the order of the location classes}%
+ \write\glswrite{(define-location-class-order
+ (\@xdylocationclassorder))}%
+ \write\glswrite{^^J; define the glossary markup^^J}%
+ \write\glswrite{(markup-index^^J\space\space\space
+ :open \string"\string
+ \glossarysection[\string\glossarytoctitle]{\string
+ \glossarytitle}\string\glossarypreamble\string~n\string\begin
+ {theglossary}\string\glossaryheader\string~n\string" ^^J\space
+ \space\space:close \string"\expandafter\@gobble
+ \string\%\string~n\string
+ \end{theglossary}\string\glossarypostamble
+ \string~n\string" ^^J\space\space\space
+ :tree)}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\string~n\string")}%
+ \write\glswrite{(markup-indexentry
+ :open \string"\string\relax \string\glsresetentrylist
+ \string~n\string")}%
+ \write\glswrite{(markup-locclass-list :open
+ \string"\glsopenbrace\string\glossaryentrynumbers
+ \glsopenbrace\string\relax\space \string"^^J\space\space\space
+ :sep \string", \string"
+ :close \string"\glsclosebrace\glsclosebrace\string")}%
+ \write\glswrite{(markup-locref-list
+ :sep \string"\string\delimN\space\string")}%
+ \write\glswrite{(markup-range
+ :sep \string"\string\delimR\space\string")}%
+ \@onelevel@sanitize\gls@suffixF
+ \@onelevel@sanitize\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixF" :length 1 :ignore-end)}%
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{(markup-range
+ :close "\gls@suffixFF" :length 2 :ignore-end)}%
+ \fi
+ \write\glswrite{^^J; define format to use for locations^^J}%
+ \write\glswrite{\@xdylocref}%
+ \write\glswrite{^^J; define letter group list format^^J}%
+ \write\glswrite{(markup-letter-group-list
+ :sep \string"\string\glsgroupskip\string~n\string")}%
+ \write\glswrite{^^J; letter group headings^^J}%
+ \write\glswrite{(markup-letter-group
+ :open-head \string"\string\glsgroupheading
+ \glsopenbrace\string"^^J\space\space\space
+ :close-head \string"\glsclosebrace\string")}%
+ \write\glswrite{^^J; additional letter groups^^J}%
+ \write\glswrite{\@xdylettergroups}%
+ \write\glswrite{^^J; additional sort rules^^J}
+ \write\glswrite{\@xdysortrules}%
+ \noist}
+\else
+ \edef\@gls@actualchar{\string?}
+ \edef\@gls@encapchar{\string|}
+ \edef\@gls@levelchar{\string!}
+ \edef\@gls@quotechar{\string"}
+ \def\writeist{\relax
+ \openout\glswrite=\istfilename
+ \write\glswrite{\expandafter\@gobble\string\% makeindex style file
+ created by the glossaries package}
+ \write\glswrite{\expandafter\@gobble\string\% for document
+ '\jobname' on \the\year-\the\month-\the\day}
+ \write\glswrite{actual '\@gls@actualchar'}
+ \write\glswrite{encap '\@gls@encapchar'}
+ \write\glswrite{level '\@gls@levelchar'}
+ \write\glswrite{quote '\@gls@quotechar'}
+ \write\glswrite{keyword \string"\string\\glossaryentry\string"}
+ \write\glswrite{preamble \string"\string\\glossarysection[\string
+ \\glossarytoctitle]{\string\\glossarytitle}\string
+ \\glossarypreamble\string\n\string\\begin{theglossary}\string
+ \\glossaryheader\string\n\string"}
+ \write\glswrite{postamble \string"\string\%\string\n\string
+ \\end{theglossary}\string\\glossarypostamble\string\n
+ \string"}
+ \write\glswrite{group_skip \string"\string\\glsgroupskip\string\n
+ \string"}
+ \write\glswrite{item_0 \string"\string\%\string\n\string"}
+ \write\glswrite{item_1 \string"\string\%\string\n\string"}
+ \write\glswrite{item_2 \string"\string\%\string\n\string"}
+ \write\glswrite{item_01 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x1
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{item_12 \string"\string\%\string\n\string"}
+ \write\glswrite{item_x2
+ \string"\string\\relax \string\\glsresetentrylist\string\n
+ \string"}
+ \write\glswrite{delim_0 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_1 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_2 \string"\string\{\string
+ \\glossaryentrynumbers\string\{\string\\relax \string"}
+ \write\glswrite{delim_t \string"\string\}\string\}\string"}
+ \write\glswrite{delim_n \string"\string\\delimN \string"}
+ \write\glswrite{delim_r \string"\string\\delimR \string"}
+ \write\glswrite{headings_flag 1}
+ \write\glswrite{heading_prefix
+ \string"\string\\glsgroupheading\string\{\string"}
+ \write\glswrite{heading_suffix
+ \string"\string\}\string\\relax
+ \string\\glsresetentrylist \string"}
+ \write\glswrite{symhead_positive \string"glssymbols\string"}
+ \write\glswrite{numhead_positive \string"glsnumbers\string"}
+ \write\glswrite{page_compositor \string"\glscompositor\string"}
+ \@gls@escbsdq\gls@suffixF
+ \@gls@escbsdq\gls@suffixFF
+ \ifx\gls@suffixF\@empty
+ \else
+ \write\glswrite{suffix_2p \string"\gls@suffixF\string"}
+ \fi
+ \ifx\gls@suffixFF\@empty
+ \else
+ \write\glswrite{suffix_3p \string"\gls@suffixFF\string"}
+ \fi
+ \noist
+ }
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\noist}
+% \begin{macrocode}
+\renewcommand*{\noist}{\let\writeist\relax}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-207.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-compatible-307.sty>
+% \end{macrocode}
+%\fi
+%\section{glossaries-compatible-307}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-compatible-307}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+%
+% Compatibility macros for predefined glossary styles:
+%\begin{macro}{\compatglossarystyle}
+% Defines a compatibility glossary style.
+% \begin{macrocode}
+\newcommand{\compatglossarystyle}[2]{%
+ \ifcsundef{@glscompstyle@#1}%
+ {%
+ \csdef{@glscompstyle@#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries}{Glossary compatibility style `#1' is already defined}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+% Backward compatible \glostyle{inline} style.
+% \begin{macrocode}
+\compatglossarystyle{inline}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \glsinlinedopostchild
+ \gls@inlinesep
+ \def\glo@desc{##3}%
+ \def\@no@post@desc{\nopostdesc}%
+ \glsentryitem{##1}\glsinlinenameformat{##1}{##2}%
+ \ifx\glo@desc\@no@post@desc
+ \glsinlineemptydescformat{##4}{##5}%
+ \else
+ \ifstrempty{##3}%
+ {\glsinlineemptydescformat{##4}{##5}}%
+ {\glsinlinedescformat{##3}{##4}{##5}}%
+ \fi
+ \ifglshaschildren{##1}%
+ {%
+ \glsresetsubentrycounter
+ \glsinlineparentchildseparator
+ \def\gls@inlinesubsep{}%
+ \def\gls@inlinepostchild{\glsinlinepostchild}%
+ }%
+ {}%
+ \def\gls@inlinesep{\glsinlineseparator}%
+ }%
+% \end{macrocode}
+% Sub-entries display description:
+% \begin{macrocode}
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \gls@inlinesubsep%
+ \glsinlinesubnameformat{##2}{##3}%
+ \glssubentryitem{##2}\glsinlinesubdescformat{##4}{##5}{##6}%
+ \def\gls@inlinesubsep{\glsinlinesubseparator}%
+ }%
+}
+% \end{macrocode}
+% Backward compatible \glostyle{list} style.
+% \begin{macrocode}
+\compatglossarystyle{list}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]
+ ##3\glspostdescription\space ##5}%
+% \end{macrocode}
+% Sub-entries continue on the same line:
+% \begin{macrocode}
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6.}%
+}
+% \end{macrocode}
+% Backward compatible \glostyle{listgroup} style.
+% \begin{macrocode}
+\compatglossarystyle{listgroup}{%
+ \csuse{@glscompstyle@list}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{listhypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{listhypergroup}{%
+ \csuse{@glscompstyle@list}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlist} style.
+% \begin{macrocode}
+\compatglossarystyle{altlist}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]%
+ \mbox{}\par\nobreak\@afterheading
+ ##3\glspostdescription\space ##5}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlistgroup} style.
+% \begin{macrocode}
+\compatglossarystyle{altlistgroup}{%
+ \csuse{@glscompstyle@altlist}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlisthypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{altlisthypergroup}{%
+ \csuse{@glscompstyle@altlist}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{listdotted} style.
+% \begin{macrocode}
+\compatglossarystyle{listdotted}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}\glstarget{##1}{##2}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##3}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{##3}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}##4}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{sublistdotted} style.
+% \begin{macrocode}
+\compatglossarystyle{sublistdotted}{%
+ \csuse{@glscompstyle@listdotted}%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item[\glsentryitem{##1}\glstarget{##1}{##2}]}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long} style.
+% \begin{macrocode}
+\compatglossarystyle{long}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longborder} style.
+% \begin{macrocode}
+\compatglossarystyle{longborder}{%
+ \csuse{@glscompstyle@long}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longheader} style.
+% \begin{macrocode}
+\compatglossarystyle{longheader}{%
+ \csuse{@glscompstyle@long}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{longheaderborder}{%
+ \csuse{@glscompstyle@long}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long3col} style.
+% \begin{macrocode}
+\compatglossarystyle{long3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\\}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long3colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{long3colborder}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long3colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{long3colheader}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long3colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{long3colheaderborder}{%
+ \csuse{@glscompstyle@long3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long4col} style.
+% \begin{macrocode}
+\compatglossarystyle{long4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long4colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{long4colheader}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long4colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{long4colborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{long4colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{long4colheaderborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlong4col} style.
+% \begin{macrocode}
+\compatglossarystyle{altlong4col}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlong4colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{altlong4colheader}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlong4colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altlong4colborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlong4colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altlong4colheaderborder}{%
+ \csuse{@glscompstyle@long4col}%
+}%
+% \end{macrocode}
+%
+% Backward compatible \glostyle{long} style.
+% \begin{macrocode}
+\compatglossarystyle{longragged}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
+ \tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
+ \tabularnewline}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longraggedborder} style.
+% \begin{macrocode}
+\compatglossarystyle{longraggedborder}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longraggedheader} style.
+% \begin{macrocode}
+\compatglossarystyle{longraggedheader}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longraggedheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{longraggedheaderborder}{%
+ \csuse{@glscompstyle@longragged}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longragged3col} style.
+% \begin{macrocode}
+\compatglossarystyle{longragged3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longragged3colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{longragged3colborder}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longragged3colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{longragged3colheader}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{longragged3colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{longragged3colheaderborder}{%
+ \csuse{@glscompstyle@longragged3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlongragged4col} style.
+% \begin{macrocode}
+\compatglossarystyle{altlongragged4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlongragged4colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{altlongragged4colheader}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlongragged4colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altlongragged4colborder}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altlongragged4colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altlongragged4colheaderborder}{%
+ \csuse{@glscompstyle@altlong4col}%
+}%
+% \end{macrocode}
+%
+% Backward compatible \glostyle{index} style.
+% \begin{macrocode}
+\compatglossarystyle{index}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \item\glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ \ifcase##1\relax
+ % level 0
+ \item
+ \or
+ % level 1
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ % all other levels
+ \subsubitem
+ \fi
+ \textbf{\glstarget{##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{indexgroup} style.
+% \begin{macrocode}
+\compatglossarystyle{indexgroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{indexhypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{indexhypergroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{tree} style.
+% \begin{macrocode}
+\compatglossarystyle{tree}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \textbf{\glstarget{##2}{##3}}%
+ \ifx\relax##5\relax
+ \else
+ \space(##5)%
+ \fi
+ \space##4\glspostdescription\space ##6\par}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{treegroup} style.
+% \begin{macrocode}
+\compatglossarystyle{treegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{treehypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{treehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{treenoname} style.
+% \begin{macrocode}
+\compatglossarystyle{treenoname}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}%
+ \ifx\relax##4\relax
+ \else
+ \space(##4)%
+ \fi
+ \space ##3\glspostdescription \space ##5\par}%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ ##4\glspostdescription\space ##6\par}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{treenonamegroup} style.
+% \begin{macrocode}
+\compatglossarystyle{treenonamegroup}{%
+ \csuse{@glscompstyle@treenoname}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{treenonamehypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{treenonamehypergroup}{%
+ \csuse{@glscompstyle@treenoname}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{alttree} style.
+% \begin{macrocode}
+\compatglossarystyle{alttree}{%
+ \renewcommand{\glossaryentryfield}[5]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \settowidth{\glstreeindent}{\textbf{\@glswidestname\space}}%
+ \hangindent\glstreeindent
+ \parindent\glstreeindent
+ \fi
+ \makebox[0pt][r]{\makebox[\glstreeindent][l]{%
+ \glsentryitem{##1}\textbf{\glstarget{##1}{##2}}}}%
+ \ifx\relax##4\relax
+ \else
+ (##4)\space
+ \fi
+ ##3\glspostdescription \space ##5\par
+ \def\@gls@prevlevel{0}%
+ }%
+ \renewcommand{\glossarysubentryfield}[6]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \@ifundefined{@glswidestname\romannumeral##1}{%
+ \settowidth{\gls@tmplen}{\textbf{\@glswidestname\space}}}{%
+ \settowidth{\gls@tmplen}{\textbf{%
+ \csname @glswidestname\romannumeral##1\endcsname\space}}}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \@ifundefined{@glswidestname\romannumeral\@gls@prevlevel}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \@glswidestname\space}}}{%
+ \settowidth{\glstreeindent}{\textbf{%
+ \csname @glswidestname\romannumeral\@gls@prevlevel
+ \endcsname\space}}}%
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \hangindent\glstreeindent
+ \makebox[0pt][r]{\makebox[\gls@tmplen][l]{%
+ \textbf{\glstarget{##2}{##3}}}}%
+ \ifx##5\relax\relax
+ \else
+ (##5)\space
+ \fi
+ ##4\glspostdescription\space ##6\par
+ \def\@gls@prevlevel{##1}%
+ }%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{alttreegroup} style.
+% \begin{macrocode}
+\compatglossarystyle{alttreegroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{alttreehypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{alttreehypergroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+% \end{macrocode}
+%
+% Backward compatible \glostyle{mcolindex} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolindex}{%
+ \csuse{@glscompstyle@index}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcolindexgroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolindexgroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcolindexhypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolindexhypergroup}{%
+ \csuse{@glscompstyle@index}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcoltree} style.
+% \begin{macrocode}
+\compatglossarystyle{mcoltree}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcoltreegroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolindextreegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcoltreehypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolindextreehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcoltreenoname} style.
+% \begin{macrocode}
+\compatglossarystyle{mcoltreenoname}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcoltreenonamegroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcoltreenonamegroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcoltreenonamehypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcoltreenonamehypergroup}{%
+ \csuse{@glscompstyle@tree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcolalttree} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolalttree}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcolalttreegroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolalttreegroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{mcolalttreehypergroup} style.
+% \begin{macrocode}
+\compatglossarystyle{mcolalttreehypergroup}{%
+ \csuse{@glscompstyle@alttree}%
+}%
+% \end{macrocode}
+
+% Backward compatible \glostyle{superragged} style.
+% \begin{macrocode}
+\compatglossarystyle{superragged}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5%
+ \tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6%
+ \tabularnewline}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superraggedborder} style.
+% \begin{macrocode}
+\compatglossarystyle{superraggedborder}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superraggedheader} style.
+% \begin{macrocode}
+\compatglossarystyle{superraggedheader}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superraggedheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{superraggedheaderborder}{%
+ \csuse{@glscompstyle@superragged}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superragged3col} style.
+% \begin{macrocode}
+\compatglossarystyle{superragged3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\tabularnewline}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superragged3colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{superragged3colborder}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superragged3colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{superragged3colheader}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superragged3colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{superragged3colheaderborder}{%
+ \csuse{@glscompstyle@superragged3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuperragged4col} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuperragged4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\tabularnewline}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\tabularnewline}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuperragged4colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuperragged4colheader}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuperragged4colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuperragged4colborder}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuperragged4colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuperragged4colheaderborder}{%
+ \csuse{@glscompstyle@altsuperragged4col}%
+}%
+% \end{macrocode}
+%
+% Backward compatible \glostyle{super} style.
+% \begin{macrocode}
+\compatglossarystyle{super}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3\glspostdescription\space ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4\glspostdescription\space ##6\\}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superborder} style.
+% \begin{macrocode}
+\compatglossarystyle{superborder}{%
+ \csuse{@glscompstyle@super}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superheader} style.
+% \begin{macrocode}
+\compatglossarystyle{superheader}{%
+ \csuse{@glscompstyle@super}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{superheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{superheaderborder}{%
+ \csuse{@glscompstyle@super}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super3col} style.
+% \begin{macrocode}
+\compatglossarystyle{super3col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##6\\}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super3colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{super3colborder}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super3colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{super3colheader}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super3colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{super3colheaderborder}{%
+ \csuse{@glscompstyle@super3col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super4col} style.
+% \begin{macrocode}
+\compatglossarystyle{super4col}{%
+ \renewcommand*{\glossaryentryfield}[5]{%
+ \glsentryitem{##1}\glstarget{##1}{##2} & ##3 & ##4 & ##5\\}%
+ \renewcommand*{\glossarysubentryfield}[6]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}##4 & ##5 & ##6\\}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super4colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{super4colheader}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super4colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{super4colborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{super4colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{super4colheaderborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuper4col} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuper4col}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuper4colheader} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuper4colheader}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuper4colborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuper4colborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+% Backward compatible \glostyle{altsuper4colheaderborder} style.
+% \begin{macrocode}
+\compatglossarystyle{altsuper4colheaderborder}{%
+ \csuse{@glscompstyle@super4col}%
+}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-compatible-307.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-accsupp.sty>
+% \end{macrocode}
+%\fi
+%\chapter{Accessibility Support (glossaries-accsupp Code)}
+%\label{sec:code:accsupp}
+% The \isty{glossaries-accsupp} package is experimental. It is
+% intended to provide a means of using the PDF accessibilty support
+% in glossary entries. See the \isty{accsupp} documentation for
+% further details about accessibility support.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+% \end{macrocode}
+% Package version number now in line with main glossaries package number.
+% \begin{macrocode}
+\ProvidesPackage{glossaries-accsupp}[2019/01/06 v4.42 (NLCT)
+ Experimental glossaries accessibility]
+% \end{macrocode}
+% Pass all options to \sty{glossaries}:
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{glossaries}}
+% \end{macrocode}
+% Process options:
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+% This package should be loaded before \sty{glossaries-extra}, so
+% complain if that has already been loaded.
+% \begin{macrocode}
+\@ifpackageloaded{glossaries-extra}
+{%
+% \end{macrocode}
+%If the \pkgoptfmt{accsupp} option was used, \cs{@glsxtr@doaccsupp}
+%will have been set, otherwise it will be empty.
+%\changes{4.29}{2017-01-19}{added check for \cs{@glsxtr@doaccsupp}}
+% \begin{macrocode}
+ \ifx\@glsxtr@doaccsupp\empty
+ \GlossariesWarning{The `glossaries-accsupp'
+ package has been loaded\MessageBreak
+ after the `glossaries-extra' package. This\MessageBreak
+ can cause a failure to integrate both packages. \MessageBreak
+ Either use the `accsupp' option when you load\MessageBreak
+ `glossaries-extra' or load `glossaries-accsupp'\MessageBreak
+ before loading `glossaries-extra'}%
+ \fi
+}
+{}
+% \end{macrocode}
+%
+%\begin{macro}{\compatibleglossentry}
+% Override style compatibility macros:
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.04}{2014-03-06}{changed \cs{newcommand} to \cs{def} as is may or
+%may not be defined}
+% \begin{macrocode}
+\def\compatibleglossentry#1#2{%
+ \toks@{#2}%
+ \protected@edef\@do@glossentry{%
+ \noexpand\accsuppglossaryentryfield{#1}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#1}@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@glossentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\compatiblesubglossentry}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.04}{2014-03-06}{changed \cs{newcommand} to \cs{def} as is may or
+%may not be defined}
+% \begin{macrocode}
+\def\compatiblesubglossentry#1#2#3{%
+ \toks@{#3}%
+ \protected@edef\@do@subglossentry{%
+ \noexpand\accsuppglossarysubentryfield{\number#1}%
+ {#2}%
+ {\noexpand\glsnamefont
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@name\endcsname}}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@desc\endcsname}%
+ {\expandafter\expandonce\csname glo@\glsdetoklabel{#2}@symbol\endcsname}%
+ {\the\toks@}%
+ }%
+ \@do@subglossentry
+}
+% \end{macrocode}
+%\end{macro}
+% Required packages:
+% \begin{macrocode}
+\RequirePackage{glossaries}
+\RequirePackage{accsupp}
+% \end{macrocode}
+%
+%\section{Defining Replacement Text}
+% The version 0.1 stored the replacement text in the
+% \gloskey{symbol} key. This has been changed to use the
+% new keys defined here. Example of use:
+%\begin{verbatim}
+%\newglossaryentry{dr}{name=Dr,description={},access={Doctor}}
+%\end{verbatim}
+%\begin{key}{access}
+% The replacement text corresponding to the \gloskey{name} key:
+% \begin{macrocode}
+\define@key{glossentry}{access}{%
+ \def\@glo@access{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{textaccess}
+% The replacement text corresponding to the \gloskey{text} key:
+% \begin{macrocode}
+\define@key{glossentry}{textaccess}{%
+ \def\@glo@textaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{firstaccess}
+% The replacement text corresponding to the \gloskey{first} key:
+% \begin{macrocode}
+\define@key{glossentry}{firstaccess}{%
+ \def\@glo@firstaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{pluralaccess}
+% The replacement text corresponding to the \gloskey{plural} key:
+% \begin{macrocode}
+\define@key{glossentry}{pluralaccess}{%
+ \def\@glo@pluralaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{firstpluralaccess}
+% The replacement text corresponding to the \gloskey{firstplural} key:
+% \begin{macrocode}
+\define@key{glossentry}{firstpluralaccess}{%
+ \def\@glo@firstpluralaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{symbolaccess}
+% The replacement text corresponding to the \gloskey{symbol} key:
+% \begin{macrocode}
+\define@key{glossentry}{symbolaccess}{%
+ \def\@glo@symbolaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{symbolpluralaccess}
+% The replacement text corresponding to the \gloskey{symbolplural} key:
+% \begin{macrocode}
+\define@key{glossentry}{symbolpluralaccess}{%
+ \def\@glo@symbolpluralaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{descriptionaccess}
+% The replacement text corresponding to the \gloskey{description} key:
+% \begin{macrocode}
+\define@key{glossentry}{descriptionaccess}{%
+ \def\@glo@descaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{descriptionpluralaccess}
+% The replacement text corresponding to the \gloskey{descriptionplural} key:
+% \begin{macrocode}
+\define@key{glossentry}{descriptionpluralaccess}{%
+ \def\@glo@descpluralaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{shortaccess}
+% The replacement text corresponding to the \gloskey{short} key:
+% \begin{macrocode}
+\define@key{glossentry}{shortaccess}{%
+ \def\@glo@shortaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{shortpluralaccess}
+% The replacement text corresponding to the \gloskey{shortplural} key:
+% \begin{macrocode}
+\define@key{glossentry}{shortpluralaccess}{%
+ \def\@glo@shortpluralaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{longaccess}
+% The replacement text corresponding to the \gloskey{long} key:
+% \begin{macrocode}
+\define@key{glossentry}{longaccess}{%
+ \def\@glo@longaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+%\begin{key}{longpluralaccess}
+% The replacement text corresponding to the \gloskey{longplural} key:
+% \begin{macrocode}
+\define@key{glossentry}{longpluralaccess}{%
+ \def\@glo@longpluralaccess{#1}%
+}
+% \end{macrocode}
+%\end{key}
+% There are no equivalent keys for the \gloskey{user1}\ldots
+%\gloskey{user6} keys. The replacement text would have to be
+% explicitly put in the value, e.g.,
+% "user1={\glsaccsupp{inches}{in}}".
+%
+% Append these new keys to \cs{@gls@keymap}:
+% \begin{macrocode}
+\appto\@gls@keymap{,%
+ {access}{access},%
+ {textaccess}{textaccess},%
+ {firstaccess}{firstaccess},%
+ {pluralaccess}{pluralaccess},%
+ {firstpluralaccess}{firstpluralaccess},%
+ {symbolaccess}{symbolaccess},%
+ {symbolpluralaccess}{symbolpluralaccess},%
+ {descaccess}{descaccess},%
+ {descpluralaccess}{descpluralaccess},%
+ {shortaccess}{shortaccess},%
+ {shortpluralaccess}{shortpluralaccess},%
+ {longaccess}{longaccess},%
+ {longpluralaccess}{longpluralaccess}%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\@gls@noaccess}
+% Indicates that no replacement text has been provided.
+% \begin{macrocode}
+\def\@gls@noaccess{\relax}
+% \end{macrocode}
+%\end{macro}
+%
+% Add to the start hook (the \gloskey{access} key is initialised to
+% the value of the \gloskey{symbol} key at the start for backwards
+% compatibility):
+% \begin{macrocode}
+\let\@gls@oldnewglossaryentryprehook\@newglossaryentryprehook
+\renewcommand*{\@newglossaryentryprehook}{%
+ \@gls@oldnewglossaryentryprehook
+ \def\@glo@access{\@glo@symbol}%
+% \end{macrocode}
+% Initialise the other keys:
+% \begin{macrocode}
+ \def\@glo@textaccess{\@glo@access}%
+ \def\@glo@firstaccess{\@glo@access}%
+ \def\@glo@pluralaccess{\@glo@textaccess}%
+ \def\@glo@firstpluralaccess{\@glo@pluralaccess}%
+ \def\@glo@symbolaccess{\relax}%
+ \def\@glo@symbolpluralaccess{\@glo@symbolaccess}%
+ \def\@glo@descaccess{\relax}%
+ \def\@glo@descpluralaccess{\@glo@descaccess}%
+ \def\@glo@shortaccess{\relax}%
+ \def\@glo@shortpluralaccess{\@glo@shortaccess}%
+ \def\@glo@longaccess{\relax}%
+ \def\@glo@longpluralaccess{\@glo@longaccess}%
+}
+% \end{macrocode}
+% Add to the end hook:
+% \begin{macrocode}
+\let\@gls@oldnewglossaryentryposthook\@newglossaryentryposthook
+\renewcommand*{\@newglossaryentryposthook}{%
+ \@gls@oldnewglossaryentryposthook
+% \end{macrocode}
+% Store the access information:
+% \begin{macrocode}
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @access\endcsname{%
+ \@glo@access}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @textaccess\endcsname{%
+ \@glo@textaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @firstaccess\endcsname{%
+ \@glo@firstaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @pluralaccess\endcsname{%
+ \@glo@pluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @firstpluralaccess\endcsname{%
+ \@glo@firstpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @symbolaccess\endcsname{%
+ \@glo@symbolaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @symbolpluralaccess\endcsname{%
+ \@glo@symbolpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @descaccess\endcsname{%
+ \@glo@descaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @descpluralaccess\endcsname{%
+ \@glo@descpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @shortaccess\endcsname{%
+ \@glo@shortaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @shortpluralaccess\endcsname{%
+ \@glo@shortpluralaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @longaccess\endcsname{%
+ \@glo@longaccess}%
+ \expandafter
+ \protected@xdef\csname glo@\@glo@label @longpluralaccess\endcsname{%
+ \@glo@longpluralaccess}%
+}
+% \end{macrocode}
+%
+%\section{Accessing Replacement Text}
+%\begin{macro}{\glsentryaccess}
+% Get the value of the \gloskey{access} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentryaccess}[1]{%
+ \@gls@entry@field{#1}{access}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrytextaccess}
+% Get the value of the \gloskey{textaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrytextaccess}[1]{%
+ \@gls@entry@field{#1}{textaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryfirstaccess}
+% Get the value of the \gloskey{firstaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentryfirstaccess}[1]{%
+ \@gls@entry@field{#1}{firstaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrypluralaccess}
+% Get the value of the \gloskey{pluralaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrypluralaccess}[1]{%
+ \@gls@entry@field{#1}{pluralaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryfirstpluralaccess}
+% Get the value of the \gloskey{firstpluralaccess} key for the entry with
+% the given label:
+% \begin{macrocode}
+\newcommand*{\glsentryfirstpluralaccess}[1]{%
+ \csname glo@#1@firstpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrysymbolaccess}
+% Get the value of the \gloskey{symbolaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrysymbolaccess}[1]{%
+ \@gls@entry@field{#1}{symbolaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrysymbolpluralaccess}
+% Get the value of the \gloskey{symbolpluralaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrysymbolpluralaccess}[1]{%
+ \@gls@entry@field{#1}{symbolpluralaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrydescaccess}
+% Get the value of the \gloskey{descriptionaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrydescaccess}[1]{%
+ \@gls@entry@field{#1}{descaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrydescpluralaccess}
+% Get the value of the \gloskey{descriptionpluralaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrydescpluralaccess}[1]{%
+ \@gls@entry@field{#1}{descaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryshortaccess}
+% Get the value of the \gloskey{shortaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentryshortaccess}[1]{%
+ \@gls@entry@field{#1}{shortaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentryshortpluralaccess}
+% Get the value of the \gloskey{shortpluralaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentryshortpluralaccess}[1]{%
+ \@gls@entry@field{#1}{shortpluralaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrylongaccess}
+% Get the value of the \gloskey{longaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrylongaccess}[1]{%
+ \@gls@entry@field{#1}{longaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsentrylongpluralaccess}
+% Get the value of the \gloskey{longpluralaccess} key for the entry with
+% the given label:
+%\changes{4.03}{2014-01-20}{switched to using \cs{@gls@entry@field}}
+% \begin{macrocode}
+\newcommand*{\glsentrylongpluralaccess}[1]{%
+ \@gls@entry@field{#1}{longpluralaccess}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccsupp}
+%\changes{4.38}{2018-05-10}{added braces around actual text argument}
+%\begin{definition}
+%\cs{glsaccsupp}\marg{replacement text}\marg{text}
+%\end{definition}
+% This can be redefined to use "E" or "Alt" instead of
+% "ActualText". (I don't have the software to test the "E" or
+% "Alt" options.)
+% \begin{macrocode}
+\newcommand*{\glsaccsupp}[2]{%
+ \BeginAccSupp{ActualText={#1}}#2\EndAccSupp{}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\xglsaccsupp}
+% Fully expands replacement text before calling \cs{glsaccsupp}
+% \begin{macrocode}
+\newcommand*{\xglsaccsupp}[2]{%
+ \protected@edef\@gls@replacementtext{#1}%
+ \expandafter\glsaccsupp\expandafter{\@gls@replacementtext}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@access@display}
+%\changes{4.03}{2014-01-20}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@access@display}[2]{%
+ \protected@edef\@glo@access{#2}%
+ \ifx\@glo@access\@gls@noaccess
+ #1%
+ \else
+ \xglsaccsupp{\@glo@access}{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnameaccessdisplay}
+% Displays the first argument with the accessibility text for
+% the entry with the label given by the second argument (if set).
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsnameaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentryaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstextaccessdisplay}
+% As above but for the \gloskey{textaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glstextaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrytextaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glspluralaccessdisplay}
+% As above but for the \gloskey{pluralaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glspluralaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrypluralaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstaccessdisplay}
+% As above but for the \gloskey{firstaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsfirstaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentryfirstaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstpluralaccessdisplay}
+% As above but for the \gloskey{firstpluralaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsfirstpluralaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentryfirstpluralaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glssymbolaccessdisplay}
+% As above but for the \gloskey{symbolaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glssymbolaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrysymbolaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glssymbolpluralaccessdisplay}
+% As above but for the \gloskey{symbolpluralaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glssymbolpluralaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrysymbolpluralaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsdescriptionaccessdisplay}
+% As above but for the \gloskey{descriptionaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsdescriptionaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrydescaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsdescriptionpluralaccessdisplay}
+% As above but for the \gloskey{descriptionpluralaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsdescriptionpluralaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrydescpluralaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsshortaccessdisplay}
+% As above but for the \gloskey{shortaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsshortaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentryshortaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsshortpluralaccessdisplay}
+% As above but for the \gloskey{shortpluralaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsshortpluralaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentryshortpluralaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongaccessdisplay}
+% As above but for the \gloskey{longaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glslongaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrylongaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongpluralaccessdisplay}
+% As above but for the \gloskey{longpluralaccess} replacement text.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glslongpluralaccessdisplay}[2]{%
+ \@gls@access@display{#1}{\glsentrylongpluralaccess{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessdisplay}
+% Gets the replacement text corresponding to the named key given
+% by the first argument and calls the appropriate command
+% defined above.
+% \begin{macrocode}
+\DeclareRobustCommand*{\glsaccessdisplay}[3]{%
+ \@ifundefined{gls#1accessdisplay}%
+ {%
+ \PackageError{glossaries-accsupp}{No accessibility support
+ for key `#1'}{}%
+ }%
+ {%
+ \csname gls#1accessdisplay\endcsname{#2}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@gls@default@entryfmt}
+% Redefine the default entry format to use accessibility information
+% \begin{macrocode}
+\renewcommand*{\@@gls@default@entryfmt}[2]{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}
+ {\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use.
+% \begin{macrocode}
+ #2{\glspluralaccessdisplay
+ {\Glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glsfirstpluralaccessdisplay
+ {\Glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \MakeUppercase{%
+ #2{\glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \MakeUppercase{%
+ #1{\glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}}%
+ {\glsdescriptionpluralaccessdisplay
+ {\glsentrydescplural{\glslabel}}{\glslabel}}%
+ {\glssymbolpluralaccessdisplay
+ {\glsentrysymbolplural{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glstextaccessdisplay
+ {\glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glsfirstaccessdisplay
+ {\glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glstextaccessdisplay
+ {\Glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glsfirstaccessdisplay
+ {\Glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \MakeUppercase{%
+ #2{\glstextaccessdisplay
+ {\glsentrytext{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \MakeUppercase{%
+ #1{\glsfirstaccessdisplay
+ {\glsentryfirst{\glslabel}}{\glslabel}}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Custom text provided in \cs{glsdisp}
+% \begin{macrocode}
+ \ifglsused{\glslabel}%
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ #2{\glscustomtext}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ #1{\glscustomtext}%
+ {\glsdescriptionaccessdisplay
+ {\glsentrydesc{\glslabel}}{\glslabel}}%
+ {\glssymbolaccessdisplay
+ {\glsentrysymbol{\glslabel}}{\glslabel}}%
+ {\glsinsert}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgenentryfmt}
+% Redefine to use accessibility information.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewcommand*{\glsgenentryfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glspluralaccessdisplay
+ {\glsentryplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsfirstpluralaccessdisplay
+ {\glsentryfirstplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use.
+% \begin{macrocode}
+ \glspluralaccessdisplay
+ {\Glsentryplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsfirstpluralaccessdisplay
+ {\Glsentryfirstplural{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glspluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentryplural{\glslabel}}}%
+ {\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsfirstpluralacessdisplay
+ {\mfirstucMakeUppercase{\glsentryfirstplural{\glslabel}}}%
+ {\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Don't adjust case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glstextaccessdisplay{\glsentrytext{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsfirstaccessdisplay{\glsentryfirst{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make first letter upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glstextaccessdisplay{\Glsentrytext{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsfirstaccessdisplay{\Glsentryfirst{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Make all upper case
+% \begin{macrocode}
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use
+% \begin{macrocode}
+ \glstextaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrytext{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use
+% \begin{macrocode}
+ \glsfirstaccessdisplay
+ {\mfirstucMakeUppercase{\glsentryfirst{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Custom text provided in \cs{glsdisp}. (The insert should
+% be empty at this point.) The accessibility information, if
+% required, will have to be explicitly included in the custom text.
+% \begin{macrocode}
+ \glscustomtext\glsinsert
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgenacfmt}
+% Redefine to include accessibility information.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewcommand*{\glsgenacfmt}{%
+ \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}
+ \acronymfont
+ {\glsshortpluralaccessdisplay
+ {\glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent plural form, make first letter upper case:
+% \begin{macrocode}
+ \acronymfont
+ {\glsshortpluralaccessdisplay
+ {\Glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\acronymfont
+ {\glsshortpluralaccessdisplay
+ {\glsentryshortpl{\glslabel}}{\glslabel}}%
+ \glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Subsequent singular form, don't adjust case:
+% \begin{macrocode}
+ \acronymfont
+ {\glsshortaccessdisplay{\glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, make first letter upper case:
+% \begin{macrocode}
+ \acronymfont
+ {\glsshortaccessdisplay{\Glsentryshort{\glslabel}}{\glslabel}}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\acronymfont{%
+ \glsshortaccessdisplay{\glsentryshort{\glslabel}}{\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}
+ \genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use plural form, make first letter upper case:
+% \begin{macrocode}
+ \Genplacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\genplacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% First use singular form, don't adjust case:
+% \begin{macrocode}
+ \genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form, make first letter upper case:
+% \begin{macrocode}
+ \Genacrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\genacrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% User supplied text. (The insert should be empty at this point.)
+% The accessibility information, if
+% required, will have to be explicitly included in the custom text.
+% \begin{macrocode}
+ \glscustomtext
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\genacrfullformat}
+% Redefine to include accessibility information.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewcommand*{\genacrfullformat}[2]{%
+ \glslongaccessdisplay{\glsentrylong{#1}}{#1}#2\space
+ (\glsshortaccessdisplay{\protect\firstacronymfont{\glsentryshort{#1}}}{#1})%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Genacrfullformat}
+% Redefine to include accessibility information.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewcommand*{\Genacrfullformat}[2]{%
+ \glslongaccessdisplay{\Glsentrylong{#1}}{#1}#2\space
+ (\glsshortaccessdisplay{\protect\firstacronymfont{\Glsentryshort{#1}}}{#1})%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\genplacrfullformat}
+% Redefine to include accessibility information.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewcommand*{\genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}#2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{#1}}}{#1})%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Genplacrfullformat}
+% Redefine to include accessibility information.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewcommand*{\Genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}#2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{#1}}}{#1})%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@acrshort}
+%\changes{4.08}{2014-07-30}{added \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay{\glsentryshort{#2}}{#2}}#3%
+ }%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Acrshort}
+%\changes{4.08}{2014-07-30}{added \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay{\Glsentryshort{#2}}{#2}}#3%
+ }%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@ACRshort}
+%\changes{4.08}{2014-07-30}{added \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsshortaccessdisplay
+ {\MakeUppercase{\glsentryshort{#2}}}{#2}}#3%
+ }%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@acrlong}
+%\changes{4.08}{2014-07-30}{added \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{\glsentrylong{#2}}{#2}}#3%
+ }%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Acrlong}
+%\changes{4.08}{2014-07-30}{added \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{\Glsentrylong{#2}}{#2}}#3%
+ }%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@ACRlong}
+%\changes{4.08}{2014-07-30}{added \cs{do@gls@link@checkfirsthyper}}
+% \begin{macrocode}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{3.11a}{2013-10-15}{added \cs{glslabel}, \cs{glsifplural},
+% \cs{glscapscase}, \cs{glsinsert} and \cs{glscustomtext}}
+%\changes{4.03}{2014-01-20}{removed \cs{glslabel} (defined in
+%\cs{@gls@link})}
+% \begin{macrocode}
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glslongaccessdisplay{%
+ \MakeUppercase{\glsentrylong{#2}}}{#2}#3}%
+ }%
+% \end{macrocode}
+% Call \cs{@gls@link}
+% \begin{macrocode}
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+% \end{macrocode}
+%\changes{4.16}{2015-07-08}{added \cs{glspostlinkhook}}
+% \begin{macrocode}
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Displaying the Glossary}
+%\changes{3.08a}{2013-09-28}{removed definition of \cs{@glossaryentryfield}}
+%\changes{3.08a}{2013-09-28}{removed definition of \cs{@glossarysubentryfield}}
+%
+% We need to redefine the way the glossary entries are formatted to
+% include the accessibility support. The predefined glossary styles
+% use \ics{glossentryname}, \ics{glossentrydesc} and
+% \ics{glossentrysymbol}, but we need to provide compatibility with
+% earlier versions in case users have defined their own styles using
+% \cs{accsuppglossaryentryfield} and
+% \cs{accsuppglossarysubentryfield}.
+%
+% Now redefine \cs{glossentryname}, \cs{glossentrydesc} and
+% \cs{glossentrysymbol} etc so they use the accessibility stuff.
+% \begin{macrocode}
+\renewcommand*{\glossentryname}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsnamefont{\glsnameaccessdisplay{\glsentryname{#1}}{#1}}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*{\glossentryname}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsnamefont{\glsnameaccessdisplay{\Glsentryname{#1}}{#1}}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsdescriptionaccessdisplay{\glsentrydesc{#1}}{#1}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsdescriptionaccessdisplay{\Glsentrydesc{#1}}{#1}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glssymbolaccessdisplay{\glsentrysymbol{#1}}{#1}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\renewcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glssymbolaccessdisplay{\Glsentrysymbol{#1}}{#1}%
+ }%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\accsuppglossaryentryfield}
+% \begin{macrocode}
+\newcommand*{\accsuppglossaryentryfield}[5]{%
+ \glossaryentryfield{#1}%
+ {\glsnameaccessdisplay{#2}{#1}}%
+ {\glsdescriptionaccessdisplay{#3}{#1}}%
+ {\glssymbolaccessdisplay{#4}{#1}}{#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\accsuppglossarysubentryfield}
+% \begin{macrocode}
+\newcommand*{\accsuppglossarysubentryfield}[6]{%
+ \glossarysubentryfield{#1}{#2}%
+ {\glsnameaccessdisplay{#3}{#2}}%
+ {\glsdescriptionaccessdisplay{#4}{#2}}%
+ {\glssymbolaccessdisplay{#5}{#2}}{#6}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Acronyms}
+% Redefine acronym styles provided by \styfmt{glossaries}:
+%
+%\begin{acrstyle}{long-short}
+% \meta{long} (\meta{short}) acronym style.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{long-short}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}##2\space
+ (\glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glslongaccessdisplay{\Glsentrylong{##1}}{##1}##2\space
+ (\glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}##2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{##1}}{##1}##2\space
+ (\glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{short-long}
+% \meta{short} (\meta{long}) acronym style.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{short-long}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1}##2\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshort{##1}}}{##1}##2\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1}##2\space
+ (\glslongpluralaccessdisplay
+ {\glsentrylongpl{##1}}{##1})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshortpl{##1}}}{##1}##2\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-short-desc}
+% \meta{long} (\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{long-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sc-short-desc}
+% \meta{long} (\cs{textsc}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{long-sc-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sc-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sc-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{long-sm-short-desc}
+% \meta{long} (\cs{textsmaller}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{long-sm-short-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{long-sm-short}%
+}%
+{%
+ \GlsUseAcrStyleDefs{long-sm-short}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{short-long-desc}
+% \meta{short} (\marg{long}) acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{sc-short-long-desc}
+% \meta{long} (\cs{textsc}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{sc-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sc-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sc-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{sm-short-long-desc}
+% \meta{long} (\cs{textsmaller}\marg{short}) acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{sm-short-long-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{sm-short-long}%
+}%
+{%
+ \GlsUseAcrStyleDefs{sm-short-long}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{dua}
+% \meta{long} only acronym style.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{dua}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifdefempty\glscustomtext
+ {%
+ \ifglshaslong{\glslabel}%
+ {%
+ \glsifplural
+ {%
+% \end{macrocode}
+% Plural form:
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Plural form, don't adjust case:
+% \begin{macrocode}
+ \glslongpluralaccessdisplay{\glsentrylongpl{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Plural form, make first letter upper case:
+% \begin{macrocode}
+ \glslongpluralaccessdisplay{\Glsentrylongpl{\glslabel}}{\glslabel}%
+ \glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Plural form, all caps:
+% \begin{macrocode}
+ \glslongpluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylongpl{\glslabel}}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Singular form, don't adjust case:
+% \begin{macrocode}
+ \glslongaccessdisplay{\glsentrylong{\glslabel}}{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, make first letter upper case:
+% \begin{macrocode}
+ \glslongaccessdisplay{\Glsentrylong{\glslabel}}{\glslabel}\glsinsert
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, all caps:
+% \begin{macrocode}
+ \glslongaccessdisplay
+ {\mfirstucMakeUppercase
+ {\glsentrylong{\glslabel}\glsinsert}}{\glslabel}%
+ \mfirstucMakeUppercase{\glsinsert}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Not an acronym:
+% \begin{macrocode}
+ \glsgenentryfmt
+ }%
+ }%
+ {\glscustomtext\glsinsert}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay{\glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay{\Glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylong{##2}}{##2}##3\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\Glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glslongpluralaccessdisplay
+ {\mfirstucMakeUppercase{\glsentrylongpl{##2}}{##2}##3\space
+ (\glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2})}}}%
+ \renewcommand*{\glsentryfull}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \glslongaccessdisplay{\Glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}\space
+ (\glsshortpluralaccessdisplay{\acronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{##1}}{##1}\space
+ (\glsshortpluralaccessdisplay{\acronymfont{\glsentryshortpl{##1}}}{##1})%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{dua-desc}
+% \meta{long} only acronym style with user-supplied description.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{dua-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{dua}%
+}%
+{%
+ \GlsUseAcrStyleDefs{dua}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\acronymfont{\glsentrylong{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+}%
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote}
+% \meta{short}\cs{footnote}\marg{long} acronym style.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{footnote}%
+{%
+% \end{macrocode}
+% Check for long form in case this is a mixed glossary.
+% \begin{macrocode}
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{%
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+% \end{macrocode}
+% Need to ensure hyperlinks are switched off on first use:
+% \begin{macrocode}
+ \glshyperfirstfalse
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\protect\firstacronymfont{\glsentryshort{##1}}}{##1}##2%
+ \protect\footnote{\glslongaccessdisplay{\glsentrylong{##1}}{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \glsshortaccessdisplay
+ {\firstacronymfont{\Glsentryshort{##1}}}{##1}##2%
+ \protect\footnote{\glslongaccessdisplay{\glsentrylong{##1}}{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\glsentryshortpl{##1}}}{##1}##2%
+ \protect\footnote{\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \glsshortpluralaccessdisplay
+ {\protect\firstacronymfont{\Glsentryshortpl{##1}}}{##1}##2%
+ \protect\footnote{\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1}}%
+ }%
+ \renewcommand*{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}%
+ \renewcommand*{\acronymsort}[2]{##1}%
+ \renewcommand*{\acronymfont}[1]{##1}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+% \end{macrocode}
+% Don't use footnotes for \ics{acrfull}:
+% \begin{macrocode}
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay{\acronymfont{\Glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortaccessdisplay
+ {\mfirstucMakeUppercase
+ {\acronymfont{\glsentryshort{##2}}}{##2}##3\space
+ (\glslongaccessdisplay{\glsentrylong{##2}}{##2})}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\Glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}})}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsshortpluralaccessdisplay
+ {\mfirstucMakeUppercase
+ {\acronymfont{\glsentryshortpl{##2}}}{##2}##3\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##2}}{##2})}}}%
+% \end{macrocode}
+% Similarly for \ics{glsentryfull} etc:
+% \begin{macrocode}
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})}%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\Glsentryshort{##1}}}{##1}\space
+ (\glslongaccessdisplay{\glsentrylong{##1}}{##1})}%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\glsentryshortpl{##1}}}{##1}\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})}%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {\acronymfont{\Glsentryshortpl{##1}}}{##1}\space
+ (\glslongpluralaccessdisplay{\glsentrylongpl{##1}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sc}
+% \cs{textsc}\marg{short}\cs{footnote}\marg{long} acronym style.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{footnote-sc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+}%
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sm}
+% \cs{textsmaller}\marg{short}\cs{footnote}\marg{long} acronym style.
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{footnote-sm}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand{\acronymentry}[1]{%
+ \glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1}}
+ \renewcommand{\acronymfont}[1]{\textsmaller{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+}%
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-desc}
+% \meta{short}\cs{footnote}\marg{long} acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{footnote-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sc-desc}
+% \cs{textsc}\marg{short}\cs{footnote}\marg{long} acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{footnote-sc-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sc}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sc}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+%\begin{acrstyle}{footnote-sm-desc}
+% \cs{textsmaller}\marg{short}\cs{footnote}\marg{long} acronym style that has an
+% accompanying description (which the user needs to supply).
+%\changes{4.03}{2014-01-20}{redefined to use accessibility
+%information}
+% \begin{macrocode}
+\renewacronymstyle{footnote-sm-desc}%
+{%
+ \GlsUseAcrEntryDispStyle{footnote-sm}%
+}%
+{%
+ \GlsUseAcrStyleDefs{footnote-sm}%
+ \renewcommand*{\GenericAcronymFields}{}%
+ \renewcommand*{\acronymsort}[2]{##2}%
+ \renewcommand*{\acronymentry}[1]{%
+ \glslongaccessdisplay{\glsentrylong{##1}}{##1}\space
+ (\glsshortaccessdisplay{\acronymfont{\glsentryshort{##1}}}{##1})}%
+}
+% \end{macrocode}
+%\end{acrstyle}
+%
+% Use \cs{newacronymhook} to modify the key list to set
+% the access text to the long version by default.
+% \begin{macrocode}
+\renewcommand*{\newacronymhook}{%
+ \edef\@gls@keylist{shortaccess=\the\glslongtok,%
+ \the\glskeylisttok}%
+ \expandafter\glskeylisttok\expandafter{\@gls@keylist}%
+}
+% \end{macrocode}
+%\begin{macro}{\DefaultNewAcronymDef}
+% Modify default style to use access text:
+% \begin{macrocode}
+\renewcommand*{\DefaultNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\the\glsshorttok},%
+ description={\the\glslongtok},%
+ descriptionaccess=\relax,
+ text={\the\glsshorttok},%
+ access={\noexpand\@glo@textaccess},%
+ sort={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\the\glslongtok},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ first={\noexpand\glslongaccessdisplay
+ {\the\glslongtok}{\the\glslabeltok}\space
+ (\noexpand\glsshortaccessdisplay
+ {\the\glsshorttok}{\the\glslabeltok})},%
+ plural={\the\glsshorttok\acrpluralsuffix},%
+ firstplural={\noexpand\glslongpluralaccessdisplay
+ {\noexpand\@glo@longpl}{\the\glslabeltok}\space
+ (\noexpand\glsshortpluralaccessdisplay
+ {\noexpand\@glo@shortpl}{\the\glslabeltok})},%
+ firstaccess=\relax,
+ firstpluralaccess=\relax,
+ textaccess={\noexpand\@glo@shortaccess},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DescriptionFootnoteNewAcronymDef}
+% \begin{macrocode}
+\renewcommand*{\DescriptionFootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\the\glslongtok},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ access={\noexpand\@glo@textaccess},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ symbol={\the\glslongtok},%
+ symbolplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ firstpluralaccess=\relax,
+ textaccess={\noexpand\@glo@shortaccess},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\DescriptionNewAcronymDef}
+% \begin{macrocode}
+\renewcommand*{\DescriptionNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand
+ \acrnameformat{\the\glsshorttok}{\the\glslongtok}},%
+ access={\noexpand\@glo@textaccess},%
+ sort={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\the\glslongtok},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ first={\the\glslongtok},%
+ firstaccess=\relax,
+ firstplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ text={\the\glsshorttok},%
+ textaccess={\the\glslongtok},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ symbol={\noexpand\@glo@text},%
+ symbolaccess={\noexpand\@glo@textaccess},%
+ symbolplural={\noexpand\@glo@plural},%
+ firstpluralaccess=\relax,
+ textaccess={\noexpand\@glo@shortaccess},%
+ \the\glskeylisttok}%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\FootnoteNewAcronymDef}
+% \begin{macrocode}
+\renewcommand*{\FootnoteNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ sort={\the\glsshorttok},%
+ text={\the\glsshorttok},%
+ textaccess={\the\glslongtok},%
+ access={\noexpand\@glo@textaccess},%
+ plural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\the\glslongtok},%
+ descriptionplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\SmallNewAcronymDef}
+% \begin{macrocode}
+\renewcommand*{\SmallNewAcronymDef}{%
+ \edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\noexpand\acronymfont{\the\glsshorttok}},%
+ access={\noexpand\@glo@symbolaccess},%
+ sort={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ shortaccess={\the\glslongtok},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ text={\noexpand\@glo@short},%
+ textaccess={\noexpand\@glo@shortaccess},%
+ plural={\noexpand\@glo@shortpl},%
+ first={\the\glslongtok},%
+ firstaccess=\relax,
+ firstplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ description={\noexpand\@glo@first},%
+ descriptionplural={\noexpand\@glo@firstplural},%
+ symbol={\the\glsshorttok},%
+ symbolaccess={\the\glslongtok},%
+ symbolplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ \the\glskeylisttok
+ }%
+ }%
+ \let\@org@gls@assign@firstpl\gls@assign@firstpl
+ \let\@org@gls@assign@plural\gls@assign@plural
+ \let\@org@gls@assign@descplural\gls@assign@descplural
+ \let\@org@gls@assign@symbolplural\gls@assign@symbolplural
+ \def\gls@assign@firstpl##1##2{%
+ \@@gls@expand@field{##1}{firstpl}{##2}%
+ }%
+ \def\gls@assign@plural##1##2{%
+ \@@gls@expand@field{##1}{plural}{##2}%
+ }%
+ \def\gls@assign@descplural##1##2{%
+ \@@gls@expand@field{##1}{descplural}{##2}%
+ }%
+ \def\gls@assign@symbolplural##1##2{%
+ \@@gls@expand@field{##1}{symbolplural}{##2}%
+ }%
+ \@do@newglossaryentry
+ \let\gls@assign@firstpl\@org@gls@assign@firstpl
+ \let\gls@assign@plural\@org@gls@assign@plural
+ \let\gls@assign@descplural\@org@gls@assign@descplural
+ \let\gls@assign@symbolplural\@org@gls@assign@symbolplural
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The following are kept for compatibility with versions before
+% 3.0:
+%\begin{macro}{\glsshortaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glsshortaccesskey}{\glsshortkey access}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsshortpluralaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glsshortpluralaccesskey}{\glsshortpluralkey access}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glslongaccesskey}{\glslongkey access}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongpluralaccesskey}
+% \begin{macrocode}
+ \newcommand*{\glslongpluralaccesskey}{\glslongpluralkey access}%
+% \end{macrocode}
+%\end{macro}
+%\section{Debugging Commands}
+%
+%\begin{macro}{\showglonameaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+%\changes{4.38}{2018-05-10}{bug fix: corrected field (was showing text access field)}
+% \begin{macrocode}
+\newcommand*{\showglonameaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@access\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglotextaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglotextaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@textaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglopluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglopluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@pluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglofirstaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglofirstaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglofirstpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglofirstpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@firstpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglosymbolaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosymbolaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglosymbolpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglosymbolpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@symbolpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglodescaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglodescaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglodescpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglodescpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@descpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showgloshortaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloshortaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@shortaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showgloshortpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showgloshortpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@shortpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglolongaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglolongaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@longaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\showglolongpluralaccess}
+%\changes{4.03}{2014-01-20}{added \cs{glsdetoklabel}}
+% \begin{macrocode}
+\newcommand*{\showglolongpluralaccess}[1]{%
+ \expandafter\show\csname glo@\glsdetoklabel{#1}@longpluralaccess\endcsname
+}
+% \end{macrocode}
+%\end{macro}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-accsupp.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-babel.sty>
+% \end{macrocode}
+%\fi
+%\chapter{Multi-Lingual Support}
+% Many thanks to everyone who contributed to the translations both
+% via email and on comp.text.tex.
+% Language support has now been split off into independent language
+% modules.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-babel}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Load \sty{tracklang} to obtain language settings.
+% \begin{macrocode}
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
+% \end{macrocode}
+% Check for tracked languages:
+% \begin{macrocode}
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `\this@dialect'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-\CurrentTrackedLanguage' or similar}%
+ }%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-babel.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-polyglossia.sty>
+% \end{macrocode}
+%\fi
+%\section{Polyglossia Captions}
+% Language support has now been split off into independent language
+% modules.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-polyglossia}[2019/01/06 v4.42 (NLCT)]
+% \end{macrocode}
+% Load \sty{tracklang} to obtain language settings.
+% \begin{macrocode}
+\RequirePackage{tracklang}
+\let\glsifusetranslator\@secondoftwo
+% \end{macrocode}
+% Check for tracked languages:
+% \begin{macrocode}
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossaries-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesLang{\CurrentTrackedTag}%
+ }%
+ {%
+ \PackageWarningNoLine{glossaries}%
+ {No language module detected for `\this@dialect'.\MessageBreak
+ Language modules need to be installed separately.\MessageBreak
+ Please check on CTAN for a bundle called\MessageBreak
+ `glossaries-\CurrentTrackedLanguage' or similar}%
+ }%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-polyglossia.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*minimalgls.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain.
+ %
+ % This is a minimal file for testing and debugging
+ % the glossaries package. Change the class file as
+ % desired, and add the relevant package options to
+ % both the class file and the glossaries package.
+ % Change the sample glossary entry and acronym if
+ % required. If the problem occurs with an additional
+ % glossary, add in the relevant \newglossary command
+ % and a sample entry.
+ %
+ % Only add extra packages or commands if they
+ % contribute to whatever problem you are trying to
+ % test.
+ %
+ % Remember that the document will not be complete
+ % until you have successfully completed all of the
+ % following steps:
+ % 1. latex minimalgls
+ % 2. makeglossaries minimalgls (note no extension)
+ % 3. latex minimalgls
+ % A further run through LaTeX will be required to ensure that
+ % the table of contents is up to date if the toc option
+ % is used.
+ % Alternatively, if you use arara, you can add the following
+ % directives in your document:
+ %
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+
+ % If you require multilingual support you must also install
+ % the appropriate glossaries language module. The language
+ % modules are distributed separately.
+
+\documentclass{article}
+\listfiles
+
+\usepackage[colorlinks]{hyperref}
+ %\usepackage{glossaries} % abbreviation will go in main glossary
+ \usepackage[acronym]{glossaries} % make a separate list of acronyms
+
+\makeglossaries
+
+\longnewglossaryentry{par}{name={par}}%
+{%
+ A long description with a paragraph break.
+
+ This is the next paragraph.
+}
+
+\newglossaryentry{sample}{name={sample},
+description={a sample entry}}
+
+ % set the acronym style:
+\setacronymstyle{long-short}
+
+ % This contrived acronym has non-standard plural forms.
+ % These are specified in the optional argument.
+ % Remove the optional argument to revert to the default
+ % plurals.
+\newacronym[\glsshortpluralkey=cas,\glslongpluralkey=contrived
+acronyms]{aca}{aca}{a contrived acronym}
+
+ % Keep all definitions in the preamble!
+
+\begin{document}
+
+A \gls{sample} entry and \gls{aca}. Second use: \gls{aca}.
+
+Plurals: \glspl{sample}. Reset acronym\glsreset{aca}.
+First use: \glspl{aca}. Second use: \glspl{aca}.
+
+\glsresetall
+First letter upper case: \Gls{sample}. First use: \Gls{aca}.
+Subsequent use: \Gls{aca}.
+\glsresetall
+Plurals: \Glspl{sample}. First use: \Glspl{aca}. Next: \Glspl{aca}.
+
+If you want paragraph breaks in the description use
+\verb|\longnewglossaryentry|, as with entry \gls{par}.
+
+Title case a particular field:
+\glslink{sample}{\glsentrytitlecase{sample}{desc}}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</minimalgls.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-lipsum-examples.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+ % arara: bibtex
+ % arara: pdflatex
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage{graphicx}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[savewrites,nopostdot,toc,acronym,symbols]{glossaries}
+\usepackage{glossary-mcols}
+\usepackage{glossary-longragged}
+
+\newglossary*{symbolname}{Entries with Symbols in the Name}
+\newglossary*{long}{Long Descriptions}
+\newglossary*{multipar}{Multi-Paragraph Descriptions}
+\newglossary*{acronymdesc}{Acronyms with Descriptions}
+\newglossary*{images}{Descriptions with Images}
+\newglossary*{acronymslang}{Acronyms with Translations}
+
+\newglossary*{parent}{Hierarchical Entries}
+\newglossary*{homographs}{Homographs}
+\newglossary*{cites}{Entries with Citations}
+\newglossary*{urls}{Entries with URLs}
+
+\DeclareAcronymList{acronymdesc,acronymslang}
+
+\makeglossaries
+
+\loadglsentries{example-glossaries-brief}
+\loadglsentries[long]{example-glossaries-long}
+\loadglsentries[multipar]{example-glossaries-multipar}
+\loadglsentries[symbols]{example-glossaries-symbols}
+\loadglsentries[symbolname]{example-glossaries-symbolnames}
+\loadglsentries[images]{example-glossaries-images}
+\loadglsentries[parent]{example-glossaries-parent}
+\loadglsentries[homographs]{example-glossaries-childnoname}
+\loadglsentries[cites]{example-glossaries-cite}
+\loadglsentries[urls]{example-glossaries-url}
+
+\setacronymstyle{long-short}
+
+\loadglsentries[acronym]{example-glossaries-acronym}
+
+\setacronymstyle{long-short-desc}
+
+\loadglsentries[acronymdesc]{example-glossaries-acronym-desc}
+
+ % define an acronym style for the acronyms with a translation:
+
+\newacronymstyle{acronymslang}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+}
+
+\setacronymstyle{acronymslang}
+
+\loadglsentries[acronymslang]{example-glossaries-acronyms-lang}
+
+ % Define a style for the "images" glossary. The image names are
+ % stored in the user1 key.
+ % (The image insertion can probably be done more neatly using an
+ % appropriate package, but this is just a sample file.)
+
+\newsavebox\glsimagebox
+\newlength\glswidth
+
+\newglossarystyle{images}%
+{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}{}{}%
+ \renewcommand{\glossentry}[2]{%
+ \ifglshasfield{useri}{##1}%
+ {\savebox
+ {\glsimagebox}%
+ {\includegraphics[height=4\baselineskip]{\glsentryuseri{##1}}}%
+ \settowidth{\glswidth}{\usebox\glsimagebox}%
+ \glswidth=\dimexpr\linewidth-\glswidth-1em\relax
+ \parshape=5
+ 0pt \glswidth
+ 0pt \glswidth
+ 0pt \glswidth
+ 0pt \glswidth
+ 0pt \linewidth\relax
+ }%
+ {%
+ \savebox{\glsimagebox}{}%
+ }%
+ \noindent
+ \makebox[0pt][l]{%
+ \smash{\makebox[\linewidth][r]{\raisebox{-3\baselineskip}{\usebox\glsimagebox}}}}%
+ \glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}}%
+ \space\glossentrydesc{##1}\par
+ \indexspace
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+
+ % glossary style for acronyms with a translation
+
+\newglossarystyle{acronymslang}
+{%
+ \setglossarystyle{long}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription
+ \ifglshasfield{useri}{##1}{ (English: \glsentryuseri{##1})}{}%
+ \space ##2\tabularnewline
+ }%
+}
+
+ % glossary style for the cites glossary
+
+\newglossarystyle{cites}
+{% based on list style
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription
+ \ifglshasfield{useri}{##1}{\space
+ % in the event of multiple cites (as in the vestibulum2
+ % sample entry), \glsentryuseri{##1} needs to be expanded
+ % before being passed to \cite.
+ \glsletentryfield{\thiscite}{##1}{useri}%
+ (See \expandafter\cite\expandafter{\thiscite})}{}%
+ \space ##2}%
+}
+
+ % glossary style for the urls glossary
+
+\newglossarystyle{urls}
+{% based on list style
+ \setglossarystyle{list}%
+ \renewcommand{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space##2%
+ \ifglshasfield{useri}{##1}{\glspar
+ \glsletentryfield{\thisurl}{##1}{useri}%
+ \expandafter\url\expandafter{\thisurl}}{}}%
+}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Sample}
+
+This is a sample document that uses the dummy glossary entries
+supplied with the glossaries bundle for testing.
+
+Here are all the entries (including acronyms):
+
+\forallglossaries{\thistype}{\section{Glossary `\thistype'}
+\forglsentries[\thistype]{\thislabel}{\gls{\thislabel}. }}
+
+\section{Acronyms Revisited}
+
+Here are just the acronyms again:
+\forallacronyms{\thistype}{\forglsentries[\thistype]{\thislabel}{\gls{\thislabel}. }}
+
+\printglossary[style=mcolindex,title={Brief Descriptions}]
+
+\printglossary[type=long,style=list]
+
+\printglossary[type=multipar,style=altlist]
+
+\printglossary[type=symbols,style=altlongragged4col,nogroupskip]
+
+\printglossary[type=symbolname,style=list,nogroupskip]
+
+\printglossary[type=acronym,style=long]
+
+\printglossary[type=acronymdesc,style=altlist]
+
+\printglossary[type=images,style=images]
+
+\printglossary[type=acronymslang,style=acronymslang]
+
+\printglossary[type=homographs,style=mcoltreenoname,subentrycounter]
+
+\printglossary[type=parent,style=tree]
+
+\printglossary[type=cites,style=cites,nopostdot=false,nogroupskip]
+
+\printglossary[type=urls,style=urls,nopostdot=false,nogroupskip]
+
+\bibliographystyle{plain}
+\bibliography{xampl}
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</glossary-lipsum-examples.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronym-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test acronym entries with descriptions.
+
+\newacronym[type=\glsdefaulttype,description={fringilla a, euismod sodales,
+ sollicitudin vel, wisi}]{ndl}{NDL}{nam dui ligula}
+
+\newacronym[type=\glsdefaulttype,description={non justo}]{mal}{MAL}{morbi auctor lorem}
+
+\newacronym[type=\glsdefaulttype,description={pretium at, lobortis vitae, ultricies et,
+tellus}]{nll}{NLL}{name lacus libero}
+
+\newacronym[type=\glsdefaulttype,description={tortor sed accumsan bibendum, erat ligula
+aliquet magna, vitae ornare odio metus a mi}]{da}{DA}{donec aliquet}
+
+\newacronym[type=\glsdefaulttype,description={et nisl hendrerit mollis}]{mao}{MAO}{morbi ac orci}
+
+\newacronym[type=\glsdefaulttype,description={cras nec ante}]{sum}{SUM}{suspendisse ut massa}
+
+\newacronym[type=\glsdefaulttype,description={cum sociis natoque penatibus et magnis dis
+parturient montes, nascetur ridiculus mus}]{pan}{PAN}{pellentesque a nulla}
+
+\newacronym[type=\glsdefaulttype,description={nulla ullamcorper vestibulum
+turpis}]{atu}{ATU}{aliquam tincidunt urna}
+
+\newacronym[type=\glsdefaulttype,description={nulla malesuada porttitor diam}]%
+ {pclm}{PCLM}{pellentesque cursus luctus mauris}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronym-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronym.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test acronym entries
+
+\newacronym[type=\glsdefaulttype]{lid}{LID}{lorem ipsum dolor}
+
+\newacronym[type=\glsdefaulttype]{stc}{STC}{sit amet consectetuer}
+
+\newacronym[type=\glsdefaulttype]{aeu}{AEU}{adipiscing elit ut}
+
+\newacronym[type=\glsdefaulttype]{pev}{PEV}{purus elit vestibulum}
+
+\newacronym[type=\glsdefaulttype]{upa}{UPA}{ut placerat ac}
+
+\newacronym[type=\glsdefaulttype]{avf}{AVF}{adipiscing vitae felis}
+
+\newacronym[type=\glsdefaulttype]{cdg}{CDG}{curabitur dictum gravida}
+
+\newacronym[type=\glsdefaulttype]{mna}{MNA}{mauris nam arcu}
+
+\newacronym[type=\glsdefaulttype]{lne}{LNE}{libero nonummy eget}
+
+\newacronym[type=\glsdefaulttype]{civ}{CIV}{consectetuer id vulputate}
+
+\newacronym[type=\glsdefaulttype]{amd}{AMD}{a magna donec}
+
+\newacronym[type=\glsdefaulttype]{vae}{VAE}{vehicula augue eu}
+
+\newacronym[type=\glsdefaulttype]{nph}{NPH}{neque pellentesque habitant}
+
+\newacronym[type=\glsdefaulttype]{mts}{MTS}{morbi tristique senectus}
+
+\newacronym[type=\glsdefaulttype]{ene}{ENE}{et netus et}
+
+\newacronym[type=\glsdefaulttype]{mfa}{MFA}{malesuada fames ac}
+
+\newacronym[type=\glsdefaulttype]{tem}{TEM}{turpis egestas mauris}
+
+\newacronym[type=\glsdefaulttype]{ulc}{ULC}{ut leo cras}
+
+\newacronym[type=\glsdefaulttype]{vmr}{VMR}{viverra metus rhoncus}
+
+\newacronym[type=\glsdefaulttype]{sne}{SNE}{sem nulla et}
+
+\newacronym[type=\glsdefaulttype]{lvu}{LVU}{lectus vestibulum urna}
+
+\newacronym[type=\glsdefaulttype]{fup}{FUP}{fringilla ultrices phasellus}
+
+\newacronym[type=\glsdefaulttype]{ets}{ETS}{eu tellus sit}
+
+\newacronym[type=\glsdefaulttype]{atg}{ATG}{amet tortor gravida}
+
+\newacronym[type=\glsdefaulttype]{pis}{PIS}{placerat integer sapien}
+
+\newacronym[type=\glsdefaulttype]{eii}{EII}{est iaculis in}
+
+\newacronym[type=\glsdefaulttype]{pqv}{PQV}{pretium quis viverra}
+
+\newacronym[type=\glsdefaulttype]{anp}{ANP}{ac nunc praesent}
+
+\newacronym[type=\glsdefaulttype]{esv}{ESV}{eget sem vel}
+
+\newacronym[type=\glsdefaulttype]{lub}{LUB}{leo ultrices bibendum}
+
+\newacronym[type=\glsdefaulttype]{afm}{AFM}{aenean faucibus morbi}
+
+\newacronym[type=\glsdefaulttype]{dnm}{DNM}{dolor nulla malesuada}
+
+\newacronym[type=\glsdefaulttype]{epa}{EPA}{eu pulvinar at}
+
+\newacronym[type=\glsdefaulttype]{man}{MAC}{mollis ac nulla}
+
+\newacronym[type=\glsdefaulttype]{cas}{CAS}{curabitur auctor semper}
+
+\newacronym[type=\glsdefaulttype]{ndv}{NDV}{nulla donec varius}
+
+\newacronym[type=\glsdefaulttype]{oer}{OER}{orci eget risus}
+
+\newacronym[type=\glsdefaulttype]{dnmc}{DNMC}{duis nibh mi congue}
+
+\newacronym[type=\glsdefaulttype]{cea}{CEA}{congue eu accumsan}
+
+\newacronym[type=\glsdefaulttype]{esq}{ESQ}{eleifend sagittis quis}
+
+\newacronym[type=\glsdefaulttype]{dia}{DIA}{duis eget orci}
+
+\newacronym[type=\glsdefaulttype]{sao}{SAO}{sit amet orci}
+
+\newacronym[type=\glsdefaulttype]{drn}{DRN}{dignissim rutrum nam}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronym.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronyms-lang.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test acronym entries where some are provided with
+ % "translations", which are stored in the user1 key.
+
+\newacronym[type=\glsdefaulttype,user1={love itself}]{li}{LI}{lorem ipsum}
+
+\newacronym[type=\glsdefaulttype,user1={produces none}]{np}{NP}{nulla pariatur}
+
+\newacronym[type=\glsdefaulttype,user1={blame belongs}]{sic}{SIC}{sunt in culpa}
+
+\newacronym[type=\glsdefaulttype,user1={blinded by
+desire}]{esoc}{ESOC}{excepturi sint obcaecati cupiditat}
+
+\newacronym[type=\glsdefaulttype]{nmruu}{NMRUU}{nulla malesuada
+risus ut urna}
+
+\newacronym[type=\glsdefaulttype]{di}{DI}{duis iaculi}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronyms-lang.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-brief.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with brief descriptions.
+
+\newglossaryentry{lorem}{name={lorem},description={ipsum}}
+
+\newglossaryentry{dolor}{name={dolor},description={sit}}
+
+\newglossaryentry{amet}{name={amet},description={consectetuer}}
+
+\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}
+
+\newglossaryentry{ut}{name={ut},description={purus}}
+
+\newglossaryentry{elit}{name={elit},description={vestibulum}}
+
+\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}}
+
+\newglossaryentry{nonummy}{name={nonummy},description={eget}}
+
+\newglossaryentry{consectetuer}{name={consectetuer},description={id}}
+
+\newglossaryentry{vulputate}{name={vulputate},description={a magna}}
+
+\newglossaryentry{donec}{name={donec},description={vehicula}}
+
+\newglossaryentry{augue}{name={augue},description={eu neque}}
+
+\newglossaryentry{pellentesque}{name={pellentesque},description={habitant}}
+
+\newglossaryentry{morbi}{name={morbi},description={tristique}}
+
+\newglossaryentry{senectus}{name={senectus},description={et netus}}
+
+\newglossaryentry{et}{name={et},description={malesuada}}
+
+\newglossaryentry{fames}{name={fames},description={ac}}
+
+\newglossaryentry{turpis}{name={turpis},description={egestas}}
+
+\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}}
+
+\newglossaryentry{ultrices}{name={ultrices},description={phasellus}}
+
+\newglossaryentry{eu}{name={eu},description={tellus}}
+
+\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}}
+
+\newglossaryentry{quis}{name={quis},description={viverra}}
+
+\newglossaryentry{ac}{name={ac},description={nunc}}
+
+\newglossaryentry{praesent}{name={praesent},description={eget}}
+
+\newglossaryentry{sem}{name={sem},description={vel leo}}
+
+\newglossaryentry{bibendum}{name={bibendum},description={ultrices}}
+
+\newglossaryentry{aenean}{name={aenean},description={faucibus}}
+
+\newglossaryentry{malesuada}{name={malesuada},description={eu}}
+
+\newglossaryentry{pulvinar}{name={pulvinar},description={at}}
+
+\newglossaryentry{mollis}{name={mollis},description={ac nulla}}
+
+\newglossaryentry{auctor}{name={auctor},description={semper}}
+
+\newglossaryentry{varius}{name={varius},description={orci}}
+
+\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}}
+
+\newglossaryentry{diam}{name={diam},description={duis}}
+
+\newglossaryentry{orci}{name={orci},description={dignissim}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-brief.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-childnoname.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with child entries that don't have
+ % a name supplied. (The name is the same as the parent name.)
+
+\newglossaryentry{scelerisque}{name={scelerisque},description={at}}
+
+\newglossaryentry{vestibulum}{parent={scelerisque},description={eu, nulla}}
+
+\newglossaryentry{utodionisl}{parent={scelerisque},description={facilisis id}}
+
+\newglossaryentry{molliset}{parent={scelerisque},description={nec, enim}}
+
+\newglossaryentry{aeneansem}{parent={scelerisque},description={sem leo}}
+
+\newglossaryentry{pellentesquesit}{parent={scelerisque},description={sit amet}}
+
+\newglossaryentry{sapien}{parent={scelerisque},description={vehicula
+pellentesque}}
+
+\newglossaryentry{consequat}{parent={scelerisque},description={tellus
+et tortor}}
+
+\newglossaryentry{uttempor}{name={ut tempor},description={laoreet
+quam}}
+
+\newglossaryentry{nullamid}{parent={uttempor},description={wisi a
+libero}}
+
+\newglossaryentry{tristique}{parent={uttempor},description={semper}}
+
+\newglossaryentry{nullamnislmassa}{parent={uttempor},description={rutrum
+ut}}
+
+\newglossaryentry{eleifend}{name={eleifend},description={sit amet
+faucibus}}
+
+\newglossaryentry{elementum}{parent={eleifend},description={elementum}}
+
+\newglossaryentry{urnasapien}{parent={eleifend},description={urna sapien}}
+
+\newglossaryentry{consectetuermauris}{name={consectetuer},description={mauris}}
+
+\newglossaryentry{quisegestas}{parent={consectetuermauris},description={quis egestas}}
+
+\newglossaryentry{leojusto}{parent={consectetuermauris},description={leo
+justo}}
+
+\newglossaryentry{nonrisus}{name={non risus},description={morbi non
+felis}}
+
+\newglossaryentry{aclibero}{parent={nonrisus},description={ac libero}}
+
+\newglossaryentry{vulputatefringilla}{parent={nonrisus},description={vulputate
+fringilla}}
+
+\newglossaryentry{maurislibero}{name={mauris},description={libero eros}}
+
+\newglossaryentry{lacinia}{parent={maurislibero},description={lacinia
+non}}
+
+\newglossaryentry{sodales}{parent={maurislibero},description={sodales
+quis}}
+
+\newglossaryentry{dapibus}{parent={maurislibero},description={dapibus
+porttitor, pede}}
+
+\newglossaryentry{class}{name={class},description={aptent taciti}}
+
+\newglossaryentry{sociosqu}{parent={class},description={sociosqu}}
+
+\newglossaryentry{adlitora}{parent={class},description={ad litora}}
+
+\newglossaryentry{torquent}{parent={class},description={torquent per
+conubia}}
+
+\newglossaryentry{nostra}{name={nostra},description={per inceptos
+hymenaeos}}
+
+\newglossaryentry{morbidapibus}{parent={nostra},description={morbi
+dapibus}}
+
+\newglossaryentry{mauriscondimentum}{parent={nostra},description={mauris
+condimentum nulla}}
+
+\newglossaryentry{cumsociis}{name={cum sociis},description={natoque
+penatibus}}
+
+\newglossaryentry{etmagnis}{parent={cumsociis},description={et
+magnis}}
+
+\newglossaryentry{disparturient}{parent={cumsociis},description={dis
+parturient montes}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-childnoname.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-cite.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with citation labels stored in
+ % the user1 field. (The citations are defined in the xampl.bib file
+ % that should be available on modern TeX distributions.)
+
+\newglossaryentry{fusce}{name={fusce},
+description={suscipit cursus sem},user1={article-minimal}}
+
+\newglossaryentry{vivamus}{name={vivamus},
+description={risus mi, egestas ac},user1={article-full}}
+
+\newglossaryentry{imperdiet}{name={imperdiet},
+description={varius, faucibus quis, leo},user1={whole-journal}}
+
+\newglossaryentry{aenean2}{name={aenean},
+description={tincidunt},user1={inbook-minimal}}
+
+\newglossaryentry{crasid}{name={cras id},
+description={justo quis nibh scelerisque dignissim},
+user1={inbook-full}}
+
+\newglossaryentry{aliquam2}{name={aliquam},
+description={sagittis elementum dolor},
+user1={book-minimal}}
+
+\newglossaryentry{aeneanconsectetuer}{name={aenean consectetuer},
+description={justo in pede},
+user1={book-full}}
+
+\newglossaryentry{curabiturullamcorper}{name={curabitur ullamcorper},
+description={ligula nec orci},
+user1={booklet-minimal}}
+
+\newglossaryentry{aliquampurus}{name={aliquam purus},
+description={turpis, aliquam id},
+user1={booklet-full}}
+
+\newglossaryentry{ornarevitae}{name={ornare vitae},
+description={porttitor non, wisi},
+user1={incollection-minimal}}
+
+\newglossaryentry{maecenasluctus}{name={maecenas luctus},
+description={porta lorem},
+user1={incollection-full}}
+
+\newglossaryentry{donecvitae}{name={donec vitae},
+description={ligula eu ante pretium varius},
+user1={manual-minimal}}
+
+\newglossaryentry{proin}{name={proin},
+description={tortor metus, convallis et},
+user1={manual-full}}
+
+\newglossaryentry{hendrerit}{name={hendrerit},
+description={non, scelerisque in, urna},
+user1={mastersthesis-minimal}}
+
+\newglossaryentry{crasquis}{name={cras qui},
+description={libero eu ligula bibendum tempor},
+user1={mastersthesis-full}}
+
+\newglossaryentry{vivamustellus}{name={vivamus tellus},
+description={quam, malesuada eu, tempus sed, tempor sed, velit},
+user1={misc-minimal}}
+
+\newglossaryentry{doneclacinia}{name={donec lacinia},
+description={auctor libero},
+user1={misc-full}}
+
+\newglossaryentry{praesent2}{name={praesent},
+description={sed neque id pede mollis rutrum},
+user1={inproceedings-minimal}}
+
+ % Here's one with multiple cites:
+\newglossaryentry{vestibulum2}{name={vestibulum},
+description={iaculis risus},
+user1={inproceedings-minimal,phdthesis-minimal}}
+
+ % Here's one without a user1 key for comparison:
+\newglossaryentry{pellentesque2}{name={pellentesque},
+description={lacus}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-cite.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-images.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with multi-paragraph descriptions
+ % that have an associated image file (stored in user1).
+ % The referenced image files are provided by the mwe package.
+
+\longnewglossaryentry{sedfeugiat}{name={sed feugiat},user1={example-image}}%
+{%
+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.
+}
+
+\longnewglossaryentry{aliquamlectus}%
+{name={aliquam lectus},user1={example-image-a}}%
+{%
+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.
+}
+
+\longnewglossaryentry{nullainipsum}%
+{name={nulla in ipsum},user1={example-image-b}}%
+{%
+ 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.
+}
+
+\longnewglossaryentry{curabiturtellusmagna}%
+{name={curabitur tellus magna},user1={example-image-c}}%
+{%
+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.
+}
+
+\longnewglossaryentry{nullanonmauris}%
+{name={nulla non mauris},user1={example-image-16x10}}%
+{%
+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.
+}
+
+\longnewglossaryentry{etiampedemassa}%
+{name={etiam pede massa},user1={example-image-10x16}}%
+{%
+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.
+}
+
+\longnewglossaryentry{donecetnisl}%
+{name={donec et nisl},user1={example-image-16x9}}%
+{%
+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.
+}
+
+\longnewglossaryentry{vivamuseutellus}%
+{name={vivamus eu tellus},user1={example-image-9x16}}%
+{%
+ 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.
+}
+
+\longnewglossaryentry{donecvelnibh}%
+{name={donec vel nibh},user1={example-image-golden}}%
+{%
+ 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.
+}
+
+\longnewglossaryentry{crasdapibus}%
+{name={cras dapibus},user1={example-image-golden-upright}}%
+{%
+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.
+}
+
+\longnewglossaryentry{sedconsequat}%
+{name={sed consequat},user1={example-image-1x1}}%
+{%
+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.
+}
+
+ % This one doesn't have an image. The style can test whether an
+ % image has been supplied using \ifglshasfield
+
+\longnewglossaryentry{sedeleifend}%
+{name={sed eleifend}}%
+{%
+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.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-long.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with long descriptions.
+
+\newglossaryentry{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.}}
+
+\newglossaryentry{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.}}
+
+\newglossaryentry{crasviverra}{name={cras viverra},
+description={metus rhoncus sem. Nulla et lectus vestibulum
+urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida
+placerat.}}
+
+\newglossaryentry{integersapien}{name={integer sapien},
+description={est, iaculis in, pretium quis, viverra ac,
+nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
+faucibus.}}
+
+\newglossaryentry{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.}}
+
+\newglossaryentry{namdui}{name={nam dui},
+description={ligula, fringilla a, euismod sodales,
+sollicitudin vel, wisi. Morbi auctor lorem non justo.}}
+
+\newglossaryentry{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.}}
+
+\newglossaryentry{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.}}
+
+\newglossaryentry{aliquam}{name={aliquam},
+description={tincidunt urna. Nulla ullamcorper
+vestibulum turpis. Pellentesque cursus luctus mauris.}}
+
+\newglossaryentry{nullamalesuada}{name={nulla malesuada},
+description={porttitor diam. Donec felis erat, congue non, volutpat at,
+tincidunt tristique, libero. Vivamus viverra fermentum felis.}}
+
+\newglossaryentry{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.}}
+
+\newglossaryentry{maecenaslacinia}{name={maecenas lacinia},
+description={nam ipsum ligula, eleifend at, accumsan nec, suscipit
+a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat
+lorem.}}
+
+\newglossaryentry{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.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-multipar.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with multi-paragraph descriptions.
+
+\longnewglossaryentry{loremi-ii}{name={lorem 1--2}}%
+{%
+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.%
+}
+
+\longnewglossaryentry{loremiii-iv}{name={lorem 3--4}}%
+{%
+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.%
+}
+
+\longnewglossaryentry{loremv-vi}{name={lorem 5--6}}%
+{%
+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.%
+}
+
+\longnewglossaryentry{loremvii-viii}{name={lorem 7--8}}%
+{%
+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.%
+}
+
+\longnewglossaryentry{loremix-x}{name={lorem 9--10}}%
+{%
+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.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-parent.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with child entries.
+
+\newglossaryentry{sedmattis}{name={sed mattis},description={erat sit amet}}
+
+\newglossaryentry{gravida}{parent={sedmattis},name={gravida},description={malesuada}}
+
+\newglossaryentry{elitaugue}{parent={sedmattis},name={elit augue},
+description={egestas diam}}
+
+\newglossaryentry{tempus}{parent={sedmattis},name={tempus},
+description={scelerisque}}
+
+\newglossaryentry{nunc}{name={nunc},description={nisl vitae}}
+
+\newglossaryentry{libero}{parent={nunc},name={libero},description={sed
+consequat}}
+
+\newglossaryentry{feugiat}{parent={nunc},name={feugiat},description={massa}}
+
+\newglossaryentry{porta}{parent={nunc},name={porta},description={eros
+in eleifend}}
+
+\newglossaryentry{variuserat}{parent={nunc},name={varius erat},
+description={leo rutrum dui}}
+
+\newglossaryentry{nonconvallis}{name={non
+convallis},description={lectus orci ut nibh}}
+
+\newglossaryentry{sedlorem}{parent={nonconvallis},name={sedlorem},description={massa}}
+
+\newglossaryentry{nonummyquis}{parent={nonconvallis},name={nonummy
+quis}, description={egestas id}}
+
+\newglossaryentry{condimentum}{name={condimentum},description={at
+nisl}}
+
+\newglossaryentry{maecenas}{parent={condimentum},name={maecenas},
+description={at nibh}}
+
+\newglossaryentry{aliquamet}{name={aliquam et},description={augue}}
+
+\newglossaryentry{atnunc}{parent={aliquamet},name={at nunc},description={pellentesque
+ullamcorper}}
+
+\newglossaryentry{duisnisl}{parent={atnunc},name={duisnisl},description={laoreet
+suscipit}}
+
+\newglossaryentry{duisnibh}{parent={atnunc},name={duisnibh},
+description={convallis ut}}
+
+\newglossaryentry{rutrum}{name={rutrum},description={id, enim}}
+
+\newglossaryentry{phasellus}{parent={rutrum},name={phasellus},
+description={odio}}
+
+\newglossaryentry{nullanulla}{parent={rutrum},name={nulla nulla},
+description={elit, molestie non}}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-parent.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-symbolnames.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with associated symbols.
+
+\newglossaryentry{sym.alpha}{sort={alpha},name={\ensuremath{\alpha}},
+description={Quisque ullamcorper placerat ipsum.}}
+
+\newglossaryentry{sym.beta}{sort={beta},name={\ensuremath{\beta}},
+description={Cras nibh.}}
+
+\newglossaryentry{sym.gamma}{sort={gamma},name={\ensuremath{\gamma}},
+description={Morbi vel justo vitae lacus tincidunt ultrices.}}
+
+\newglossaryentry{sym.delta}{sort={delta},name={\ensuremath{\delta}},
+description={Lorem ipsum dolor sit amet, consectetuer adipiscing
+elit.}}
+
+\newglossaryentry{sym.epsilon}{sort={epsilon},name={\ensuremath{\epsilon}},
+description={In hac habitasse platea dictumst.}}
+
+\newglossaryentry{sym.zeta}{sort={zeta},name={\ensuremath{\zeta}},
+description={Integer tempus convallis augue.}}
+
+\newglossaryentry{sym.eta}{sort={eta},name={\ensuremath{\eta}},
+description={Etiam facilisis.}}
+
+\newglossaryentry{sym.theta}{sort={theta},name={\ensuremath{\theta}},
+description={Nunc elementum fermentum wisi.}}
+
+\newglossaryentry{sym.iota}{sort={iota},name={\ensuremath{i}},
+description={Aenean placerat.}}
+
+\newglossaryentry{sym.kappa}{sort={kappa},name={\ensuremath{\kappa}},
+description={Ut imperdiet, enim sed gravida sollicitudin, felis odio
+placerat quam, ac pulvinar elit purus eget enim.}}
+
+\newglossaryentry{sym.lambda}{sort={lambda},name={\ensuremath{\lambda}},
+description={Nunc vitae tortor.}}
+
+\newglossaryentry{sym.mu}{sort={mu},name={\ensuremath{\mu}},
+description={Proin tempus nibh sit amet nisl.}}
+
+\newglossaryentry{sym.nu}{sort={nu},name={\ensuremath{\nu}},
+description={Vivamus quis tortor vitae risus porta vehicula.}}
+
+\newglossaryentry{sym.xi}{sort={xi},name={\ensuremath{\xi}},
+description={Fusce mauris.}}
+
+\newglossaryentry{sym.pi}{sort={pi},name={\ensuremath{\pi}},
+description={Vestibulum luctus nibh at lectus.}}
+
+\newglossaryentry{sym.rho}{sort={rho},name={\ensuremath{\rho}},
+description={Sed bibendum, nulla a faucibus semper, leo velit
+ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}}
+
+\newglossaryentry{sym.sigma}{sort={sigma},name={\ensuremath{\sigma}},
+description={Aliquam pellentesque, augue quis sagittis posuere,
+turpis lacus congue quam, in hendrerit risus eros eget felis.}}
+
+\newglossaryentry{sym.tau}{sort={tau},name={\ensuremath{\tau}},
+description={Maecenas eget erat in sapien mattis porttitor.}}
+
+\newglossaryentry{sym.upsilon}{sort={upsilon},name={\ensuremath{\upsilon}},
+description={Vestibulum porttitor.}}
+
+\newglossaryentry{sym.phi}{sort={phi},name={\ensuremath{\phi}},
+description={Nulla facilisi.}}
+
+\newglossaryentry{sym.chi}{sort={chi},name={\ensuremath{\chi}},
+description={Sed a turpis eu lacus commodo facilisis.}}
+
+\newglossaryentry{sym.psi}{sort={psi},name={\ensuremath{\psi}},
+description={Morbi fringilla, wisi in dignissim interdum, justo
+lectus sagittis dui, et vehicula libero dui cursus dui.}}
+
+\newglossaryentry{sym.omega}{sort={omega},name={\ensuremath{\omega}},
+description={Mauris tempor ligula sed lacus.}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-symbolnames.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-symbols.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with associated symbols.
+
+\newglossaryentry{alpha}{name={alpha},symbol={\ensuremath{\alpha}},
+description={Quisque ullamcorper placerat ipsum.}}
+
+\newglossaryentry{beta}{name={beta},symbol={\ensuremath{\beta}},
+description={Cras nibh.}}
+
+\newglossaryentry{gamma}{name={gamma},symbol={\ensuremath{\gamma}},
+description={Morbi vel justo vitae lacus tincidunt ultrices.}}
+
+\newglossaryentry{delta}{name={delta},symbol={\ensuremath{\delta}},
+description={Lorem ipsum dolor sit amet, consectetuer adipiscing
+elit.}}
+
+\newglossaryentry{epsilon}{name={epsilon},symbol={\ensuremath{\epsilon}},
+description={In hac habitasse platea dictumst.}}
+
+\newglossaryentry{zeta}{name={zeta},symbol={\ensuremath{\zeta}},
+description={Integer tempus convallis augue.}}
+
+\newglossaryentry{eta}{name={eta},symbol={\ensuremath{\eta}},
+description={Etiam facilisis.}}
+
+\newglossaryentry{theta}{name={theta},symbol={\ensuremath{\theta}},
+description={Nunc elementum fermentum wisi.}}
+
+\newglossaryentry{iota}{name={iota},symbol={\ensuremath{i}},
+description={Aenean placerat.}}
+
+\newglossaryentry{kappa}{name={kappa},symbol={\ensuremath{\kappa}},
+description={Ut imperdiet, enim sed gravida sollicitudin, felis odio
+placerat quam, ac pulvinar elit purus eget enim.}}
+
+\newglossaryentry{lambda}{name={lambda},symbol={\ensuremath{\lambda}},
+description={Nunc vitae tortor.}}
+
+\newglossaryentry{mu}{name={mu},symbol={\ensuremath{\mu}},
+description={Proin tempus nibh sit amet nisl.}}
+
+\newglossaryentry{nu}{name={nu},symbol={\ensuremath{\nu}},
+description={Vivamus quis tortor vitae risus porta vehicula.}}
+
+\newglossaryentry{xi}{name={xi},symbol={\ensuremath{\xi}},
+description={Fusce mauris.}}
+
+\newglossaryentry{pi}{name={pi},symbol={\ensuremath{\pi}},
+description={Vestibulum luctus nibh at lectus.}}
+
+\newglossaryentry{rho}{name={rho},symbol={\ensuremath{\rho}},
+description={Sed bibendum, nulla a faucibus semper, leo velit
+ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}}
+
+\newglossaryentry{sigma}{name={sigma},symbol={\ensuremath{\sigma}},
+description={Aliquam pellentesque, augue quis sagittis posuere,
+turpis lacus congue quam, in hendrerit risus eros eget felis.}}
+
+\newglossaryentry{tau}{name={tau},symbol={\ensuremath{\tau}},
+description={Maecenas eget erat in sapien mattis porttitor.}}
+
+\newglossaryentry{upsilon}{name={upsilon},symbol={\ensuremath{\upsilon}},
+description={Vestibulum porttitor.}}
+
+\newglossaryentry{phi}{name={phi},symbol={\ensuremath{\phi}},
+description={Nulla facilisi.}}
+
+\newglossaryentry{chi}{name={chi},symbol={\ensuremath{\chi}},
+description={Sed a turpis eu lacus commodo facilisis.}}
+
+\newglossaryentry{psi}{name={psi},symbol={\ensuremath{\psi}},
+description={Morbi fringilla, wisi in dignissim interdum, justo
+lectus sagittis dui, et vehicula libero dui cursus dui.}}
+
+\newglossaryentry{omega}{name={omega},symbol={\ensuremath{\omega}},
+description={Mauris tempor ligula sed lacus.}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-symbols.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-url.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is part of the glossaries bundle
+ % These are test glossary entries with URLs stored in
+ % the user1 field.
+
+\newglossaryentry{aenean-url}{name={aenean},
+ description={adipiscing auctor est},
+ user1={http://uk.tug.org/}}
+
+\newglossaryentry{morbi-url}{name={morbi},
+ description={quam arcu, malesuada sed, volutpat et, elementum sit
+amet, libero},
+ user1={http://www.ctan.org/}}
+
+\newglossaryentry{duis-url}{name={duis},
+ description={mattis},
+ user1={http://www.tug.org/}}
+
+ % Now try an active character
+\newglossaryentry{sed-url}{name={sed},
+ description={cursus lectus quis odio (uses
+\texttt{\string\protect\string~})},
+ user1={http://theoval.cmp.uea.ac.uk/\protect~nlct/}}
+
+\newglossaryentry{sed2-url}{name={sed},
+ description={cursus lectus quis odio (uses
+\texttt{\string\string\string~})},
+ user1={http://theoval.cmp.uea.ac.uk/\string~nlct/}}
+
+\newglossaryentry{sed3-url}{name={sed},
+ description={cursus lectus quis odio (uses
+\texttt{\string\glstildechar})},
+ user1={http://theoval.cmp.uea.ac.uk/\glstildechar nlct/}}
+
+ % How do we deal with a percent character?
+
+ % Temporarily change the category code
+
+\catcode`\%=12
+\newglossaryentry{phasellus-url}{name={phasellus},
+ description={arcu (catcode change)},
+ user1=http://theoval.cmp.uea.ac.uk/%7Enlct
+}
+\catcode`\%=14
+
+ % Use \%
+
+\newglossaryentry{phasellus2-url}{name={phasellus},
+ description={arcu (uses \texttt{\string\%})},
+ user1=http://theoval.cmp.uea.ac.uk/\%7Enlct
+}
+
+ % Use \glspercentchar
+
+\newglossaryentry{phasellus3-url}{name={phasellus},
+ description={arcu (uses
+ \texttt{\string\glspercentchar})},
+ user1=http://theoval.cmp.uea.ac.uk/\glspercentchar 7Enlct
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-url.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-chap-hyperfirst.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey{chapter}{0}{\glschapnum}
+
+\loadglsentries{example-glossaries-brief}
+
+\renewcommand*{\glslinkpostsetkeys}{%
+ \edef\currentchap{\arabic{chapter}}%
+ \ifnum\currentchap=\glschapnum{\glslabel}\relax
+ % Already used this entry in the current chapter, so switch
+ % off the hyperlink.
+ \setkeys{glslink}{hyper=false}%
+ \else
+ % Hasn't been used in the current chapter. Update the value
+ % of the "chapter" field unless the hyperlink has been switched
+ % off.
+ \glsifhyperon
+ {%
+ \glsfieldxdef{\glslabel}{chapter}{\currentchap}%
+ }%
+ {}%
+ \fi
+}
+
+\begin{document}
+\chapter{Sample}
+
+Use all entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Use them again: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\chapter{Another}
+
+Use all entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Use them again: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\chapter{Start with a Star}
+
+Use all entries but suppress hyperlink:
+\forglsentries{\thislabel}{\gls*{\thislabel}. }
+
+Use all entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Use them again: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-chap-hyperfirst.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-crossref.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\makeglossaries
+
+\renewcommand{\glsseeitemformat}[1]{\textsc{\glsentryname{#1}}}
+
+\newglossaryentry{pear}{name=pear,
+description={an oddly shaped fruit}}
+
+\newglossaryentry{apple}{name=apple,
+description={firm, round fruit},
+see=[see also]{pear}}
+
+\newglossaryentry{banana}{name=banana,
+description={a yellow fruit with an even odder shape than
+a \gls{pear}}}
+
+\newglossaryentry{fruit}{name=fruit,
+description={sweet, fleshy product of plant containing seed}}
+
+\glssee{fruit}{pear,apple,banana}
+
+\begin{document}
+\gls{pear}, \gls{apple} and \gls{banana}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-crossref.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-custom-acronym.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[acronym,% create list of acronyms
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain
+ ]{glossaries}
+
+\makeglossaries
+
+ % This is a sample file to illustrate how to define a custom
+ % acronym style. This example defines the acronyms so that on first use
+ % they display the short form in the text and with the long form
+ % and description in a footnote. In the main body of the
+ % document the short form will be displayed in small caps, but in
+ % the list of acronyms the short form is displayed in normal
+ % capitals. To ensure this, the short form should be written in
+ % lower case when the acronym is defined, and \MakeTextUppercase is
+ % used when it's displayed in the list of acronyms.
+
+\newacronymstyle{custom-fn}% new style name
+{% Check for long form in case of a mixed glossary
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{% Style definitions:
+ % User needs to supply the description:
+ \renewcommand*{\GenericAcronymFields}{}%
+ % Need to ensure hyperlinks are switched off on first use:
+ \glshyperfirstfalse
+ % Redefine the commands used by \glsgenacfmt on first use:
+ \renewcommand*{\genacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % Redefine the no-link full forms:
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ % Redefine the link full forms:
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylong{##2}##3\space(\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylong{##2}##3\space(\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ }%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ }%
+ % Use smallcaps for the acronym in the document text:
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+ % Sort acronyms according to the long form:
+ \renewcommand*{\acronymsort}[2]{##2}%
+ % Set the name in the list of acronyms to the long form followed by
+ % the short form (in upper case) in parentheses:
+ \renewcommand*{\acronymentry}[1]{%
+ \Glsentrylong{##1}\space(\MakeTextUppercase{\glsentryshort{##1}})}%
+}
+
+ % Now set the new acronym style (to override the default style)
+\setacronymstyle{custom-fn}
+
+ % Set an appropriate glossary style:
+\setglossarystyle{altlist}
+
+ % Now define the acronyms (must be done after setting the custom
+ % style)
+
+\newacronym[description={set of tags for use in developing hypertext
+documents}]{html}{html}{hyper text markup language}
+
+\newacronym[description={language used to describe the layout of a
+document written in a markup language}]{css}{css}{cascading style
+sheet}
+
+\begin{document}
+
+\gls{css}. \gls{html}.
+
+\gls{css}. \gls{html}.
+
+No-link full forms: \glsentryfull{css}, \Glsentryfull{css}.
+Linking full forms: \acrfull{css}, \Acrfull{css}, \ACRfull{css}.
+Linking with insert: \acrfull{css}['s], \Acrfull{css}['s],
+\ACRfull{css}['s].
+
+Now test plurals.
+
+No-link full forms: \glsentryfullpl{html}, \Glsentryfullpl{html}.
+Linking full forms: \acrfullpl{html}, \Acrfullpl{html}, \ACRfullpl{html}.
+Linking with insert: \acrfullpl{html}['s], \Acrfullpl{html}['s],
+\ACRfullpl{html}['s].
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-custom-acronym.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-dot-abbr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey{abbrtype}{word}{\abbrtype}
+
+\setacronymstyle{long-short}
+
+\newcommand*{\newabbr}[1][]{%
+ \newacronym[abbrtype=initials,#1]}
+
+\newabbr{eg}{e.g.}{exempli gratia}
+\newabbr{ie}{i.e.}{id est}
+\newabbr{bsc}{B.Sc.}{Bachelor of Science}
+\newabbr{ba}{B.A.}{Bachelor of Arts}
+\newabbr{agm}{A.G.M.}{annual general meeting}
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+ % See the sample-initialisms.tex example file provided with
+ % glossaries-extra.sty for a better way of doing this.
+
+\makeatletter
+\renewcommand{\glspostlinkhook}{%
+ \ifglsfieldeq{\glslabel}{abbrtype}{initials}%
+ {\new@ifnextchar.\doendsentence\doendword}
+ {}%
+}
+\makeatother
+
+\newcommand{\doendsentence}[1]{\spacefactor=10000{}}
+\newcommand{\doendword}{\spacefactor=1000{}}
+
+\begin{document}
+This is a sample document that illustrates abbreviations with
+full stops (periods) and abbreviations that are words (i.e.\
+acronyms). The examples switch to a typewriter font to make it
+easier to see the inter-word and inter-sentence spaces.
+
+The extension package glossaries-extra.sty provides a better way of
+doing this.
+
+First use: \gls{laser} \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm} end of
+sentence.
+
+End of sentence use:
+
+\ttfamily
+
+\gls{laser}. \gls{eg}. \gls{ie}. \gls{bsc}. \gls{ba}. \gls{agm}.
+Done.
+
+laser. e.g. i.e. B.Sc. B.A\@. A.G.M\@. Done.
+
+\rmfamily
+
+Mid-sentence use:
+
+\ttfamily
+
+\gls{laser} \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm} Done.
+
+laser e.g.\ i.e.\ B.Sc.\ B.A. A.G.M. Done.
+
+\rmfamily
+
+Check other sentence terminators:
+
+\ttfamily
+
+\gls{laser}? \gls{eg}? \gls{ie}? \gls{bsc}! \gls{ba}! \gls{agm}? Done.
+
+laser? e.g.? i.e.? B.Sc.! B.A.! A.G.M.? Done.
+
+\rmfamily
+
+\glsresetall Reset. End of sentence use:
+
+\ttfamily
+
+\gls{laser}. \gls{eg}. \gls{ie}. \gls{bsc}. \gls{ba}. \gls{agm}.
+Done.
+
+\rmfamily
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-dot-abbr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-dual.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[acronym]{glossaries}
+
+ % \newdualentry[main options]{label}{short}{long}{description}
+
+\newcommand*{\newdualentry}[5][]{%
+ \newglossaryentry{main-#2}{name={#4},%
+ text={#3\glsadd{#2}},%
+ description={#5},%
+ #1
+ }%
+ \newacronym{#2}{#3\glsadd{main-#2}}{#4}
+}
+
+\newdualentry{svm}% label
+ {SVM}% abbreviation
+ {support vector machine}% long form
+ {Statistical pattern recognition technique}% description
+
+\makeglossaries
+
+\begin{document}
+
+\gls{svm}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-dual.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-entrycount.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage
+ [nomain,% 'nomain' is used to suppress the main glossary
+ acronym% 'acronym' is used to create the 'acronym' glossary
+ ]
+ {glossaries}
+\makeglossaries
+
+\glsenableentrycount
+
+\setacronymstyle{long-short}
+
+\newacronym{html}{HTML}{hypertext markup language}
+\newacronym{css}{CSS}{cascading style sheets}
+\newacronym{xml}{XML}{extensible markup language}
+\newacronym{sql}{SQL}{structured query language}
+\newacronym{rdbms}{RDBMS}{relational database management system}
+\newacronym{rdsms}{RDSMS}{relational data stream management system}
+
+\begin{document}
+These entries are only used once: \cgls{sql}, \cgls{rdbms},
+\cgls{xml}. These entries are used multiple times:
+\cgls{html}, \cgls{html}, \cgls{css}, \cgls{css}, \cgls{css},
+\cgls{rdsms}, \cgls{rdsms}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-entrycount.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-entryfmt.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=tree]{glossaries}
+
+\makeglossaries
+
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\space (\glsentrysymbol{\glslabel})}%
+}
+
+\newglossaryentry{distance}{name=distance,
+description={The length between two points},
+symbol={km}}
+
+\begin{document}
+
+First use: \gls{distance}. Next use: \gls{distance}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-entryfmt.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-FnDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you are using arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[hyperfirst=false]{glossaries}
+
+\makeglossaries
+
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\footnote{\glsentrydesc{\glslabel}}}%
+}
+
+\newglossaryentry{sample}{name={sample},description={an example
+description}}
+
+\begin{document}
+\chapter{Sample Chapter}
+
+First use: \gls{sample}.
+
+Next use: \gls{sample}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-FnDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-font-abbr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey{font}{}{\entryfont}
+
+\newacronymstyle{long-font-short}
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ ({\entryfont{##1}\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ ({\entryfont{##1}\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymfont}[1]{{\entryfont{\glslabel}##1}}%
+ \renewcommand*{\acronymentry}[1]{{\entryfont{##1}\glsentryshort{##1}}}%
+}
+
+\setacronymstyle{long-font-short}
+
+\newcommand*{\newitabbr}[1][]{\newacronym[font=\em,#1]}
+\newcommand*{\newupabbr}[1][]{\newacronym[#1]}
+
+\newitabbr{eg}{e.g.}{exempli gratia}
+\newitabbr{ie}{i.e.}{id est}
+
+\newupabbr{bsc}{BSc}{Bachelor of Science}
+\newupabbr{ba}{BA}{Bachelor of Arts}
+\newupabbr{agm}{AGM}{annual general meeting}
+
+\begin{document}
+
+First use: \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm}.
+
+Next use: \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm}.
+
+Short: \acrshort{eg} \acrshort{ie} \acrshort{bsc} \acrshort{ba}
+\acrshort{agm}.
+
+Full: \acrfull{eg} \acrfull{ie} \acrfull{bsc} \acrfull{ba}
+\acrfull{agm}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-font-abbr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-ignored.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\newignoredglossary{common}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\newglossaryentry{commonex}{type=common,name={common term}}
+
+\begin{document}
+
+\gls{sample}. \gls{commonex}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-ignored.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-index.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,index,nohypertypes={index}]{glossaries}
+\usepackage{glossary-mcols}
+
+\makeglossaries
+
+ % define terms for the index
+
+\newterm[plural={stegosauruses}]{stegosaurus}
+\newterm[plural={triceratopses}]{triceratops}
+\newterm[plural={apatosauruses}]{apatosaurus}
+
+ % To avoid labels conflicting with the same name in the main glossary
+ % prefix the index label with "ind-". (This means that the name must
+ % be set independently.)
+\newterm[name={dinosaur}]{ind-dinosaur}
+\newterm[name={Triassic}]{ind-triassic}
+
+ % define terms for the main glossary
+
+\newglossaryentry{dinosaur}%
+{%
+ name={dinosaur\glsadd{ind-dinosaur}},%
+ description={One of a group of dinosauria}%
+}
+
+\newglossaryentry{Triassic}%
+{%
+ name={Triassic\glsadd{ind-triassic}},%
+ description={The first period of the Mesozoic Era}
+}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Dinosaurs}
+
+\Glspl{dinosaur} are now extinct. They first appeared during the
+\gls{Triassic} period. Examples of \glspl{dinosaur} include the
+\gls{triceratops}, the \gls{apatosaurus} and the \gls{stegosaurus}.
+
+Indexed term: \gls{ind-dinosaur}.
+
+\renewcommand*{\glsnamefont}[1]{\textbf{\makefirstuc{#1}}}
+
+\printglossary[style=long,nogroupskip]
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\printindex[style=mcolindexgroup]
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-index.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-inline.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[toc,order=word,subentrycounter]{glossaries}
+
+\usepackage{glossary-inline}
+
+\renewcommand*{\glossarysection}[2][]{\textbf{#1}: }
+\renewcommand{\glsnamefont}[1]{\textsc{#1}}
+\setglossarystyle{inline}
+
+\makeglossaries
+
+\newglossaryentry{Perl}{name=\texttt{Perl},
+sort=Perl, % need a sort key because name contains a command
+description=A scripting language}
+
+\newglossaryentry{glossary}{name=glossary,
+description={\nopostdesc},
+plural={glossaries}}
+
+\newglossaryentry{glossarycol}{
+description={collection of glosses},
+sort={2},
+parent={glossary}}
+
+\newglossaryentry{glossarylist}{
+description={list of technical words},
+sort={1},
+parent={glossary}}
+
+\newglossaryentry{pagelist}{name=page list,
+ % description value has to be enclosed in braces
+ % because it contains commas
+description={a list of individual pages or page ranges
+(e.g.\ 1,2,4,7-9)}}
+
+\newglossaryentry{mtrx}{name=matrix,
+description={rectangular array of quantities},
+ % plural is not simply obtained by appending an s, so specify
+plural=matrices}
+
+ % entry with a paragraph break in the description
+
+\newglossaryentry{par}{name=paragraph,
+description={distinct section of piece of
+writing. Beginning on new, usually indented, line}}
+
+ % entry with two types of plural. Set the plural form to the
+ % form most likely to be used. If you want to use a different
+ % plural, you will need to explicity specify it in \glslink
+\newglossaryentry{cow}{name=cow,
+ % this isn't necessary, as this form (appending an s) is
+ % the default
+plural=cows,
+ % description:
+description={(\emph{pl.}\ cows, \emph{archaic} kine) an adult
+female of any bovine animal}}
+
+\newglossaryentry{bravo}{name={bravo},
+description={\nopostdesc}}
+
+\newglossaryentry{bravo1}{description={cry of approval (pl.\ bravos)},
+sort={1},
+plural={bravos},
+parent=bravo}
+
+\newglossaryentry{bravo2}{description={hired ruffian or killer (pl.\ bravoes)},
+sort={2},
+plural={bravoes},
+parent=bravo}
+
+\newglossaryentry{seal}{name=seal,description={sea mammal with
+flippers that eats fish}}
+
+\newglossaryentry{sealion}{name={sea lion},
+description={large seal}}
+
+\begin{document}
+
+\title{Sample Document Using glossary Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}% prevent duplicate page link names if using PDF
+\maketitle
+
+\pagenumbering{roman}
+\tableofcontents
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+This document has a glossary in a footnote\footnote{\printglossaries}.
+
+A \gls{glossarylist} (definition~\glsrefentry{glossarylist}) is a
+very useful addition to any technical document, although a
+\gls{glossarycol} (definition~\glsrefentry{glossarycol}) can also
+simply be a collection of glosses, which is another thing entirely.
+Some documents have multiple \glspl{glossarylist}.
+
+Once you have run your document through \LaTeX, you
+will then need to run the \texttt{.glo} file through
+\texttt{makeindex}. You will need to set the output
+file so that it creates a \texttt{.gls} file instead
+of an \texttt{.ind} file, and change the name of
+the log file so that it doesn't overwrite the index
+log file (if you have an index for your document).
+Rather than having to remember all the command line
+switches, you can call the \gls{Perl} script
+\texttt{makeglossaries} which provides a convenient
+wrapper.
+
+If a comma appears within the name or description, grouping
+must be used, e.g.\ in the description of \gls{pagelist}.
+
+\chapter{Plurals and Paragraphs}
+
+Plurals are assumed to have the letter s appended, but if this is
+not the case, as in \glspl{mtrx}, then you need to specify the
+plural when you define the entry. If a term may have multiple
+plurals (for example \glspl{cow}/\glslink{cow}{kine}) then
+define the entry with the plural form most likely to be used and
+explicitly specify the alternative form using \verb|\glslink|.
+\Glspl{seal} and \glspl{sealion} have regular plural forms.
+
+\Gls{bravo} is a homograph, but the plural forms are spelt
+differently. The plural of \gls{bravo1}, a cry of approval
+(definition~\glsrefentry{bravo1}), is \glspl{bravo1}, whereas the
+plural of \gls{bravo2}, a hired ruffian or killer
+(definition~\glsrefentry{bravo2}), is \glspl{bravo2}.
+
+\Glspl{par} can cause a problem in commands, so care is needed
+when having a paragraph break in a \gls{glossarylist} entry.
+
+\chapter{Ordering}
+
+There are two types of ordering: word ordering (which places
+``\gls{sealion}'' before ``\gls{seal}'') and letter ordering
+(which places ``\gls{seal}'' before ``\gls{sealion}'').
+
+
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-inline.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-langdict.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+
+ % This file also requires the glossaries-english
+ % and glossaries-french language modules. These must
+ % be installed in addition to installing the glossaries package.
+\documentclass[english,french]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+\usepackage[nomain]{glossaries}
+
+\newglossary[glg]{english}{gls}{glo}{English to French}
+\newglossary[flg]{french}{flx}{flo}{French to English}
+
+\makeglossaries
+
+ % \newword{label}{english}{determiner}{french}
+\newcommand*{\newword}[4]{%
+ \newglossaryentry{en-#1}{type=english,name={#2},description={#3 #4}}%
+ \newglossaryentry{fr-#1}{type=french,name={#3 #4},text={#4},sort={#4},description={#2}}%
+}
+
+\newword{cat}{cat}{le}{chat}
+\newword{mat}{mat}{la}{natte}
+
+\begin{document}
+\selectlanguage{english}
+The \gls{en-cat} sat on the \gls{en-mat}.
+
+\selectlanguage{french}
+Le \gls{fr-cat} s'est repos\'e sur la \gls{fr-mat}.
+
+\selectlanguage{english}
+\printglossary[type=english]
+
+\selectlanguage{french}
+\printglossary[type=french]
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-langdict.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-newkeys.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you are using arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[nopostdot,nogroupskip]{glossaries}
+
+\glsaddkey*% star version needed as default value needs expanding
+ {ed}% key
+ {\glsentrytext{\glslabel}ed}% default value
+ {\glsentryed}% command analogous to \glsentrytext
+ {\Glsentryed}% command analogous to \Glsentrytext
+ {\glsed}% command analogous to \glstext
+ {\Glsed}% command analogous to \Glstext
+ {\GLSed}% command analogous to \GLStext
+
+\glsaddkey*
+ {ing}% key
+ {\glsentrytext{\glslabel}ing}% default value
+ {\glsentrying}% command analogous to \glsentrytext
+ {\Glsentrying}% command analogous to \Glsentrytext
+ {\glsing}% command analogous to \glstext
+ {\Glsing}% command analogous to \Glstext
+ {\GLSing}% command analogous to \GLStext
+
+
+\makeglossaries
+
+\newglossaryentry{jump}{name={jump},description={}}
+
+\newglossaryentry{run}{name={run},%
+ ed={ran},%
+ ing={running},
+ description={}}
+
+\newglossaryentry{waddle}{name={waddle},%
+ ed={waddled},%
+ ing={waddling},%
+ description={}}
+
+\begin{document}
+
+This is a sample document illustrating how to add new glossary entry
+keys.
+
+The dog \glsed{jump} over the duck.
+
+The duck was \glsing{waddle} round the dog.
+
+The dog \glsed{run} away from the duck.
+
+First letter uppercase: \Glsed{jump}, \Glsing{jump},
+\Glsed{waddle}, \Glsing{waddle},
+\Glsed{run}, \Glsing{run}.
+
+All uppercase: \GLSed{jump}, \GLSing{jump},
+\GLSed{waddle}, \GLSing{waddle},
+\GLSed{run}, \GLSing{run}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-newkeys.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-noidxapp-utf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[index,symbols,nohypertypes={index}]{glossaries}
+\usepackage{glossary-mcols}
+
+\makenoidxglossaries
+
+\renewcommand{\theHequation}{\theequation}
+
+ % main entries
+
+\newglossaryentry{elite}{%
+ name={{é}lite},
+ description={select group of people}
+}
+
+\newglossaryentry{elephant}{%
+ name={elephant},
+ description={very large mammal with tusks}
+}
+
+\newglossaryentry{elk}{%
+ name={elk},
+ description={large northern deer}
+}
+
+\newglossaryentry{emigre}{%
+ name={{é}migré},
+ description={person who has emigrated to another country,
+ especially for political reasons}
+}
+
+ % Symbols
+
+\newglossaryentry{set}{%
+ type=symbols,
+ name={$\mathcal{S}$},
+ text={\mathcal{S}},
+ sort={S},
+ description={A set}}
+
+\newglossaryentry{U}{%
+ type=symbols,
+ name={$\mathcal{U}$},
+ text={\mathcal{U}},
+ sort={U},
+ description={The universal set}}
+
+\newglossaryentry{card}{%
+ type=symbols,
+ name={$|\glsentrytext{set}|$},
+ text={|\glsentrytext{set}|},
+ sort={|},
+ description={cardinality of $\gls{set}$}}
+
+\newglossaryentry{factorial}{%
+ type=symbols,
+ name={$!$},
+ text={!},
+ sort={!},
+ description={factorial}}
+
+ % index entries
+
+\newterm{seal}
+
+\newterm{dinosaur}
+
+\newterm[parent=dinosaur]{ceratopsidae}
+
+\newterm[parent=dinosaur,plural={stegosauruses}]{stegosaurus}
+\newterm[parent=ceratopsidae,plural={triceratopses}]{triceratops}
+\newterm[parent=ceratopsidae,plural={styracosauruses}]{styracosaurus}
+\newterm[parent=dinosaur,plural={apatosauruses}]{apatosaurus}
+
+\newterm{Triassic}
+
+\newterm{Devonian}
+
+\newterm[see={[see also]seal}]{sea lion}
+
+\begin{document}
+
+\chapter{Mathematical Notation}
+
+The cardinality of a set $\gls{set}$ is denoted $\gls{card}$
+The $\gls{factorial}$ symbol indicates factorial.
+$\gls{U}$ is the universal set.
+
+\glsaddall[types=main]
+
+\chapter{Dinosaurs}
+
+\Glspl{dinosaur} are now extinct. They first appeared during the
+\gls{Triassic} period. Examples of \glspl{dinosaur} include the
+\gls{triceratops}, the \gls{styracosaurus}, the \gls{apatosaurus} and the \gls{stegosaurus}.
+
+\Glspl{seal} and \glspl{sea lion} are marine mammals.
+The \gls{Devonian} period was the age of fish.
+
+\glsaddall[types=main]
+
+\chapter{Location Lists}
+
+Dinosaur: \glsdisplaynumberlist{dinosaur}.
+
+Set: \glsdisplaynumberlist{set}.
+
+\Gls{elite}: \glsdisplaynumberlist{elite}.
+
+\begin{equation}
+3\gls[counter=equation]{factorial} = 3 \times 2 \times 1
+\end{equation}
+
+\newcommand{\myhandler}[4]{%
+ Prefix: #1.
+ Counter: #2.
+ Format: #3.
+ Value: #4.
+ Link: \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}.
+ \par
+}
+\newcommand{\myxrhandler}[2][]{XR (#1): #2. }
+
+Factorial locations:
+\glsnumberlistloop{factorial}{\myhandler}{\myxrhandler}
+
+Sea lion locations:
+\glsnumberlistloop{sea lion}{\myhandler}{\myxrhandler}
+
+\printnoidxglossary[type=main,sort=word]
+
+\printnoidxglossary[type=symbols,sort=use]
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\printnoidxglossary[type=index,style=mcolindexgroup,sort=word]
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-noidxapp-utf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-noidxapp.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[index,symbols,nohypertypes={index}]{glossaries}
+\usepackage{glossary-mcols}
+
+\makenoidxglossaries
+
+\renewcommand{\theHequation}{\theequation}
+
+ % main entries
+
+\newglossaryentry{elite}{%
+ name={{\'e}lite},
+ description={select group of people}
+}
+
+\newglossaryentry{elephant}{%
+ name={elephant},
+ description={very large mammal with tusks}
+}
+
+\newglossaryentry{elk}{%
+ name={elk},
+ description={large northern deer}
+}
+
+\newglossaryentry{emigre}{%
+ name={{\'e}migr\'e},
+ description={person who has emigrated to another country,
+ especially for political reasons}
+}
+
+ % Symbols
+
+\newglossaryentry{set}{%
+ type=symbols,
+ name={$\mathcal{S}$},
+ text={\mathcal{S}},
+ sort={S},
+ description={A set}}
+
+\newglossaryentry{U}{%
+ type=symbols,
+ name={$\mathcal{U}$},
+ text={\mathcal{U}},
+ sort={U},
+ description={The universal set}}
+
+\newglossaryentry{card}{%
+ type=symbols,
+ name={$|\glsentrytext{set}|$},
+ text={|\glsentrytext{set}|},
+ sort={|},
+ description={cardinality of $\gls{set}$}}
+
+\newglossaryentry{factorial}{%
+ type=symbols,
+ name={$!$},
+ text={!},
+ sort={!},
+ description={factorial}}
+
+ % index entries
+
+\newterm{seal}
+
+\newterm{dinosaur}
+
+\newterm[parent=dinosaur]{ceratopsidae}
+
+\newterm[parent=dinosaur,plural={stegosauruses}]{stegosaurus}
+\newterm[parent=ceratopsidae,plural={triceratopses}]{triceratops}
+\newterm[parent=ceratopsidae,plural={styracosauruses}]{styracosaurus}
+\newterm[parent=dinosaur,plural={apatosauruses}]{apatosaurus}
+
+\newterm{Triassic}
+
+\newterm{Devonian}
+
+\newterm[see={[see also]seal}]{sea lion}
+
+\begin{document}
+
+\chapter{Mathematical Notation}
+
+The cardinality of a set $\gls{set}$ is denoted $\gls{card}$
+The $\gls{factorial}$ symbol indicates factorial.
+$\gls{U}$ is the universal set.
+
+\glsaddall[types=main]
+
+\chapter{Dinosaurs}
+
+\Glspl{dinosaur} are now extinct. They first appeared during the
+\gls{Triassic} period. Examples of \glspl{dinosaur} include the
+\gls{triceratops}, the \gls{styracosaurus}, the \gls{apatosaurus} and the \gls{stegosaurus}.
+
+\Glspl{seal} and \glspl{sea lion} are marine mammals.
+The \gls{Devonian} period was the age of fish.
+
+\glsaddall[types=main]
+
+\chapter{Location Lists}
+
+Dinosaur: \glsdisplaynumberlist{dinosaur}.
+
+Set: \glsdisplaynumberlist{set}.
+
+\Gls{elite}: \glsdisplaynumberlist{elite}.
+
+\begin{equation}
+3\gls[counter=equation]{factorial} = 3 \times 2 \times 1
+\end{equation}
+
+\newcommand{\myhandler}[4]{%
+ Prefix: #1.
+ Counter: #2.
+ Format: #3.
+ Value: #4.
+ Link: \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}.
+ \par
+}
+\newcommand{\myxrhandler}[2][]{XR (#1): #2. }
+
+Factorial locations:
+\glsnumberlistloop{factorial}{\myhandler}{\myxrhandler}
+
+Sea lion locations:
+\glsnumberlistloop{sea lion}{\myhandler}{\myxrhandler}
+
+\printnoidxglossary[type=main,sort=word]
+
+\printnoidxglossary[type=symbols,sort=use]
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\printnoidxglossary[type=index,style=mcolindexgroup,sort=letter]
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-noidxapp.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-nomathhyper.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\GlsDeclareNoHyperList{main}
+
+\makeglossaries
+
+ % redefine \glsentryfmt so that it adds a hyperlink
+ % if not in math mode and the hyperlinks haven't been forced on
+\renewcommand*{\glsentryfmt}{%
+ \ifmmode
+ \glsgenentryfmt
+ \else
+ \glsifhyperon
+ {\glsgenentryfmt}% hyperlink already on
+ {\glshyperlink[\glsgenentryfmt]{\glslabel}}%
+ \fi
+}
+
+ % define a sample entry:
+\newglossaryentry{x}{name={x},description={sample entry}}
+
+\begin{document}
+\chapter{Sample}
+In text mode: \gls{x}. Inline maths: $\gls{x}$. Displayed
+maths:
+\[
+ \gls{x}
+\]
+
+Back to text mode again: \gls{x}. Don't check the first use flag:
+\glstext{x}. Force on the hyperlink: \glstext+{x}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-nomathhyper.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-numberlist.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[savenumberlist,counter=chapter]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name=sample,description=an example}
+
+\begin{document}
+\chapter{Introduction}
+
+This is a \glsentryname{sample} document. \Glsentryplural{sample}
+are discussed in chapters~\glsdisplaynumberlist{sample}.
+
+\chapter{Sample Documents}
+
+\Gls{sample} documents are provided for testing and illustration
+purposes.
+
+\chapter{More About Samples}
+
+Here's more information about \glspl{sample}.
+
+\chapter{Another chapter}
+
+A chapter about something else.
+
+\chapter{Another About Samples}
+
+Here's some more information about \glspl{sample}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-numberlist.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-prefix.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,acronym]{glossaries-prefix}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},
+ description={an example},
+ prefix={a~},
+ prefixplural={the\space}%
+}
+
+\newglossaryentry{oeil}{name={oeil},
+ plural={yeux},
+ description={eye},
+ prefix={l'},
+ prefixplural={les\space}}
+
+\newacronym
+ [%
+ prefix={an\space},prefixfirst={a~}%
+ ]{svm}{SVM}{support vector machine}
+
+\newglossarystyle{plist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \Glsentryprefix{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+}
+
+\begin{document}
+
+\tableofcontents
+
+\section{Sample}
+
+First use: \pgls{sample}, \pgls{svm}, \pgls{oeil}. Next use: \pgls{sample}, \pgls{svm}, \pgls{oeil}.
+
+Reset. \glsresetall
+
+First use: \pglspl{sample}, \pglspl{svm}, \pglspl{oeil}. Next use:
+\pglspl{sample}, \pglspl{svm}, \pglspl{oeil}.
+
+Reset. \glsresetall
+
+First use: \Pgls{sample}, \Pgls{svm}. Next use: \Pgls{sample}, \Pgls{svm}.
+
+Reset. \glsresetall
+
+First use: \Pglspl{sample}, \Pglspl{svm}. Next use: \Pglspl{sample}, \Pglspl{svm}.
+
+Reset. \glsresetall
+
+First use: \PGLS{sample}, \PGLS{svm}. Next use: \PGLS{sample}, \PGLS{svm}.
+
+Reset. \glsresetall
+
+First use: \PGLSpl{sample}, \PGLSpl{svm}. Next use: \PGLSpl{sample}, \PGLSpl{svm}.
+
+\printglossary[style=plist]
+
+\printacronyms
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-prefix.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-si.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+\usepackage{siunitx}
+\usepackage[style=long4col]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{ohm}{%
+ name=ohm,
+ symbol={\si{\ohm}},
+ description=unit of electrical resistance%
+}
+
+\begin{document}
+\glsaddallunused
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-si.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-storage-abbr-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey
+ {abbrtype}% key/field name
+ {acronym}% default value if not explicitly set
+ {\abbrtype}% custom command to access the value if required
+
+\newacronymstyle
+ {mystyle}% style name
+ {% Use the generic display
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+ }
+ {% User needs to explicitly set the description
+ \renewcommand*{\GenericAcronymFields}{}%
+ % For the full format, test the value of the "abbrtype" key.
+ % If it's set to "acronym" put the short form first with
+ % the long form in brackets.
+ \renewcommand*{\genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % first letter upper case version:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % plural
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % plural and first letter upper case
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % Just use the short form as the name part in the glossary:
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ % Sort by the short form:
+ \renewcommand*{\acronymsort}[2]{##1}%
+ % Just use the surrounding font for the short form:
+ \renewcommand*{\acronymfont}[1]{##1}%
+ % Same for first use:
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ % Default plural suffix if the plural isn't explicitly set
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ }
+
+\setacronymstyle{mystyle}
+
+ % The default for "abbrtype" is "acronym" so we don't need
+ % this new key for acronyms:
+\newacronym[description={system for detecting the position and
+speed of aircraft, ships, etc}]{radar}{radar}{radio detecting
+and ranging}
+
+\newacronym[description={device that creates a narrow beam
+of intense light}]{laser}{laser}{light amplification by
+stimulated emission of radiation}
+
+\newacronym[description={portable breathing device for
+divers}]{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+\newcommand*{\newinitialism}[4][]{%
+ \newacronym[abbrtype=initialism,#1]{#2}{#3}{#4}%
+}
+
+\newinitialism[description={mathematical manipulation of an
+information signal}]{dsp}{DSP}{digital signal processing}
+\newinitialism[description={device that allows customers of
+financial institutions to perform transactions, such as
+cash withdrawal, without the need for a teller}]{atm}{ATM}
+{automated teller machine}
+
+\newcommand*{\newcontraction}[4][]{%
+ \newacronym[abbrtype=contraction,#1]{#2}{#3}{#4}%
+}
+
+\newcontraction[description={front part of a ship below the
+deck}]{focsle}{fo'c's'le}{forecastle}
+
+\newglossaryentry{apple}{name={apple},description={a fruit}}
+
+\newglossarystyle
+ {mystyle}% style name
+ {% base it on the "list" style
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \ifglshaslong{##1}%
+ { (\abbrtype{##1}: \glsentrylong{##1})\space}{}%
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ }
+
+\setglossarystyle{mystyle}
+
+\begin{document}
+
+First use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}, \gls{focsle}.
+
+Next use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}, \gls{focsle}.
+
+Regular term: \gls{apple}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-storage-abbr-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample-storage-abbr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey
+ {abbrtype}% key/field name
+ {word}% default value if not explicitly set
+ {\abbrtype}% custom command to access the value if required
+
+\newacronymstyle
+ {mystyle}% style name
+ {% Use the generic display
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+ }
+ {% Put the long form in the description
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ % For the full format, test the value of the "abbrtype" key.
+ % If it's set to "word" put the short form first with
+ % the long form in brackets.
+ \renewcommand*{\genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % first letter upper case version:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % plural
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % plural and first letter upper case
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % Just use the short form as the name part in the glossary:
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ % Sort by the short form:
+ \renewcommand*{\acronymsort}[2]{##1}%
+ % Just use the surrounding font for the short form:
+ \renewcommand*{\acronymfont}[1]{##1}%
+ % Same for first use:
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ % Default plural suffix if the plural isn't explicitly set
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ }
+
+\setacronymstyle{mystyle}
+
+ % The default for "abbrtype" is "acronym" so we don't need
+ % this new key for acronyms:
+\newacronym{radar}{radar}{radio detecting and ranging}
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+\newacronym{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+\newcommand*{\newinitialism}[4][]{%
+ \newacronym[abbrtype=initialism,#1]{#2}{#3}{#4}%
+}
+
+\newinitialism{dsp}{DSP}{digital signal processing}
+\newinitialism{atm}{ATM}{automated teller machine}
+
+\begin{document}
+
+First use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}.
+
+Next use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample-storage-abbr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[toc,style=treenoname,order=word,subentrycounter]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{Perl}{name=\texttt{Perl},
+sort=Perl, % need a sort key because name contains a command
+description=A scripting language}
+
+\newglossaryentry{glossary}{name=glossary,
+description={\nopostdesc},
+plural={glossaries}}
+
+\newglossaryentry{glossarycol}{
+description={collection of glosses},
+sort={2},
+parent={glossary}}
+
+\newglossaryentry{glossarylist}{
+description={list of technical words},
+sort={1},
+parent={glossary}}
+
+\newglossaryentry{pagelist}{name=page list,
+ % description value has to be enclosed in braces
+ % because it contains commas
+description={a list of individual pages or page ranges
+(e.g.\ 1,2,4,7-9)}}
+
+\newglossaryentry{mtrx}{name=matrix,
+description={rectangular array of quantities},
+ % plural is not simply obtained by appending an s, so specify
+plural=matrices}
+
+ % Entry with a paragraph break in the description:
+ % (If you use \newglossaryentry, the paragraph break
+ % must be identified with \glspar not with \par or a blank line.
+ % It's easier to use \longnewglossaryentry.)
+
+\longnewglossaryentry{par}% label
+{name=paragraph}% options
+{% multi-paragraph description
+distinct section of a piece of writing.
+
+Beginning on new, usually indented, line}
+
+ % entry with two types of plural. Set the plural form to the
+ % form most likely to be used. If you want to use a different
+ % plural, you will need to explicity specify it in \glslink
+\newglossaryentry{cow}{name=cow,
+ % this isn't necessary, as this form (appending an s) is
+ % the default
+plural=cows,
+ % description:
+description={(\emph{pl.}\ cows, \emph{archaic} kine) an adult
+female of any bovine animal}}
+
+\newglossaryentry{bravo}{name={bravo},
+description={\nopostdesc}}
+
+\newglossaryentry{bravo1}{description={cry of approval (pl.\ bravos)},
+sort={1},
+plural={bravos},
+parent=bravo}
+
+\newglossaryentry{bravo2}{description={hired ruffian or killer (pl.\ bravoes)},
+sort={2},
+plural={bravoes},
+parent=bravo}
+
+\newglossaryentry{seal}{%
+ name=seal,%
+ description={sea mammal with flippers that eats fish}
+}
+
+\newglossaryentry{sealion}{%
+ name={sea lion},%
+ description={large seal}%
+}
+
+ % If a value contains a comma, you must use braces to hide
+ % it from the key=value list parser. Take care to avoid
+ % accidentally introducing unwanted space as leading and trailing
+ % spaces within the braces aren't stripped. For example,
+ % text={ spurious space } will result in extra space appearing
+ % when the entry is referenced.
+\newglossaryentry{spuriousspace}{%
+ name={space, spurious},
+ text={spurious space},
+ description={unwanted spaces accidentally introduced by
+uncommented line breaks or attempts to pretty-print the \LaTeX\ code}
+}
+
+\begin{document}
+
+\title{Sample Document Using the glossaries Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}% prevent duplicate page link names if using PDF
+\maketitle
+
+\pagenumbering{roman}
+\tableofcontents
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+A \gls{glossarylist} (definition~\glsrefentry{glossarylist}) is a
+very useful addition to any technical document, although a
+\gls{glossarycol} (definition~\glsrefentry{glossarycol}) can also
+simply be a collection of glosses, which is another thing entirely.
+Some documents have multiple \glspl{glossarylist}.
+
+Once you have run your document through \LaTeX, you will then need
+to run the \texttt{.glo} file through \texttt{makeindex} (default)
+or \texttt{xindy}. You will need to set the output file so that the
+indexing application
+creates a \texttt{.gls} file instead of an \texttt{.ind} file, and
+change the name of the log file so that it doesn't overwrite the
+index log file (if you have an index for your document). Rather
+than having to remember all the command line switches, you can call
+the \gls{Perl} script \texttt{makeglossaries} which provides a
+convenient wrapper. See
+\href{https://www.dickimaw-books.com/latex/buildglossaries}{Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build} for help.
+
+If a comma appears within the name or description, grouping
+must be used, e.g.\ in the description of \gls{pagelist}.
+Be careful about \glspl{spuriousspace} appearing in your code.
+
+\chapter{Plurals and Paragraphs}
+
+Plurals are assumed to have the letter s appended, but if this is
+not the case, as in \glspl{mtrx}, then you need to specify the
+plural when you define the entry. If a term may have multiple
+plurals (for example \glspl{cow}/\glslink{cow}{kine}) then
+define the entry with the plural form most likely to be used and
+explicitly specify the alternative form using \verb|\glslink|
+(e.g.\ \glslink{cow}{kine})
+or \verb|\glsdisp| (e.g.\ \glsdisp{cow}{kine}).
+\Glspl{seal} and \glspl{sealion} have regular plural forms.
+
+\Gls{bravo} is a homograph, but the plural forms are spelt
+differently. The plural of \gls{bravo1}, a cry of approval
+(definition~\glsrefentry{bravo1}), is \glspl{bravo1}, whereas the
+plural of \gls{bravo2}, a hired ruffian or killer
+(definition~\glsrefentry{bravo2}), is \glspl{bravo2}.
+
+\Glspl{par} can cause a problem in commands, so care is needed
+when having a paragraph break in a \gls{glossarylist} entry.
+
+\chapter{Ordering}
+
+There are two types of ordering: word ordering (which places
+``\gls{sealion}'' before ``\gls{seal}'') and letter ordering
+(which places ``\gls{seal}'' before ``\gls{sealion}'').
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sample4col.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{article}
+
+\usepackage[style=long4colheaderborder]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{w}{name={$w$},
+sort=w,
+description={width},
+symbol=m}
+
+\newglossaryentry{M}{name={$M$},
+sort=M,
+description={mass},
+symbol=kg}
+
+\begin{document}
+
+\printglossaries
+
+The width, \gls{w}, is measured in meters. The mass, \gls{M} is
+measured in kilograms.
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sample4col.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleaccsupp.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{article}
+
+\usepackage[margin=0.5in]{geometry}
+\usepackage{booktabs}
+\usepackage[acronym]{glossaries-accsupp}
+
+\makeglossaries
+
+\newglossaryentry{dr}{name=Dr,description={Doctor},access={Doctor}}
+
+\newacronym[shortaccess=S V M]{svm}{svm}{support vector machine}
+
+\newacronym{eg}{e.g.}{for example}
+
+\newcommand*{\samplerow}[1]{%
+ \gls{#1} & \gls{#1} & \acrshort{#1} & \acrlong{#1}\\
+ \glsreset{#1}\Gls{#1} & \Gls{#1} & \Acrshort{#1} & \Acrlong{#1}\\
+ \glsreset{#1}\GLS{#1} & \GLS{#1} & \ACRshort{#1} & \ACRlong{#1}\\
+}
+
+\begin{document}
+
+\begin{center}
+\begin{tabular}{lllll}
+\toprule
+\bfseries First & \bfseries Next & \bfseries Short & \bfseries Long
+\\\midrule
+\samplerow{dr}
+\midrule
+\samplerow{eg}
+\midrule
+\samplerow{svm}
+\bottomrule
+\end{tabular}
+\end{center}
+
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleaccsupp.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleAcr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[style=long,% use 'long' style for the glossary
+ toc,% add glossary to table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Set the acronym style
+\setacronymstyle{long-sc-short}
+
+\newacronym{svm}% label
+{svm}% abbreviation
+{support vector machine}% long form
+
+\newacronym{ksvm}{ksvm}{kernel support vector machine}
+
+\newacronym{rna}{rna}{ribonukleins\"aure}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+\Glspl{svm} are used widely in the area of pattern recognition.
+Subsequent use: \gls{svm}.
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. Plural: \glspl{ksvm}. Resetting
+acronyms.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{ksvm}.
+
+\chapter{Short, Long and Full Forms}
+
+These commands don't affect the first use flag:
+
+\begin{center}
+\begin{tabular}{lll}
+ & Unstarred & Starred\\
+acrshort & \acrshort{svm} & \acrshort*{svm}\\
+Acrshort & \Acrshort{svm} & \Acrshort*{svm}\\
+ACRshort & \ACRshort{svm} & \ACRshort*{svm}\\
+acrlong & \acrlong{svm} & \acrlong*{svm}\\
+Acrlong & \Acrlong{svm} & \Acrlong*{svm}\\
+ACRlong & \ACRlong{svm} & \ACRlong*{svm}\\
+acrfull & \acrfull{svm} & \acrfull*{svm}\\
+Acrfull & \Acrfull{svm} & \Acrfull*{svm}\\
+ACRfull & \ACRfull{svm} & \ACRfull*{svm}\\
+\\
+& Insert Unstarred & Insert Starred\\
+acrshort & \acrshort{svm}['s] & \acrshort*{svm}['s]\\
+Acrshort & \Acrshort{svm}['s] & \Acrshort*{svm}['s]\\
+ACRshort & \ACRshort{svm}['s] & \ACRshort*{svm}['s]\\
+acrlong & \acrlong{svm}['s] & \acrlong*{svm}['s]\\
+Acrlong & \Acrlong{svm}['s] & \Acrlong*{svm}['s]\\
+ACRlong & \ACRlong{svm}['s] & \ACRlong*{svm}['s]\\
+acrfull & \acrfull{svm}['s] & \acrfull*{svm}['s]\\
+Acrfull & \Acrfull{svm}['s] & \Acrfull*{svm}['s]\\
+ACRfull & \ACRfull{svm}['s] & \ACRfull*{svm}['s]
+\end{tabular}
+\end{center}
+
+\chapter{Another chapter}
+
+You don't need to worry about makeindex's special characters:
+\gls{rna}.
+
+\printglossary[title={List of Acronyms}]
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleAcr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleAcrDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[acronym,% create 'acronym' glossary type
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain,%
+ style=altlist, % use altlist style
+ toc, % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Change the acronym style to long-sc-short-desc:
+\setacronymstyle{long-sc-short-desc}
+
+ % Change the "see" items so that they use \acronymfont:
+\renewcommand*{\glsseeitemformat}[1]{\acronymfont{\glsentrytext{#1}}}
+
+ % Not using a font that supports bold smallcaps so change the way
+ % the name is formatted in the glossary:
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\newacronym[description={Statistical pattern recognition
+technique~\protect\cite{svm}}, % acronym's description
+]{svm}{svm}{support vector machine}
+
+\newacronym
+ [description={Statistical pattern recognition technique
+ using the ``kernel trick''},% acronym's description
+ see={[see also]{svm}},
+]
+{ksvm}{ksvm}{kernel support vector machine}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots\ (but beware, converting the initial letter to
+upper case for a small caps acronym is sometimes considered
+poor style).
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleAcrDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleacronyms.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[acronym,acronymlists={main,acronym2}]{glossaries}
+
+\newglossary[alg2]{acronym2}{acr2}{acn2}{Statistical Acronyms}
+
+\makeglossaries
+
+ % Use long (short) acronym style:
+\setacronymstyle{long-short}
+
+ % Main glossary is a list of calculus acronyms
+
+\renewcommand{\glossaryname}{Calculus Acronyms}
+
+\newacronym[type=main]{vc}{VC}{Vector Calculus}
+\newacronym[type=main]{ftoc}{FTOC}{Fundamental Theorem of Calculus}
+
+ % "acronym" glossary is a list of computer related acronyms
+
+\renewcommand{\acronymname}{Computer Acronyms}
+
+\newacronym{kb}{kb}{KiloBit}
+\newacronym{kB}{kB}{KiloByte}
+
+ % "acronym2" glossary is a list of statistical acronyms
+
+\newacronym[type=acronym2]{svm}{SVM}{Support Vector Machine}
+
+\begin{document}
+\section{Sample Section}
+\gls{kb}. \gls{kB}. \gls{vc}. \gls{ftoc}. \gls{svm}.
+
+\gls{kb}. \gls{kB}. \gls{vc}. \gls{ftoc}. \gls{svm}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleacronyms.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleCustomAcr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[acronym,% create 'acronym' glossary type
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain,
+ style=altlist, % use altlist style
+ toc, % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Define a new acronym style called "altfn" that's based on the
+ % footnote-sc-desc style
+
+\newacronymstyle
+ {altfn}% style name
+ {% Inherit display style from "footnote-sc-desc"
+ \GlsUseAcrEntryDispStyle{footnote-sc-desc}%
+ }%
+ {% Inherit definitions from "footnote-sc-desc"
+ \GlsUseAcrStyleDefs{footnote-sc-desc}%
+ % Modify the first use display styles so they put the long form
+ % followed by the description in the footnote:
+ %
+ % First use of \gls:
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % First use of \Gls:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % First use of \glspl:
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % First use of \Glspl:
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % Sort according to long form:
+ \renewcommand*{\acronymsort}[2]{##2}%
+ % Set the name (as displayed in the glossary) to long (short)
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1} (\acronymfont{\glsentryshort{##1}})}%
+ % Since bold small caps isn't supported with this document's
+ % fonts, adjust \acronymfont so that it switches to medium
+ % small caps:
+ \renewcommand{\acronymfont}[1]{\textmd{\scshape ##1}}%
+ }
+
+ % Now use this new style:
+\setacronymstyle{altfn}
+
+ % Change the "see" items so that they use \acronymfont:
+\renewcommand*{\glsseeitemformat}[1]{\acronymfont{\glsentrytext{#1}}}
+
+\newacronym[description={Statistical pattern recognition
+technique~\protect\cite{svm}}, % acronym's description
+]{svm}{svm}{support vector machine}
+
+\newacronym[description={Statistical pattern recognition technique
+using the ``kernel trick''},% acronym's description
+see={[see also]{svm}},
+]{ksvm}{ksvm}{kernel
+support vector machine}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots\ (but beware, converting the initial letter to
+upper case for a small caps acronym is sometimes considered
+poor style).
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
+
+\glsresetall
+(Reset all.)
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleCustomAcr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleDB.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[nonumberlist]{glossaries}
+
+\newglossary[nlg]{symbols}{not}{ntn}{Symbols}
+
+\makeglossaries
+
+\loadglsentries{database1}
+\loadglsentries[symbols]{database2}
+
+\begin{document}
+
+\glsaddall
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleDB.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ %
+ % See also sampleAcrDesc.tex
+ %
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+
+\usepackage[style=altlist, % use altlist style
+ toc % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{svm}{
+ % how the entry name should appear in the glossary
+name={Support vector machine (SVM)},
+ % how the description should appear in the glossary
+description={Statistical pattern recognition
+technique~\cite{svm}},
+ % how the entry should appear in the document text
+text={svm},
+ % how the entry should appear the first time it is
+ % used in the document text
+first={support vector machine (svm)}}
+
+\newglossaryentry{ksvm}{
+name={Kernel support vector machine (KSVM)},
+description={Statistical pattern recognition technique
+using the ``kernel trick'' (see also SVM)},
+text={ksvm},
+first={kernel support vector machine}}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots
+
+This is the text produced without a link: \glsentrytext{svm}.
+This is the text produced on first use without a link:
+\glsentryfirst{svm}. This is the entry's description without
+a link: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary[title={Acronyms}]
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleEq.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+\documentclass[a4paper,12pt]{report}
+
+\usepackage{amsmath}
+\usepackage[colorlinks]{hyperref}
+\usepackage[xindy,toc,ucmark,style=long3colheader,counter=equation]{glossaries}
+
+\makeglossaries
+
+\newcommand{\erf}{\operatorname{erf}}
+\newcommand{\erfc}{\operatorname{erfc}}
+
+\pagestyle{headings}
+
+ % redefine the way hyperref creates the target for equations
+ % so that the glossary links to equation numbers work
+
+ \renewcommand*\theHequation{\theHchapter.\arabic{equation}}
+
+ % Change the glossary headings
+
+\renewcommand{\entryname}{Notation}
+\renewcommand{\descriptionname}{Function Name}
+\renewcommand{\pagelistname}{Number of Formula}
+
+ % define glossary entries
+
+\newglossaryentry{Gamma}{name=\ensuremath{\Gamma(z)},
+description=Gamma function,
+sort=Gamma}
+
+\newglossaryentry{gamma}{name={\ensuremath{\gamma(\alpha,x)}},
+description=Incomplete gamma function,
+sort=gamma1}
+
+\newglossaryentry{iGamma}{name={\ensuremath{\Gamma(\alpha,x)}},
+description=Incomplete gamma function,
+sort=Gamma2}
+
+\newglossaryentry{psi}{name=\ensuremath{\psi(x)},
+description=Psi function,sort=psi}
+
+\newglossaryentry{erf}{name=\ensuremath{\erf(x)},
+description=Error function,sort=erf}
+
+\newglossaryentry{erfc}{name=\ensuremath{\erfc},
+description=Complementary error function,sort=erfc}
+
+\newglossaryentry{B}{name={\ensuremath{B(x,y)}},
+description=Beta function,sort=B}
+
+\newglossaryentry{Bx}{name={\ensuremath{B_x(p,q)}},
+description=Incomplete beta function,sort=Bx}
+
+\newglossaryentry{Tn}{name=\ensuremath{T_n(x)},
+description=Chebyshev's polynomials of the first kind,sort=Tn}
+
+\newglossaryentry{Un}{name=\ensuremath{U_n(x)},
+description=Chebyshev's polynomials of the second kind,sort=Un}
+
+\newglossaryentry{Hn}{name=\ensuremath{H_n(x)},
+description=Hermite polynomials,sort=Hn}
+
+\newglossaryentry{Ln}{name=\ensuremath{L_n^\alpha(x)},
+description=Laguerre polynomials,sort=Lna}
+
+\newglossaryentry{Znu}{name=\ensuremath{Z_\nu(z)},
+description=Bessel functions,sort=Z}
+
+\newglossaryentry{Phi}{name={\ensuremath{\Phi(\alpha,\gamma;z)}},
+description=confluent hypergeometric function,sort=Pagz}
+
+\newglossaryentry{knu}{name=\ensuremath{k_\nu(x)},
+description=Bateman's function,sort=kv}
+
+\newglossaryentry{Dp}{name=\ensuremath{D_p(z)},
+description=Parabolic cylinder functions,sort=Dp}
+
+\newglossaryentry{F}{name={\ensuremath{F(\phi,k)}},
+description=Elliptical integral of the first kind,sort=Fpk}
+
+\newglossaryentry{C}{name=\ensuremath{C},
+description=Euler's constant,sort=C}
+
+\newglossaryentry{G}{name=\ensuremath{G},
+description=Catalan's constant,sort=G}
+
+\begin{document}
+\title{A Sample Document Using glossaries.sty}
+\author{Nicola Talbot}
+\maketitle
+
+\begin{abstract}
+This is a sample document illustrating the use of the \textsf{glossaries}
+package. The functions here have been taken from ``Tables of
+Integrals, Series, and Products'' by I.S.~Gradshteyn and I.M~Ryzhik.
+The glossary is a list of special functions, so
+the equation number has been used rather than the page number. This
+can be done using the \texttt{counter=equation} package
+option.
+\end{abstract}
+
+\printglossary[title={Index of Special Functions and Notations}]
+
+\chapter{Gamma Functions}
+
+\begin{equation}
+\gls{Gamma} = \int_{0}^{\infty}e^{-t}t^{z-1}\,dt
+\end{equation}
+
+\verb|\ensuremath| is only required here if using
+hyperlinks.
+\begin{equation}
+\glslink{Gamma}{\ensuremath{\Gamma(x+1)}} = x\Gamma(x)
+\end{equation}
+
+\begin{equation}
+\gls{gamma} = \int_0^x e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{iGamma} = \int_x^\infty e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\newpage
+
+\begin{equation}
+\gls{Gamma} = \Gamma(\alpha, x) + \gamma(\alpha, x)
+\end{equation}
+
+\begin{equation}
+\gls{psi} = \frac{d}{dx}\ln\Gamma(x)
+\end{equation}
+
+\chapter{Error Functions}
+
+\begin{equation}
+\gls{erf} = \frac{2}{\surd\pi}\int_0^x e^{-t^2}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{erfc} = 1 - \erf(x)
+\end{equation}
+
+\chapter{Beta Function}
+
+\begin{equation}
+\gls{B} = 2\int_0^1 t^{x-1}(1-t^2)^{y-1}\,dt
+\end{equation}
+Alternatively:
+\begin{equation}
+\gls{B} = 2\int_0^{\frac\pi2}\sin^{2x-1}\phi\cos^{2y-1}\phi\,d\phi
+\end{equation}
+
+\begin{equation}
+\gls{B} = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} = B(y,x)
+\end{equation}
+
+\begin{equation}
+\gls{Bx} = \int_0^x t^{p-1}(1-t)^{q-1}\,dt
+\end{equation}
+
+\chapter{Polynomials}
+
+\section{Chebyshev's polynomials}
+
+\begin{equation}
+\gls{Tn} = \cos(n\arccos x)
+\end{equation}
+
+\begin{equation}
+\gls{Un} = \frac{\sin[(n+1)\arccos x]}{\sin[\arccos x]}
+\end{equation}
+
+\section{Hermite polynomials}
+
+\begin{equation}
+\gls{Hn} = (-1)^n e^{x^2} \frac{d^n}{dx^n}(e^{-x^2})
+\end{equation}
+
+\section{Laguerre polynomials}
+
+\begin{equation}
+L_n^{\alpha} (x) = \frac{1}{n!}e^x x^{-\alpha}
+\frac{d^n}{dx^n}(e^{-x}x^{n+\alpha})
+\end{equation}
+
+\chapter{Bessel Functions}
+
+Bessel functions $Z_\nu$ are solutions of
+\begin{equation}
+\frac{d^2\glslink{Znu}{Z_\nu}}{dz^2}
++ \frac{1}{z}\,\frac{dZ_\nu}{dz} +
+\left( 1-\frac{\nu^2}{z^2}Z_\nu = 0 \right)
+\end{equation}
+
+\chapter{Confluent hypergeometric function}
+
+\begin{equation}
+\gls{Phi} = 1 + \frac{\alpha}{\gamma}\,\frac{z}{1!}
++ \frac{\alpha(\alpha+1)}{\gamma(\gamma+1)}\,\frac{z^2}{2!}
++\frac{\alpha(\alpha+1)(\alpha+2)}{\gamma(\gamma+1)(\gamma+2)}\,
+\frac{z^3}{3!} + \cdots
+\end{equation}
+
+\begin{equation}
+\gls{knu} = \frac{2}{\pi}\int_0^{\pi/2}
+\cos(x \tan\theta - \nu\theta)\,d\theta
+\end{equation}
+
+\chapter{Parabolic cylinder functions}
+
+\begin{equation}
+\gls{Dp} = 2^{\frac{p}{2}}e^{-\frac{z^2}{4}}
+\left\{
+\frac{\surd\pi}{\Gamma\left(\frac{1-p}{2}\right)}
+\Phi\left(-\frac{p}{2},\frac{1}{2};\frac{z^2}{2}\right)
+-\frac{\sqrt{2\pi}z}{\Gamma\left(-\frac{p}{2}\right)}
+\Phi\left(\frac{1-p}{2},\frac{3}{2};\frac{z^2}{2}\right)
+\right\}
+\end{equation}
+
+\chapter{Elliptical Integral of the First Kind}
+
+\begin{equation}
+\gls{F} = \int_0^\phi \frac{d\alpha}{\sqrt{1-k^2\sin^2\alpha}}
+\end{equation}
+
+\chapter{Constants}
+
+\begin{equation}
+\gls{C} = 0.577\,215\,664\,901\ldots
+\end{equation}
+
+\begin{equation}
+\gls{G} = 0.915\,965\,594\ldots
+\end{equation}
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleEq.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleEqPg.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ %
+ % To ensure that the page numbers are up-to-date:
+ %
+ % latex sampleEqPg
+ % makeglossaries sampleEqPg
+ % latex sampleEqPg
+ % makeglossaries sampleEqPg
+ % latex sampleEqPg
+ %
+ % The extra makeglossaries run is required because adding the
+ % glossary in the second LaTeX run shifts the page numbers on
+ % which means that the glossary needs to be updated again.
+ % (Note that this problem is avoided if the page numbering is
+ % reset after the glossary. For example, if the glossary has
+ % roman numbering and the subsequent pages have arabic numbering)
+ %
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper,12pt]{report}
+
+\usepackage{amsmath}
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=long3colheader,toc,
+ counter=equation]{glossaries}
+
+\newcommand{\erf}{\operatorname{erf}}
+\newcommand{\erfc}{\operatorname{erfc}}
+
+ % redefine the way hyperref creates the target for equations
+ % so that the glossary links to equation numbers work
+
+\renewcommand*\theHequation{\thechapter.\arabic{equation}}
+
+\renewcommand{\glossaryname}{Index of Special Functions and Notations}
+
+\renewcommand{\glossarypreamble}{Numbers in italic indicate the equation number,
+numbers in bold indicate page numbers where the main definition occurs.\par}
+
+ % set the glossary number style to italic
+ % hyperit is used instead of textit because
+ % the hyperref package is being used.
+\renewcommand{\glsnumberformat}[1]{\hyperit{#1}}
+
+ % 1st column heading
+\renewcommand{\entryname}{Notation}
+
+ % 2nd column heading
+\renewcommand{\descriptionname}{Function Name}
+
+ % 3rd column heading
+\renewcommand{\pagelistname}{}
+
+ % Redefine header row so that it
+ % adds a blank row after the title row
+\renewcommand{\glossaryheader}{\bfseries\entryname &
+\bfseries\descriptionname&\bfseries\pagelistname\\
+& & \\\endhead}
+
+ % Define glossary entries
+
+\newglossaryentry{Gamma}{name=\ensuremath{\Gamma(z)},
+description=Gamma function,sort=Gamma}
+
+\newglossaryentry{gamma}{name=\ensuremath{\gamma(\alpha,x)},
+description=Incomplete gamma function,sort=gamma}
+
+\newglossaryentry{iGamma}{name=\ensuremath{\Gamma(\alpha,x)},
+description=Incomplete gamma function,sort=Gamma}
+
+\newglossaryentry{psi}{name=\ensuremath{\psi(x)},
+description=Psi function,sort=psi}
+
+\newglossaryentry{erf}{name=\ensuremath{\erf(x)},
+description=Error function,sort=erf}
+
+\newglossaryentry{erfc}{name=\ensuremath{\erfc(x)},
+description=Complementary error function,sort=erfc}
+
+\newglossaryentry{beta}{name=\ensuremath{B(x,y)},
+description=Beta function,sort=B}
+
+\newglossaryentry{Bx}{name=\ensuremath{B_x(p,q)},
+description=Incomplete beta function,sort=Bx}
+
+\newglossaryentry{Tn}{name=\ensuremath{T_n(x)},
+description=Chebyshev's polynomials of the first kind,
+sort=Tn}
+
+\newglossaryentry{Un}{name=\ensuremath{U_n(x)},
+description=Chebyshev's polynomials of the second kind,
+sort=Un}
+
+\newglossaryentry{Hn}{name=\ensuremath{H_n(x)},
+description=Hermite polynomials,sort=Hn}
+
+\newglossaryentry{Lna}{name=\ensuremath{L_n^\alpha(x)},
+description=Laguerre polynomials,sort=Lna}
+
+\newglossaryentry{Znu}{name=\ensuremath{Z_\nu(z)},
+description=Bessel functions,sort=Z}
+
+\newglossaryentry{Pagz}{name=\ensuremath{\Phi(\alpha,\gamma;z)},
+description=confluent hypergeometric function,sort=Pagz}
+
+\newglossaryentry{kv}{name=\ensuremath{k_\nu(x)},
+description=Bateman's function,sort=kv}
+
+\newglossaryentry{Dp}{name=\ensuremath{D_p(z)},
+description=Parabolic cylinder functions,sort=Dp}
+
+\newglossaryentry{Fpk}{name=\ensuremath{F(\phi,k)},
+description=Elliptical integral of the first kind,sort=Fpk}
+
+\newglossaryentry{C}{name=\ensuremath{C},
+description=Euler's constant,sort=C}
+
+\newglossaryentry{G}{name=\ensuremath{G},
+description=Catalan's constant,sort=G}
+
+\makeglossaries
+
+\pagestyle{headings}
+
+\begin{document}
+
+\title{Sample Document Using Interchangable Numbering}
+\author{Nicola Talbot}
+\maketitle
+
+\begin{abstract}
+This is a sample document illustrating the use of the \textsf{glossaries}
+package. The functions here have been taken from ``Tables of
+Integrals, Series, and Products'' by I.S.~Gradshteyn and I.M~Ryzhik.
+
+The glossary lists both page numbers and equation numbers.
+Since the majority of the entries use the equation number,
+\texttt{counter=equation} was used as a package option.
+Note that this example will only work where the
+page number and equation number compositor is the same. So
+it won't work if, say, the page numbers are of the form
+2-4 and the equation numbers are of the form 4.6.
+As most of the glossary entries should have an italic
+format, it is easiest to set the default format to
+italic.
+
+\end{abstract}
+
+\tableofcontents
+
+\printglossary[toctitle={Special Functions}]
+
+\chapter{Gamma Functions}
+
+The \glslink[format=hyperbf,counter=page]{Gamma}{gamma function} is
+defined as
+\begin{equation}
+\gls{Gamma} = \int_{0}^{\infty}e^{-t}t^{z-1}\,dt
+\end{equation}
+
+\begin{equation}
+\glslink{Gamma}{\ensuremath{\Gamma(x+1)}} = x\Gamma(x)
+\end{equation}
+
+\begin{equation}
+\gls{gamma} = \int_0^x e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{iGamma} = \int_x^\infty e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\newpage
+
+\begin{equation}
+\glslink{Gamma}{\ensuremath{\Gamma(\alpha)}} =
+\Gamma(\alpha, x) + \gamma(\alpha, x)
+\end{equation}
+
+\begin{equation}
+\gls{psi} = \frac{d}{dx}\ln\Gamma(x)
+\end{equation}
+
+\chapter{Error Functions}
+
+The \glslink[format=hyperbf,counter=page]{erf}{error function} is defined as:
+\begin{equation}
+\gls{erf} = \frac{2}{\surd\pi}\int_0^x e^{-t^2}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{erfc} = 1 - \erf(x)
+\end{equation}
+
+\chapter{Beta Function}
+
+\begin{equation}
+\gls{beta} = 2\int_0^1 t^{x-1}(1-t^2)^{y-1}\,dt
+\end{equation}
+Alternatively:
+\begin{equation}
+\gls{beta} = 2\int_0^{\frac\pi2}\sin^{2x-1}\phi\cos^{2y-1}\phi\,d\phi
+\end{equation}
+
+\begin{equation}
+\gls{beta} = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} = B(y,x)
+\end{equation}
+
+\begin{equation}
+\gls{Bx} = \int_0^x t^{p-1}(1-t)^{q-1}\,dt
+\end{equation}
+
+\chapter{Chebyshev's polynomials}
+
+\begin{equation}
+\gls{Tn} = \cos(n\arccos x)
+\end{equation}
+
+\begin{equation}
+\gls{Un} = \frac{\sin[(n+1)\arccos x]}{\sin[\arccos x]}
+\end{equation}
+
+\chapter{Hermite polynomials}
+
+\begin{equation}
+\gls{Hn} = (-1)^n e^{x^2} \frac{d^n}{dx^n}(e^{-x^2})
+\end{equation}
+
+\chapter{Laguerre polynomials}
+
+\begin{equation}
+\gls{Lna} = \frac{1}{n!}e^x x^{-\alpha}
+\frac{d^n}{dx^n}(e^{-x}x^{n+\alpha})
+\end{equation}
+
+\chapter{Bessel Functions}
+
+Bessel functions $Z_\nu(z)$ are solutions of
+\begin{equation}
+\frac{d^2\glslink{Znu}{Z_\nu}}{dz^2} + \frac{1}{z}\,\frac{dZ_\nu}{dz} +
+\left(
+1-\frac{\nu^2}{z^2}Z_\nu = 0
+\right)
+\end{equation}
+
+\chapter{Confluent hypergeometric function}
+
+\begin{equation}
+\gls{Pagz} = 1 + \frac{\alpha}{\gamma}\,\frac{z}{1!}
++ \frac{\alpha(\alpha+1)}{\gamma(\gamma+1)}\,\frac{z^2}{2!}
++\frac{\alpha(\alpha+1)(\alpha+2)}
+ {\gamma(\gamma+1)(\gamma+2)}
+\,\frac{z^3}{3!}
++ \cdots
+\end{equation}
+
+\begin{equation}
+\gls{kv} = \frac{2}{\pi}\int_0^{\pi/2}
+\cos(x \tan\theta - \nu\theta)\,d\theta
+\end{equation}
+
+\chapter{Parabolic cylinder functions}
+
+\begin{equation}
+\gls{Dp} = 2^{\frac{p}{2}}e^{-\frac{z^2}{4}}
+\left\{
+\frac{\surd\pi}{\Gamma\left(\frac{1-p}{2}\right)}
+\Phi\left(-\frac{p}{2},\frac{1}{2};\frac{z^2}{2}\right)
+-\frac{\sqrt{2\pi}z}{\Gamma\left(-\frac{p}{2}\right)}
+\Phi\left(\frac{1-p}{2},\frac{3}{2};\frac{z^2}{2}\right)
+\right\}
+\end{equation}
+
+\chapter{Elliptical Integral of the First Kind}
+
+\begin{equation}
+\gls{Fpk} = \int_0^\phi
+\frac{d\alpha}{\sqrt{1-k^2\sin^2\alpha}}
+\end{equation}
+
+\chapter{Constants}
+
+\begin{equation}
+\gls{C} = 0.577\,215\,664\,901\ldots
+\end{equation}
+
+\begin{equation}
+\gls{G} = 0.915\,965\,594\ldots
+\end{equation}
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleEqPg.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleFnAcrDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[acronym,% create 'acronym' glossary type
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain,
+ style=altlist, % use altlist style
+ toc, % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Change the acronym style to a small-caps footnote style:
+\setacronymstyle{footnote-sc-desc}
+
+ % Make some minor adjustments to the style:
+\renewcommand*{\acronymsort}[2]{#1}% sort by short form
+\renewcommand*{\acronymentry}[1]{%
+ \acronymfont{\glsentryshort{#1}}\space (\glsentrylong{#1})}
+
+ % Not using a font that supports bold smallcaps so ensure
+ % the acronym is always in medium weight.
+\renewcommand*{\acronymfont}[1]{\textmd{\scshape #1}}
+
+ % Change the "see" items so that they use \acronymfont:
+\renewcommand*{\glsseeitemformat}[1]{\acronymfont{\glsentrytext{#1}}}
+
+
+\newacronym[description={Statistical pattern recognition
+technique~\protect\cite{svm}}, % acronym's description
+]{svm}{svm}{support vector machine}
+
+\newacronym[description={Statistical pattern recognition technique
+using the ``kernel trick''},% acronym's description
+see={[see also]{svm}},
+]{ksvm}{ksvm}{kernel
+support vector machine}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots\ (but beware, converting the initial letter to
+upper case for a small caps acronym is sometimes considered
+poor style).
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleFnAcrDesc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleNtn.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+ % If you want to add babel to this document, you may have to
+ % replace the : character in the labels if you are using a
+ % language setting (e.g. french) that makes : active.
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage{html}
+\usepackage[toc,xindy]{glossaries}
+
+ % Define a new glossary type called notation
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+
+\makeglossaries
+
+ % Notation definitions
+
+\newglossaryentry{not:set}{type=notation, % glossary type
+name={$\mathcal{S}$},
+description={A set},
+sort={S}}
+
+\newglossaryentry{not:U}{type=notation,
+name={$\mathcal{U}$},
+description={The universal set},
+sort=U}
+
+\newglossaryentry{not:card}{type=notation,
+name={$|\mathcal{S}|$},
+description={cardinality of $\mathcal{S}$},
+sort=cardinality}
+
+\newglossaryentry{not:fact}{type=notation,
+name={$!$},
+description={factorial},
+sort=factorial}
+
+ % Main glossary definitions
+
+\newglossaryentry{gls:set}{name=set,
+description={A collection of distinct objects}}
+
+\newglossaryentry{gls:card}{name=cardinality,
+description={The number of elements in the specified set}}
+
+\begin{document}
+\title{Sample Document using the glossaries Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}
+\maketitle
+
+\begin{abstract}
+ %stop hyperref complaining about duplicate page identifiers:
+\pagenumbering{Alph}
+This is a sample document illustrating the use of the
+\textsf{glossaries} package. In this example, a new glossary type
+called \texttt{notation} is defined, so that the document can have a
+separate glossary of terms and index of notation. The index of notation
+doesn't have associated numbers.
+\end{abstract}
+
+
+\pagenumbering{roman}
+\tableofcontents
+
+\printglossaries
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+\Glspl{gls:set} are denoted by a calligraphic font
+e.g.\ \gls{not:set}.
+
+Let \gls[format=hyperit]{not:U} denote the universal set.
+
+The \gls{gls:card} of a set $\mathcal{S}$ is denoted
+\gls{not:card}.
+
+\chapter{Another Chapter}
+
+Another mention of the universal set \gls{not:U}.
+
+The factorial symbol: \gls{not:fact}.
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleNtn.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplePeople.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you are using arara, you need the following directives:
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,style=listgroup]{glossaries}
+
+\makeglossaries
+
+\newcommand{\sortname}[2]{#2, #1}
+\newcommand{\textname}[2]{#1 #2}
+
+ % Syntax: \name{first name}{surname}
+ \let\name\textname
+
+\renewcommand{\glsprestandardsort}[3]{%
+ \let\name\sortname
+ \edef#1{\expandafter\expandonce\expandafter{#1}}%
+ \let\name\textname
+ \glsdosanitizesort
+}
+
+\newglossaryentry{joebloggs}{name={\name{Joe}{Bloggs}},description={\nopostdesc}}
+
+\newglossaryentry{johnsmith}{name={\name{John}{Smith}},description={\nopostdesc}}
+
+\newglossaryentry{zoeadams}{name={\name{Zo\'e}{Adams}},description={\nopostdesc}}
+
+\newglossaryentry{maryadams}{name={\name{Mary}{Adams}},description={\nopostdesc}}
+
+\begin{document}
+\tableofcontents
+
+\chapter{\glsentrytext{joebloggs}}
+
+\gls{joebloggs} was a fairly ordinary person.
+
+\chapter{\glsentrytext{johnsmith}}
+
+\gls{johnsmith} was great friends with \gls{joebloggs}.
+
+\chapter{\glsentrytext{maryadams}}
+
+\gls{maryadams} worked with \gls{johnsmith} but never met
+\gls{joebloggs}.
+
+\chapter{\glsentrytext{zoeadams}}
+
+\gls{zoeadams} was \gls{maryadams}['s] sister.
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplePeople.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleSec.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[style=altlist,toc,counter=section]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{ident}{name=identity matrix,
+description=diagonal matrix with 1s along the leading diagonal,
+plural=identity matrices}
+
+\newglossaryentry{diag}{name=diagonal matrix,
+description=matrix whose only non-zero entries are along
+the leading diagonal,
+plural=diagonal matrices}
+
+\newglossaryentry{sing}{name=singular matrix,
+description=matrix with zero determinant,
+plural=singular matrices}
+
+\begin{document}
+
+\pagenumbering{roman}
+\tableofcontents
+
+\printglossaries
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+This is a sample document illustrating the use of the
+\textsf{glossaries} package.
+
+\chapter{Diagonal matrices}
+
+A \gls[format=hyperit]{diag} is a matrix where all elements not on the
+leading diagonal are zero. This is the
+primary definition, so an italic font is used for the page number.
+
+\newpage
+\section{Identity matrix}
+The \gls[format=hyperit]{ident} is a \gls{diag} whose leading
+diagonal elements are all equal to 1.
+
+Here is another entry for a \gls{diag}. And this is the
+plural: \glspl{ident}.
+
+This adds an entry into the glossary with a bold number, but
+it doesn't create a hyperlink: \gls*[format=hyperbf]{ident}.
+
+\chapter{Singular Matrices}
+
+A \gls{sing} is a matrix with zero determinant.
+\Glspl{sing} are non-invertible. Possessive:
+a \gls{sing}['s] dimensions are not necessarily equal.
+
+Another \gls{ident} entry.
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleSec.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleSort.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+ % If you want to add babel to this document, you may have to
+ % replace the : character in the labels if you are using a
+ % language setting (e.g. french) that makes : active.
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[toc,acronym]{glossaries}
+
+ % Define a new glossary type called notation
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+
+\makeglossaries
+
+\newcounter{sortcount}
+
+\renewcommand{\glsprestandardsort}[3]{%
+ \ifdefstring{#2}{notation}%
+ {%
+ \stepcounter{sortcount}%
+ \edef#1{\glssortnumberfmt{\arabic{sortcount}}}%
+ }%
+ {%
+ \glsdosanitizesort
+ }%
+}
+
+ % Notation definitions
+
+\newglossaryentry{not:set}{type=notation, % glossary type
+name={$\mathcal{S}$},
+text={\mathcal{S}},
+description={A set}}
+
+\newglossaryentry{not:emptyset}{type=notation,
+name={$\emptyset$},
+text={\emptyset},
+description={The empty set}}
+
+\newglossaryentry{not:card}{type=notation,
+name={$|\mathcal{S}|$},
+text={|\mathcal{S}|},
+description={cardinality of $\mathcal{S}$}}
+
+ % Main glossary definitions
+
+\newglossaryentry{gls:set}{name=set,
+description={A collection of distinct objects}}
+
+\newglossaryentry{gls:card}{name=cardinality,
+description={The number of elements in the specified set}}
+
+ % Acronym definitions
+
+\newacronym{zfc}{ZFC}{Zermelo-Fraenkel set theory}
+
+\newacronym{ad}{AD}{axiom of determinacy}
+
+\newacronym{nf}{NF}{new foundations}
+
+\begin{document}
+\title{Sample Document using the glossaries Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}
+\maketitle
+
+\begin{abstract}
+ %stop hyperref complaining about duplicate page identifiers:
+\pagenumbering{Alph}
+This is a sample document illustrating the use of the
+\textsf{glossaries} package. In this example, a new glossary type
+called \texttt{notation} is defined, so that the document can have a
+separate glossary of terms, list of acronyms and index of notation.
+\end{abstract}
+
+
+\pagenumbering{roman}
+\tableofcontents
+
+\printglossaries
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+\Glspl{gls:set} are denoted by a calligraphic font
+e.g.\ $\gls{not:set}$.
+
+The \gls{gls:card} of a set $\mathcal{S}$ is denoted
+$\gls{not:card}$. The empty set is denoted
+$\gls{not:emptyset}$.
+
+Here are some acronyms: \gls{nf}, \gls{zfc} and \gls{ad}.
+
+\chapter{Another Chapter}
+
+Another mention of the empty set $\gls{not:emptyset}$.
+
+Here are the acronyms again: \gls{nf}, \gls{zfc} and \gls{ad}.
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleSort.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampletree.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=alttreehypergroup,nolong,nosuper]{glossaries}
+
+ % The alttree type of glossary styles need to know the
+ % widest entry name for each level
+\glssetwidest{Roman letters} % level 0 widest name
+\glssetwidest[1]{Sigma} % level 1 widest name
+
+\makeglossaries
+
+\newglossaryentry{greekletter}{name={Greek letters},
+text={Greek letter},
+description={\nopostdesc}}
+
+\newglossaryentry{sigma}{name={Sigma},
+text={\ensuremath{\Sigma}},
+first={\ensuremath{\Sigma} (uppercase sigma)},
+symbol={\ensuremath{\Sigma}},
+description={Used to indicate summation},
+parent=greekletter}
+
+\newglossaryentry{pi}{name={pi},
+text={\ensuremath{\pi}},
+first={\ensuremath{\pi} (lowercase pi)},
+symbol={\ensuremath{\pi}},
+description={Transcendental number},
+parent=greekletter}
+
+\newglossaryentry{romanletter}{name={Roman letters},
+text={Roman letter},
+description={\nopostdesc}}
+
+\newglossaryentry{e}{name={e},
+description={Unique real number such that the derivative of
+the function $e^x$ is the function itself},
+parent=romanletter}
+
+\newglossaryentry{C}{name={C},
+description={Euler's constant},
+parent=romanletter}
+
+\begin{document}
+This is a sample document illustrating hierarchical glossary
+entries.
+
+\chapter{Greek Letters Used in Mathematics}
+
+Some information about \glspl{greekletter}.
+The letter \gls{pi} is used to represent the ratio of a circle's
+circumference to its diameter.
+The letter \gls{sigma} is used to represent summation.
+
+\chapter{Roman Letters Used in Mathematics}
+
+Some information about \glspl{romanletter}.
+The letter \gls{e} is the unique real number such that
+the derivative of the function $e^x$ is the function itself.
+The letter \gls{C} represents Euler's constant.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampletree.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*sampleutf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[xindy,nonumberlist,style=listgroup]{glossaries}
+
+\makeglossaries
+
+ % Note that because the é is the first letter of the
+ % name, it needs to be grouped or it will cause a
+ % problem for \makefirstuc due to expansion issues.
+\newglossaryentry{elite}{name={{é}lite},
+description={select group or class}}
+
+\newglossaryentry{elephant}{name=elephant,
+description={large animal with trunk and tusks}}
+
+\newglossaryentry{elk}{name=elk,
+description=large deer}
+
+\newglossaryentry{mannerly}{name=mannerly,
+description=polite}
+
+ % The œ is not the first letter, so it doesn't need to
+ % be grouped.
+\newglossaryentry{manoeuvre}{name={manœuvre},
+description=planned and controlled movement}
+
+\newglossaryentry{manor}{name=manor,
+description=large landed estate or its house}
+
+\newglossaryentry{odometer}{name=odometer,
+description=instrument for measuring distance travelled by
+a wheeled vehicle}
+
+\newglossaryentry{oesophagus}{name={{œ}sophagus},
+plural={{œ}sophagi},
+description={canal from mouth to stomach}}
+
+\newglossaryentry{ogre}{name=ogre,
+description=man-eating giant}
+
+\begin{document}
+\glsaddall
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</sampleutf8.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is public domain.
+%
+% This is a sample document illustrating how to use the
+% glossaries package with xindy. To create the document:
+%
+% latex samplexdy
+% makeglossaries samplexdy
+% latex samplexdy
+%
+% If you don't have Perl installed, then use one of the
+% following instead of makeglossaries:
+%
+% If you want to have a separate "Mc" letter group do:
+%
+% xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% Otherwise do:
+%
+% xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% If you want to use arara, you need the following directives:
+% arara: pdflatex: { synctex: on }
+% arara: makeglossaries
+% arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[notext,notextcomp]{stix}
+
+\usepackage[colorlinks,plainpages]{hyperref}
+\usepackage[xindy,style=altlistgroup]{glossaries}
+
+% Define a new command to do bold italic:
+
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+
+% Need to add this to the list of attributes in order
+% to use it with xindy:
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyAttribute{hyperbfit}
+
+% Redefine the page numbers to a custom format (requires stix
+% package for the dice commands):
+
+% \tallynum{n} displays a die or dice where the dots add up to n
+\newrobustcmd{\tallynum}[1]{%
+ \ifnum\number#1<7
+ $\csname dice\romannumeral#1\endcsname$%
+ \else
+ $\dicevi$%
+ \expandafter\tallynum\expandafter{\numexpr#1-6}%
+ \fi
+}
+
+% \tally{counter} expands to \tallynum{n} where n is the counter
+% value. In order to work with glossaries and xindy this requires
+% a very specific format. (See the glossaries user manual for more
+% details.)
+
+\newcommand{\tally}[1]{\tallynum{\arabic{page}}}
+
+% Now redefine \thepage
+% (\texorpdfstring is used in case the page number ends up in a PDF
+% bookmark, although this is unlikely)
+\renewcommand*{\thepage}{\texorpdfstring{\tally{page}}{\arabic{page}}}
+
+% Need to add this to the list of location styles.
+% This requires knowing how \thepage expands when written to a file.
+% You can check by inspecting the ':locref' attributes in the .glo
+% file. In this case, \thepage expands to \tallynum {n}
+% (the space is significant) where n is an arabic number.
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyLocation{tally}{% tally location format
+ :sep "\string\tallynum\space\glsopenbrace" % -> \tallynum {
+ "arabic-numbers" % -> arabic number (0, 1, 2, etc)
+ :sep "\glsclosebrace" % -> }
+}
+
+% If the definition of \tally changes so that it expands to
+% something slightly different then the above will have to be
+% changed accordingly.
+
+% (Need to redefine \glsXpageXhyperbfit and
+% \glsXpageXglsnumberformat after \makeglossaries to get the
+% hyperlinks working correctly.)
+
+% To have Mc as a separate group uncomment the following three
+% lines:
+
+%\setStyleFile{samplexdy-mc} % note no extension
+%\noist
+%\GlsSetXdyLanguage{}
+
+% The above three lines specify to use samplexdy-mc.xdy (supplied
+% with this file) and don't overwrite it. The language is
+% unset using \GlsSetXdyLanguage{} as all the language
+% dependent information is contained in samplexdy-mc.xdy
+% Note that using \noist means that commands like
+% \GlsAddXdyAttribute and \GlsAddXdyLocation will no longer have
+% an effect.
+
+% Write the style file (if \noist isn't used)
+% and activate glossary entries
+
+\makeglossaries
+
+% Each page location will be specified in the form:
+%
+% "\glsXpageXglsnumberformat{}{\tallynum {" number "}}"
+% or
+% "\glsXpageXhyperbfit{}{\tallynum {" number "}}"
+%
+% Knowing this, we can redefine \glsXpageXglsnumberformat
+% and \glsXpageXhyperbfit to grab the number part to work out the
+% location's numeric value. If the definition of \tally changes
+% so that it expands to something slightly different then this
+% code will no longer work.
+%
+% Redefine to allow hyperlinks:
+
+\renewcommand{\glsXpageXglsnumberformat}[2]{%
+ % remember that #2 is in the form \tallynum {n}
+ % so this does \linkpagenumber\tallynum{n}
+ \linkpagenumber#2%
+}
+
+\renewcommand{\glsXpageXhyperbfit}[2]{%
+ \textbf{\em\linkpagenumber#2}%
+}
+
+% Syntax: \linkpagenumber\tallynum{page number}
+% This creates hyperlink to the given page.
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+
+% Define glossary entries
+% \glshyperlink is used instead of \gls to prevent the glossary
+% page numbers also appear in the locations, however I need
+% to ensure that the referenced entries are added to the
+% glossary via commands that use \glslink, \glsadd or \glssee
+
+\newglossaryentry{mcadam}{name={McAdam, John Loudon},
+first={John Loudon McAdam},text={McAdam},
+description={Scottish engineer}}
+
+\newglossaryentry{maclaurin}{name={Maclaurin, Colin},
+first={Colin Maclaurin},text={Maclaurin},
+description={Scottish mathematician best known for the
+\gls{maclaurinseries}}}
+
+\newglossaryentry{maclaurinseries}{name={Maclaurin series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylorstheorem}{name={Taylor's theorem},
+description={Theorem expressing a function $f(x)$ as the sum of
+a polynomial and a remainder:
+\[f(x) = f(a)+f'(a)(x-a)+f''(a)(x-a^2)/2!+\cdots+R_n\]
+If $n\to\infty$ the expansion is a \glshyperlink{taylorseries}
+and if $a=0$, the series is called a
+\gls{maclaurinseries}}}
+
+\newglossaryentry{taylorseries}{name={Taylor series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylor}{name={Taylor, Brook},
+first={Brook Taylor},text={Taylor},
+description={English mathematician}}
+
+\newglossaryentry{mcnemar}{name={McNemar, Quinn},
+first={Quinn McNemar},text={McNemar},
+description={Mathematician who introduced
+\gls{mcnemarstest}. This entry has the number list
+suppressed},nonumberlist}
+
+\newglossaryentry{mcnemarstest}{name={McNemar's test},
+description={A nonparametric test introduced by
+\gls{mcnemar} in 1947}}
+
+\newglossaryentry{mach}{name={Mach, Ernst},
+first={Ernst Mach},text={Mach},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach, Ernst},
+description={Czech/Austrian physicist and philosopher}}
+
+\newglossaryentry{machnumber}{name={Mach number},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach number},
+description={Ratio of the speed of a body in a fluid to the
+speed of sound in that fluid named after \gls{mach}}}
+
+\newglossaryentry{malthus}{name={Malthus, Thomas Robert},
+first={Thomas Robert Malthus},text={Malthus},
+description={English mathematician, sociologist and classicist}}
+
+\newglossaryentry{ampereandre}{name={Ampère, André-Marie},
+first={André-Marie Ampère},text={Ampère},
+description={French mathematician and physicist}}
+
+\newglossaryentry{ampere}{name={ampere},
+description={SI unit of electric current named after
+\gls{ampereandre}}}
+
+\newglossaryentry{archimedes}{name={Archimedes of Syracuse},
+first={Archimedes of Syracuse},text={Archimedes},
+description={Greek mathematician}}
+
+\newglossaryentry{archimedesprinciple}{name={Archimedes' principle},
+description={Principle that if a body is submerged in a fluid
+it experiences upthrust equal to the weight of the displaced
+fluid. Named after \gls{archimedes}}}
+
+\newglossaryentry{galton}{name={Galton, Sir Francis},
+first={Sir Francis Galton},text={Galton},
+description={English anthropologist}}
+
+\newglossaryentry{gauss}{name={Gauss, Karl Friedrich},
+first={Karl Friedrich Gauss},text={Gauss},
+description={German mathematician}}
+
+\newglossaryentry{gaussianint}{name={Gaussian integer},
+description={Complex number where both real and imaginary
+parts are integers}}
+
+\newglossaryentry{gaussianfn}{name={Gaussian function},
+ description={A function of the form:
+ \[f(x) = a \exp\left(-\frac{(x-b)^2}{2c^2}\right)\]
+ for some constants $a$, $b$ and $c$}}
+
+\newglossaryentry{peano}{name={Peano, Giuseppe},
+first={Giuseppe Peano},text={Peano},
+description={Italian mathematician}}
+
+\newglossaryentry{peanoscurve}{name={Peano's curve},
+description={A space-filling curve discovered by
+\gls{peano}}}
+
+\newglossaryentry{pearson}{name={Pearson, Karl},
+first={Karl Pearson},text={Pearson},
+description={English mathematician}}
+
+\newglossaryentry{pearspmcc}{name={Pearson's product moment
+correlation coefficient},description={Product moment correlation
+coefficient named after \gls{pearson}}}
+
+\begin{document}
+\title{Sample Document Using the Glossaries Package With Xindy}
+\author{Nicola Talbot}
+\maketitle
+
+\section{\glsentryfirst{gauss}}
+
+This is a section on \gls[format=(]{gauss}. This section spans
+several pages.
+
+\rule{1pt}{0.6\textheight}
+
+This paragraph has been shoved to the bottom of the page using a rule.
+This paragraph spans a page break for testing purposes to ensure the
+glossary entry in this paragraph has the correct location. Here's
+the glossary entry: \gls{gaussianfn}. Check that the location is
+correct.
+
+This page talks about \glspl[format=hyperbfit]{gaussianint}. Since
+it's the principle definition, the user-defined hyperbfit format is
+used.
+
+\newpage
+
+The section on \gls[format=)]{gauss} ends here.
+
+\section{Series Expansions}
+
+This section is about series expansions. It mentions
+\gls{maclaurin} and \gls{taylor}. It also discusses
+\gls{taylorstheorem} which is related to the \gls{taylorseries}.
+The \gls{maclaurinseries} is a special case of the
+\gls{taylorseries}.
+
+\section{\glsentryname{archimedesprinciple}}
+
+This section discusses \gls{archimedesprinciple} which was
+introduced by \gls{archimedes}.
+
+\section{Another section}
+
+This section covers \gls{mach} who introduced the \gls{machnumber}.
+It also mentions \gls{ampereandre} after whom the
+SI unit \gls{ampere} is named. It then discusses \gls{galton}
+and \gls{malthus}. Finally it mentions \gls{mcadam}.
+
+\newpage
+This page discusses \gls{mcnemar} who introduced
+\gls{mcnemarstest} and \gls{peano} who discovered \gls{peanoscurve}.
+
+\printglossaries
+\end{document}
+%COMMENT
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy2.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ %
+ % This is a sample document illustrating how to use the
+ % glossaries package with xindy. To create the document:
+ %
+ % pdflatex samplexdy2
+ % makeglossaries samplexdy2
+ % pdflatex samplexdy2
+ %
+ % This sample file won't work with makeindex
+ %
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage[xindy,counter=section]{glossaries}
+
+ % Set up somewhat eccentric section numbering system:
+
+\renewcommand*{\thesection}{[\thechapter]\arabic{section}}
+
+\renewcommand*{\theHsection}{\thepart.\thesection}
+\renewcommand*{\thepart}{\Roman{part}}
+
+\GlsAddXdyLocation["roman-numbers-uppercase"]{section}{:sep "["
+ "arabic-numbers" :sep "]" "arabic-numbers"
+}
+
+ % If part is 0, then \thepart will be empty, so add an extra
+ % case to catch this:
+
+\GlsAddXdyLocation{zero.section}{:sep "["
+ "arabic-numbers" :sep "]" "arabic-numbers"
+}
+
+ % (Note that the above will stop xindy giving a warning, but the
+ % location hyper links will be invalid if no \part is used.)
+
+\makeglossaries
+
+\newglossaryentry{sample}{name=sample,description={an example}}
+\newglossaryentry{sample2}{name=sample2,description={another example}}
+
+\begin{document}
+This is a sample document illustrating Xindy specific commands in
+the glossaries package.
+
+\part{First Part}
+
+\chapter{Sample Chapter}
+This example document has an eccentric section numbering system
+where the section number is prefixed by the chapter number in square
+brackets.
+
+\section{First Section}
+
+\gls{sample}. \gls{sample2}.
+
+\section{Second Section}
+
+\gls{sample2}.
+
+\section{Third Section}
+
+\gls{sample}. \gls{sample2}.
+
+\printglossaries
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy2.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy3.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is public domain.
+%
+% This is a sample document illustrating how to use the
+% glossaries package with xindy. To create the document:
+%
+% latex samplexdy
+% makeglossaries samplexdy
+% latex samplexdy
+%
+% If you don't have Perl installed, then use one of the
+% following instead of makeglossaries:
+%
+% If you want to have a separate "Mc" letter group do:
+%
+% xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% Otherwise do:
+%
+% xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% If you want to use arara, you need the following directives:
+% arara: pdflatex: { synctex: on }
+% arara: makeglossaries
+% arara: pdflatex: { synctex: on }
+ \documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{fmtcount}
+
+\usepackage[colorlinks,plainpages]{hyperref}
+\usepackage[xindy,style=altlistgroup]{glossaries}
+
+% Define a new command to do bold italic:
+
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+
+% Need to add this to the list of attributes in order
+% to use it with xindy:
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyAttribute{hyperbfit}
+
+% Redefine the page numbers so that they appear as a word:
+
+\renewcommand*{\thepage}{\texorpdfstring{\customfmt{page}}{\arabic{page}}}
+
+\newcommand{\customfmt}[1]{\customfmtnum{\arabic{#1}}}
+\newrobustcmd{\customfmtnum}[1]{\Numberstringnum{#1}}
+
+% Need to add this to the list of location styles.
+% \customfmt{page} gets expanded to
+% \custommfmtnum {<n>} (where <n> is the page number)
+% so need to define the location in that format:
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyLocation{customfmt}{:sep "\string\customfmtnum\space\glsopenbrace"
+ "arabic-numbers" :sep "\glsclosebrace"}
+
+% (Need to redefine \glsXpageXhyperbfit and
+% \glsXpageXglsnumberformat after \makeglossaries to get the
+% hyperlinks working correctly.)
+
+% To have Mc as a separate group uncomment the following three
+% lines:
+
+%\setStyleFile{samplexdy-mc} % note no extension
+%\noist
+%\GlsSetXdyLanguage{}
+
+% The above three lines specify to use samplexdy-mc.xdy (supplied
+% with this file) and don't overwrite it. The language is
+% unset using \GlsSetXdyLanguage{} as all the language
+% dependent information is contained in samplexdy-mc.xdy
+% Note that using \noist means that commands like
+% \GlsAddXdyAttribute and \GlsAddXdyLocation will no longer have
+% an effect.
+
+% Write the style file (if \noist isn't used)
+% and activate glossary entries
+
+\makeglossaries
+
+% Each page location will be specified in the form:
+%
+% "\glsXpageXglsnumberformat{}{\customfmtnum "\marg{n}"}"
+% or
+% "\glsXpageXhyperbfit{}{\customfmtnum "\marg{n}"}"
+%
+% Redefine to allow hyperlinks:
+
+\renewcommand{\glsXpageXglsnumberformat}[2]{%
+ \linkpagenumber#2%
+}
+
+\renewcommand{\glsXpageXhyperbfit}[2]{%
+ \textbf{\em\linkpagenumber#2}%
+}
+
+% The arguments of \linkpagenumber will be
+% #1 -> \customfmtnum
+% #2 -> n
+% This means that the page number (n) can be used to
+% form the hyperlink target.
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+
+% Define glossary entries
+% \glshyperlink is used instead of \gls to prevent the glossary
+% page numbers also appear in the locations, however I need
+% to ensure that the referenced entries are added to the
+% glossary via commands that use \glslink, \glsadd or \glssee
+
+\newglossaryentry{mcadam}{name={McAdam, John Loudon},
+first={John Loudon McAdam},text={McAdam},
+description={Scottish engineer}}
+
+\newglossaryentry{maclaurin}{name={Maclaurin, Colin},
+first={Colin Maclaurin},text={Maclaurin},
+description={Scottish mathematician best known for the
+\gls{maclaurinseries}}}
+
+\newglossaryentry{maclaurinseries}{name={Maclaurin series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylorstheorem}{name={Taylor's theorem},
+description={Theorem expressing a function $f(x)$ as the sum of
+a polynomial and a remainder:
+\[f(x) = f(a)+f'(a)(x-a)+f''(a)(x-a^2)/2!+\cdots+R_n\]
+If $n\to\infty$ the expansion is a \glshyperlink{taylorseries}
+and if $a=0$, the series is called a
+\gls{maclaurinseries}}}
+
+\newglossaryentry{taylorseries}{name={Taylor series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylor}{name={Taylor, Brook},
+first={Brook Taylor},text={Taylor},
+description={English mathematician}}
+
+\newglossaryentry{mcnemar}{name={McNemar, Quinn},
+first={Quinn McNemar},text={McNemar},
+description={Mathematician who introduced
+\gls{mcnemarstest}. This entry has the number list
+suppressed},nonumberlist}
+
+\newglossaryentry{mcnemarstest}{name={McNemar's test},
+description={A nonparametric test introduced by
+\gls{mcnemar} in 1947}}
+
+\newglossaryentry{mach}{name={Mach, Ernst},
+first={Ernst Mach},text={Mach},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach, Ernst},
+description={Czech/Austrian physicist and philosopher}}
+
+\newglossaryentry{machnumber}{name={Mach number},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach number},
+description={Ratio of the speed of a body in a fluid to the
+speed of sound in that fluid named after \gls{mach}}}
+
+\newglossaryentry{malthus}{name={Malthus, Thomas Robert},
+first={Thomas Robert Malthus},text={Malthus},
+description={English mathematician, sociologist and classicist}}
+
+\newglossaryentry{ampereandre}{name={Ampère, André-Marie},
+first={André-Marie Ampère},text={Ampère},
+description={French mathematician and physicist}}
+
+\newglossaryentry{ampere}{name={ampere},
+description={SI unit of electric current named after
+\gls{ampereandre}}}
+
+\newglossaryentry{archimedes}{name={Archimedes of Syracuse},
+first={Archimedes of Syracuse},text={Archimedes},
+description={Greek mathematician}}
+
+\newglossaryentry{archimedesprinciple}{name={Archimedes' principle},
+description={Principle that if a body is submerged in a fluid
+it experiences upthrust equal to the weight of the displaced
+fluid. Named after \gls{archimedes}}}
+
+\newglossaryentry{galton}{name={Galton, Sir Francis},
+first={Sir Francis Galton},text={Galton},
+description={English anthropologist}}
+
+\newglossaryentry{gauss}{name={Gauss, Karl Friedrich},
+first={Karl Friedrich Gauss},text={Gauss},
+description={German mathematician}}
+
+\newglossaryentry{gaussianint}{name={Gaussian integer},
+description={Complex number where both real and imaginary
+parts are integers}}
+
+\newglossaryentry{gaussianfn}{name={Gaussian function},
+ description={A function of the form:
+ \[f(x) = a \exp\left(-\frac{(x-b)^2}{2c^2}\right)\]
+ for some constants $a$, $b$ and $c$}}
+
+\newglossaryentry{peano}{name={Peano, Giuseppe},
+first={Giuseppe Peano},text={Peano},
+description={Italian mathematician}}
+
+\newglossaryentry{peanoscurve}{name={Peano's curve},
+description={A space-filling curve discovered by
+\gls{peano}}}
+
+\newglossaryentry{pearson}{name={Pearson, Karl},
+first={Karl Pearson},text={Pearson},
+description={English mathematician}}
+
+\newglossaryentry{pearspmcc}{name={Pearson's product moment
+correlation coefficient},description={Product moment correlation
+coefficient named after \gls{pearson}}}
+
+\begin{document}
+\title{Sample Document Using the Glossaries Package With Xindy}
+\author{Nicola Talbot}
+\maketitle
+
+\section{\glsentryfirst{gauss}}
+
+This is a section on
+\gls[format=(]{gauss}. This section spans
+several pages.
+
+\rule{1pt}{0.6\textheight}
+
+This paragraph has been shoved to the bottom of the page using a rule.
+This paragraph spans a page break for testing purposes to ensure the
+glossary entry in this paragraph has the correct location. Here's
+the glossary entry: \gls{gaussianfn}.
+
+This page talks about \glspl[format=hyperbfit]{gaussianint}. Since
+it's the principle definition, the user-defined hyperbfit format is
+used.
+
+\newpage
+
+The section on \gls[format=)]{gauss} ends here.
+
+\section{Series Expansions}
+
+This section is about series expansions. It mentions
+\gls{maclaurin} and \gls{taylor}. It also discusses
+\gls{taylorstheorem} which is related to the \gls{taylorseries}.
+The \gls{maclaurinseries} is a special case of the
+\gls{taylorseries}.
+
+\section{\glsentryname{archimedesprinciple}}
+
+This section discusses \gls{archimedesprinciple} which was
+introduced by \gls{archimedes}.
+
+\section{Another section}
+
+This section covers \gls{mach} who introduced the \gls{machnumber}.
+It also mentions \gls{ampereandre} after whom the
+SI unit \gls{ampere} is named. It then discusses \gls{galton}
+and \gls{malthus}. Finally it mentions \gls{mcadam}.
+
+\newpage
+This page discusses \gls{mcnemar} who introduced
+\gls{mcnemarstest} and \gls{peano} who discovered \gls{peanoscurve}.
+
+\printglossaries
+\end{document}
+%COMMENT
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy3.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*mwe-acr-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\setacronymstyle{short-long-desc}
+
+\newacronym[description={a device that emits a narrow beam of
+light}]{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\begin{document}
+
+First use: \gls{laser}.
+
+Next use: \gls{laser} or \glspl{laser}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</mwe-acr-desc.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*mwe-acr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\setacronymstyle{long-short}
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\begin{document}
+
+First use: \gls{laser}.
+
+Next use: \gls{laser} or \glspl{laser}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</mwe-acr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*mwe-gls.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{apple}{name={apple},description={a fruit}}
+
+\begin{document}
+
+\Gls{apple} or \gls{apple} or \glspl{apple}.
+
+\printglossaries
+
+\end{document}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</mwe-gls.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy-mc.xdy>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+;; xindy style file for samplexdy.tex that has Mc letter group
+
+(define-letter-group "A" :prefixes ("€"))
+(define-letter-group "B" :after "A" :prefixes ("„"))
+(define-letter-group "C" :after "B" :prefixes ("†"))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes ("—"))
+(define-letter-group "F" :after "E" :prefixes ("œ"))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes ("¤"))
+(define-letter-group "I" :after "H" :prefixes ("¨"))
+(define-letter-group "J" :after "I" :prefixes ("¬"))
+(define-letter-group "K" :after "J" :prefixes ("®"))
+(define-letter-group "L" :after "K" :prefixes ("´"))
+(define-letter-group "Mc" :after "L" :prefixes ("Ƞ"))
+(define-letter-group "M" :after "Mc" :prefixes ("»"))
+(define-letter-group "N" :after "M" :prefixes ("¼"))
+(define-letter-group "O" :after "N" :prefixes ("Ã"))
+(define-letter-group "P" :after "O" :prefixes ("È"))
+(define-letter-group "Q" :after "P" :prefixes ("Ê"))
+(define-letter-group "R" :after "Q" :prefixes ("Ë"))
+(define-letter-group "S" :after "R" :prefixes ("Ð"))
+(define-letter-group "T" :after "S" :prefixes ("Ú"))
+(define-letter-group "U" :after "T" :prefixes ("à"))
+(define-letter-group "V" :after "U" :prefixes ("å"))
+(define-letter-group "W" :after "V" :prefixes ("æ"))
+(define-letter-group "X" :after "W" :prefixes ("ë"))
+(define-letter-group "Y" :after "X" :prefixes ("í"))
+(define-letter-group "Ȝ" :after "Y" :prefixes ("ï"))
+(define-letter-group "Z" :after "Ȝ" :prefixes ("ð"))
+(define-letter-group "Þ" :after "Z" :prefixes ("ö"))
+(define-letter-group "Æ¿" :after "Þ" :prefixes ("÷"))
+
+(define-rule-set "en-alphabetize"
+
+ :rules (("à" "€" :string)
+ ("À" "€" :string)
+ ("Æ" "€—" :string)
+ ("æ" "€—" :string)
+ ("Ç" "†" :string)
+ ("ç" "†" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("É" "—" :string)
+ ("Ê" "—" :string)
+ ("È" "—" :string)
+ ("Ë" "—" :string)
+ ("è" "—" :string)
+ ("ë" "—" :string)
+ ("ê" "—" :string)
+ ("é" "—" :string)
+ ("Ï" "¨" :string)
+ ("ï" "¨" :string)
+ ("Ñ" "¼" :string)
+ ("ñ" "¼" :string)
+ ("Ö" "Ã" :string)
+ ("Ô" "Ã" :string)
+ ("ô" "Ã" :string)
+ ("ö" "Ã" :string)
+ ("œ" "×" :string)
+ ("Œ" "×" :string)
+ ("ȝ" "ï" :string)
+ ("Ȝ" "ï" :string)
+ ("þ" "ö" :string)
+ ("Þ" "ö" :string)
+ ("Ç·" "÷" :string)
+ ("Æ¿" "÷" :string)
+ ("a" "€" :string)
+ ("A" "€" :string)
+ ("b" "„" :string)
+ ("B" "„" :string)
+ ("C" "†" :string)
+ ("c" "†" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("E" "—" :string)
+ ("e" "—" :string)
+ ("F" "œ" :string)
+ ("f" "œ" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("H" "¤" :string)
+ ("h" "¤" :string)
+ ("I" "¨" :string)
+ ("i" "¨" :string)
+ ("J" "¬" :string)
+ ("j" "¬" :string)
+ ("K" "®" :string)
+ ("k" "®" :string)
+ ("L" "´" :string)
+ ("l" "´" :string)
+ ("Mc" "Ƞ" :string)
+ ("Mac" "Ƞ" :string)
+ ("M" "»" :string)
+ ("m" "»" :string)
+ ("N" "¼" :string)
+ ("n" "¼" :string)
+ ("O" "Ã" :string)
+ ("o" "Ã" :string)
+ ("P" "È" :string)
+ ("p" "È" :string)
+ ("q" "Ê" :string)
+ ("Q" "Ê" :string)
+ ("r" "Ë" :string)
+ ("R" "Ë" :string)
+ ("S" "Ð" :string)
+ ("s" "Ð" :string)
+ ("T" "Ú" :string)
+ ("t" "Ú" :string)
+ ("u" "à" :string)
+ ("U" "à" :string)
+ ("v" "å" :string)
+ ("V" "å" :string)
+ ("w" "æ" :string)
+ ("W" "æ" :string)
+ ("X" "ë" :string)
+ ("x" "ë" :string)
+ ("Y" "í" :string)
+ ("y" "í" :string)
+ ("z" "ð" :string)
+ ("Z" "ð" :string)
+ ))
+
+(define-rule-set "en-resolve-diacritics"
+
+ :rules (("ȝ" "¢" :string)
+ ("þ" "¢" :string)
+ ("Ç·" "¢" :string)
+ ("Þ" "¢" :string)
+ ("Ȝ" "¢" :string)
+ ("Æ¿" "¢" :string)
+ ("Ö" "£" :string)
+ ("Ñ" "£" :string)
+ ("ð" "£" :string)
+ ("Ç" "£" :string)
+ ("É" "£" :string)
+ ("Ï" "£" :string)
+ ("ï" "£" :string)
+ ("ö" "£" :string)
+ ("ñ" "£" :string)
+ ("ç" "£" :string)
+ ("à" "£" :string)
+ ("À" "£" :string)
+ ("é" "£" :string)
+ ("Ð" "£" :string)
+ ("Ô" "¤" :string)
+ ("ô" "¤" :string)
+ ("È" "¤" :string)
+ ("è" "¤" :string)
+ ("Ë" "¥" :string)
+ ("ë" "¥" :string)
+ ("Ê" "¦" :string)
+ ("ê" "¦" :string)
+ ("œ" "ÿ" :string)
+ ("Æ" "ÿ" :string)
+ ("Œ" "ÿ" :string)
+ ("æ" "ÿ" :string)
+ ("S" "¢" :string)
+ ("K" "¢" :string)
+ ("d" "¢" :string)
+ ("Y" "¢" :string)
+ ("E" "¢" :string)
+ ("y" "¢" :string)
+ ("g" "¢" :string)
+ ("e" "¢" :string)
+ ("J" "¢" :string)
+ ("q" "¢" :string)
+ ("D" "¢" :string)
+ ("b" "¢" :string)
+ ("z" "¢" :string)
+ ("w" "¢" :string)
+ ("Q" "¢" :string)
+ ("M" "¢" :string)
+ ("C" "¢" :string)
+ ("L" "¢" :string)
+ ("X" "¢" :string)
+ ("P" "¢" :string)
+ ("T" "¢" :string)
+ ("a" "¢" :string)
+ ("N" "¢" :string)
+ ("j" "¢" :string)
+ ("Z" "¢" :string)
+ ("u" "¢" :string)
+ ("k" "¢" :string)
+ ("t" "¢" :string)
+ ("W" "¢" :string)
+ ("v" "¢" :string)
+ ("s" "¢" :string)
+ ("B" "¢" :string)
+ ("H" "¢" :string)
+ ("c" "¢" :string)
+ ("I" "¢" :string)
+ ("G" "¢" :string)
+ ("U" "¢" :string)
+ ("F" "¢" :string)
+ ("r" "¢" :string)
+ ("x" "¢" :string)
+ ("V" "¢" :string)
+ ("h" "¢" :string)
+ ("f" "¢" :string)
+ ("i" "¢" :string)
+ ("A" "¢" :string)
+ ("O" "¢" :string)
+ ("n" "¢" :string)
+ ("m" "¢" :string)
+ ("l" "¢" :string)
+ ("p" "¢" :string)
+ ("R" "¢" :string)
+ ("o" "¢" :string)
+ ))
+
+(define-rule-set "en-resolve-case"
+
+ :rules (("Ö" "8" :string)
+ ("Ñ" "8" :string)
+ ("Ô" "8" :string)
+ ("Ç" "8" :string)
+ ("É" "8" :string)
+ ("Ï" "8" :string)
+ ("Ê" "8" :string)
+ ("È" "8" :string)
+ ("Ë" "8" :string)
+ ("Ç·" "8" :string)
+ ("À" "8" :string)
+ ("Þ" "8" :string)
+ ("Ȝ" "8" :string)
+ ("Ð" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ð" "9" :string)
+ ("ô" "9" :string)
+ ("ȝ" "9" :string)
+ ("ï" "9" :string)
+ ("ö" "9" :string)
+ ("ñ" "9" :string)
+ ("ç" "9" :string)
+ ("à" "9" :string)
+ ("þ" "9" :string)
+ ("è" "9" :string)
+ ("ë" "9" :string)
+ ("ê" "9" :string)
+ ("é" "9" :string)
+ ("Æ¿" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("S" "8" :string)
+ ("K" "8" :string)
+ ("Y" "8" :string)
+ ("E" "8" :string)
+ ("J" "8" :string)
+ ("D" "8" :string)
+ ("Q" "8" :string)
+ ("M" "8" :string)
+ ("C" "8" :string)
+ ("L" "8" :string)
+ ("X" "8" :string)
+ ("P" "8" :string)
+ ("T" "8" :string)
+ ("N" "8" :string)
+ ("Z" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("H" "8" :string)
+ ("I" "8" :string)
+ ("G" "8" :string)
+ ("U" "8" :string)
+ ("F" "8" :string)
+ ("V" "8" :string)
+ ("A" "8" :string)
+ ("O" "8" :string)
+ ("R" "8" :string)
+ ("d" "9" :string)
+ ("y" "9" :string)
+ ("g" "9" :string)
+ ("e" "9" :string)
+ ("q" "9" :string)
+ ("b" "9" :string)
+ ("z" "9" :string)
+ ("w" "9" :string)
+ ("a" "9" :string)
+ ("j" "9" :string)
+ ("u" "9" :string)
+ ("k" "9" :string)
+ ("t" "9" :string)
+ ("v" "9" :string)
+ ("s" "9" :string)
+ ("c" "9" :string)
+ ("r" "9" :string)
+ ("x" "9" :string)
+ ("h" "9" :string)
+ ("f" "9" :string)
+ ("i" "9" :string)
+ ("n" "9" :string)
+ ("m" "9" :string)
+ ("l" "9" :string)
+ ("p" "9" :string)
+ ("o" "9" :string)
+ ))
+
+(define-rule-set "en-ignore-special"
+
+ :rules (("-" "" :string)
+ ("!" "" :string)
+ ("{" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ("?" "" :string)
+ ("." "" :string)
+ ))
+
+(define-rule-set "en-resolve-special"
+
+ :rules (("Ö" "¤" :string)
+ ("Ñ" "¤" :string)
+ ("ð" "¤" :string)
+ ("Ô" "¤" :string)
+ ("Ç" "¤" :string)
+ ("É" "¤" :string)
+ ("ô" "¤" :string)
+ ("Ï" "¤" :string)
+ ("ȝ" "¤" :string)
+ ("ï" "¤" :string)
+ ("Ê" "¤" :string)
+ ("ö" "¤" :string)
+ ("ñ" "¤" :string)
+ ("È" "¤" :string)
+ ("ç" "¤" :string)
+ ("Ë" "¤" :string)
+ ("à" "¤" :string)
+ ("þ" "¤" :string)
+ ("Ç·" "¤" :string)
+ ("è" "¤" :string)
+ ("À" "¤" :string)
+ ("ë" "¤" :string)
+ ("Þ" "¤" :string)
+ ("ê" "¤" :string)
+ ("é" "¤" :string)
+ ("Ȝ" "¤" :string)
+ ("Æ¿" "¤" :string)
+ ("Ð" "¤" :string)
+ ("œ" "¤¤" :string)
+ ("Æ" "¤¤" :string)
+ ("Œ" "¤¤" :string)
+ ("æ" "¤¤" :string)
+ ("?" "¡" :string)
+ ("!" "¢" :string)
+ ("." "£" :string)
+ ("S" "¤" :string)
+ ("K" "¤" :string)
+ ("d" "¤" :string)
+ ("Y" "¤" :string)
+ ("E" "¤" :string)
+ ("y" "¤" :string)
+ ("g" "¤" :string)
+ ("e" "¤" :string)
+ ("J" "¤" :string)
+ ("q" "¤" :string)
+ ("D" "¤" :string)
+ ("b" "¤" :string)
+ ("z" "¤" :string)
+ ("w" "¤" :string)
+ ("Q" "¤" :string)
+ ("M" "¤" :string)
+ ("C" "¤" :string)
+ ("L" "¤" :string)
+ ("X" "¤" :string)
+ ("P" "¤" :string)
+ ("T" "¤" :string)
+ ("a" "¤" :string)
+ ("N" "¤" :string)
+ ("j" "¤" :string)
+ ("Z" "¤" :string)
+ ("u" "¤" :string)
+ ("k" "¤" :string)
+ ("t" "¤" :string)
+ ("W" "¤" :string)
+ ("v" "¤" :string)
+ ("s" "¤" :string)
+ ("B" "¤" :string)
+ ("H" "¤" :string)
+ ("c" "¤" :string)
+ ("I" "¤" :string)
+ ("G" "¤" :string)
+ ("U" "¤" :string)
+ ("F" "¤" :string)
+ ("r" "¤" :string)
+ ("x" "¤" :string)
+ ("V" "¤" :string)
+ ("h" "¤" :string)
+ ("f" "¤" :string)
+ ("i" "¤" :string)
+ ("A" "¤" :string)
+ ("O" "¤" :string)
+ ("n" "¤" :string)
+ ("m" "¤" :string)
+ ("l" "¤" :string)
+ ("p" "¤" :string)
+ ("R" "¤" :string)
+ ("o" "¤" :string)
+ ("-" "¥" :string)
+ ("'" "¦" :string)
+ ("{" "§" :string)
+ ("}" "¨" :string)
+ ))
+
+; The following section is customised for samplexdy.tex
+; (copied from samplexdy.xdy automatically generated by
+; samplexdy.tex)
+
+; required styles
+
+(require "tex.xdy")
+
+; list of allowed attributes (number formats)
+
+(define-attributes (("default"
+ "hyperbfit"
+ "pagehyperbfit"
+ "glsnumberformat"
+ "pageglsnumberformat"
+ "textrm"
+ "pagetextrm"
+ "textsf"
+ "pagetextsf"
+ "texttt"
+ "pagetexttt"
+ "textbf"
+ "pagetextbf"
+ "textmd"
+ "pagetextmd"
+ "textit"
+ "pagetextit"
+ "textup"
+ "pagetextup"
+ "textsl"
+ "pagetextsl"
+ "textsc"
+ "pagetextsc"
+ "emph"
+ "pageemph"
+ "glshypernumber"
+ "pageglshypernumber"
+ "hyperrm"
+ "pagehyperrm"
+ "hypersf"
+ "pagehypersf"
+ "hypertt"
+ "pagehypertt"
+ "hyperbf"
+ "pagehyperbf"
+ "hypermd"
+ "pagehypermd"
+ "hyperit"
+ "pagehyperit"
+ "hyperup"
+ "pagehyperup"
+ "hypersl"
+ "pagehypersl"
+ "hypersc"
+ "pagehypersc"
+ "hyperemph"
+ "pagehyperemph")))
+
+; user defined alphabets
+
+
+
+; location class definitions
+
+(define-location-class "roman-page-numbers"
+ ( :sep "{}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-roman-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-roman-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-roman-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers"
+ ( :sep "{}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-Roman-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-Roman-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-Roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-Roman-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-Roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-Roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-Roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers"
+ ( :sep "{}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-arabic-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-arabic-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-arabic-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-arabic-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-arabic-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-arabic-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-arabic-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers"
+ ( :sep "{}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-alpha-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-alpha-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-alpha-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers"
+ ( :sep "{}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-Alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers"
+ ( :sep "{}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-Appendix-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers"
+ ( :sep "{}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-arabic-section-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-arabic-section-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-arabic-section-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-arabic-section-numbers"
+ ( :sep "{" "alpha" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-arabic-section-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-arabic-section-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-arabic-section-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+
+; user defined location classes
+
+(define-location-class "Numberstring"
+ (:sep "{}{" :sep "\protect \Numberstringnum {" "arabic-numbers" :sep "}" :sep "}"))
+
+; define cross-reference class
+
+(define-crossref-class "see" :unverified )
+(markup-crossref-list :class "see"
+ :open "\glsseeformat" :close "{}")
+
+; define the order of the location classes
+(define-location-class-order (
+ "roman-page-numbers"
+ "arabic-page-numbers"
+ "arabic-section-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "Appendix-page-numbers"
+ "see" ))
+
+; define the glossary markup
+
+(markup-index
+ :open "\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble
+\providecommand*\glsXpageXhyperbfit[2]{\setentrycounter[#1]{page}\hyperbfit{#2}}
+\providecommand*\glsXpageXglsnumberformat[2]{\setentrycounter[#1]{page}\glsnumberformat{#2}}
+\providecommand*\glsXpageXtextrm[2]{\setentrycounter[#1]{page}\textrm{#2}}
+\providecommand*\glsXpageXtextsf[2]{\setentrycounter[#1]{page}\textsf{#2}}
+\providecommand*\glsXpageXtexttt[2]{\setentrycounter[#1]{page}\texttt{#2}}
+\providecommand*\glsXpageXtextbf[2]{\setentrycounter[#1]{page}\textbf{#2}}
+\providecommand*\glsXpageXtextmd[2]{\setentrycounter[#1]{page}\textmd{#2}}
+\providecommand*\glsXpageXtextit[2]{\setentrycounter[#1]{page}\textit{#2}}
+\providecommand*\glsXpageXtextup[2]{\setentrycounter[#1]{page}\textup{#2}}
+\providecommand*\glsXpageXtextsl[2]{\setentrycounter[#1]{page}\textsl{#2}}
+\providecommand*\glsXpageXtextsc[2]{\setentrycounter[#1]{page}\textsc{#2}}
+\providecommand*\glsXpageXemph[2]{\setentrycounter[#1]{page}\emph{#2}}
+\providecommand*\glsXpageXglshypernumber[2]{\setentrycounter[#1]{page}\glshypernumber{#2}}
+\providecommand*\glsXpageXhyperrm[2]{\setentrycounter[#1]{page}\hyperrm{#2}}
+\providecommand*\glsXpageXhypersf[2]{\setentrycounter[#1]{page}\hypersf{#2}}
+\providecommand*\glsXpageXhypertt[2]{\setentrycounter[#1]{page}\hypertt{#2}}
+\providecommand*\glsXpageXhyperbf[2]{\setentrycounter[#1]{page}\hyperbf{#2}}
+\providecommand*\glsXpageXhypermd[2]{\setentrycounter[#1]{page}\hypermd{#2}}
+\providecommand*\glsXpageXhyperit[2]{\setentrycounter[#1]{page}\hyperit{#2}}
+\providecommand*\glsXpageXhyperup[2]{\setentrycounter[#1]{page}\hyperup{#2}}
+\providecommand*\glsXpageXhypersl[2]{\setentrycounter[#1]{page}\hypersl{#2}}
+\providecommand*\glsXpageXhypersc[2]{\setentrycounter[#1]{page}\hypersc{#2}}
+\providecommand*\glsXpageXhyperemph[2]{\setentrycounter[#1]{page}\hyperemph{#2}}
+\begin{theglossary}\glossaryheader~n"
+ :close "%~n\end{theglossary}\glossarypostamble~n"
+ :tree)
+(markup-letter-group-list :sep "\glsgroupskip~n")
+(markup-indexentry :open "\relax\glsresetentrylist~n")
+(markup-locclass-list :open "{\glossaryentrynumbers{\relax "
+ :sep ", " :close "}}")
+(markup-locref-list :sep "\delimN ")
+(markup-range :sep "\delimR ")
+
+; define format to use for locations
+
+
+(markup-locref :open "~n\glsXpageXhyperbfit"
+ :close ""
+ :attr "pagehyperbfit")
+(markup-locref :open "~n\glsXpageXglsnumberformat"
+ :close ""
+ :attr "pageglsnumberformat")
+(markup-locref :open "~n\glsXpageXtextrm"
+ :close ""
+ :attr "pagetextrm")
+(markup-locref :open "~n\glsXpageXtextsf"
+ :close ""
+ :attr "pagetextsf")
+(markup-locref :open "~n\glsXpageXtexttt"
+ :close ""
+ :attr "pagetexttt")
+(markup-locref :open "~n\glsXpageXtextbf"
+ :close ""
+ :attr "pagetextbf")
+(markup-locref :open "~n\glsXpageXtextmd"
+ :close ""
+ :attr "pagetextmd")
+(markup-locref :open "~n\glsXpageXtextit"
+ :close ""
+ :attr "pagetextit")
+(markup-locref :open "~n\glsXpageXtextup"
+ :close ""
+ :attr "pagetextup")
+(markup-locref :open "~n\glsXpageXtextsl"
+ :close ""
+ :attr "pagetextsl")
+(markup-locref :open "~n\glsXpageXtextsc"
+ :close ""
+ :attr "pagetextsc")
+(markup-locref :open "~n\glsXpageXemph"
+ :close ""
+ :attr "pageemph")
+(markup-locref :open "~n\glsXpageXglshypernumber"
+ :close ""
+ :attr "pageglshypernumber")
+(markup-locref :open "~n\glsXpageXhyperrm"
+ :close ""
+ :attr "pagehyperrm")
+(markup-locref :open "~n\glsXpageXhypersf"
+ :close ""
+ :attr "pagehypersf")
+(markup-locref :open "~n\glsXpageXhypertt"
+ :close ""
+ :attr "pagehypertt")
+(markup-locref :open "~n\glsXpageXhyperbf"
+ :close ""
+ :attr "pagehyperbf")
+(markup-locref :open "~n\glsXpageXhypermd"
+ :close ""
+ :attr "pagehypermd")
+(markup-locref :open "~n\glsXpageXhyperit"
+ :close ""
+ :attr "pagehyperit")
+(markup-locref :open "~n\glsXpageXhyperup"
+ :close ""
+ :attr "pagehyperup")
+(markup-locref :open "~n\glsXpageXhypersl"
+ :close ""
+ :attr "pagehypersl")
+(markup-locref :open "~n\glsXpageXhypersc"
+ :close ""
+ :attr "pagehypersc")
+(markup-locref :open "~n\glsXpageXhyperemph"
+ :close ""
+ :attr "pagehyperemph")
+
+; define letter group list format
+
+(markup-letter-group-list :sep "\glsgroupskip~n")
+
+; letter group headings
+
+(markup-letter-group :open-head "\glsgroupheading{"
+ :close-head "}")
+
+; additional letter groups
+
+(define-letter-group "glsnumbers"
+ :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+ :before "A")
+
+; additional sort rules
+
+
+; The following is copied from xindy/lang/english/utf8-lang.xdy
+
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("en-alphabetize" "en-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("en-resolve-diacritics" "en-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("en-resolve-case" "en-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("en-resolve-special"))
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy-mc.xdy>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*samplexdy-mc207.xdy>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+;; xindy style file for samplexdy.tex that has Mc letter group
+
+(define-letter-group "A" :prefixes ("€"))
+(define-letter-group "B" :after "A" :prefixes ("„"))
+(define-letter-group "C" :after "B" :prefixes ("†"))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes ("—"))
+(define-letter-group "F" :after "E" :prefixes ("œ"))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes ("¤"))
+(define-letter-group "I" :after "H" :prefixes ("¨"))
+(define-letter-group "J" :after "I" :prefixes ("¬"))
+(define-letter-group "K" :after "J" :prefixes ("®"))
+(define-letter-group "L" :after "K" :prefixes ("´"))
+(define-letter-group "Mc" :after "L" :prefixes ("Ƞ"))
+(define-letter-group "M" :after "Mc" :prefixes ("»"))
+(define-letter-group "N" :after "M" :prefixes ("¼"))
+(define-letter-group "O" :after "N" :prefixes ("Ã"))
+(define-letter-group "P" :after "O" :prefixes ("È"))
+(define-letter-group "Q" :after "P" :prefixes ("Ê"))
+(define-letter-group "R" :after "Q" :prefixes ("Ë"))
+(define-letter-group "S" :after "R" :prefixes ("Ð"))
+(define-letter-group "T" :after "S" :prefixes ("Ú"))
+(define-letter-group "U" :after "T" :prefixes ("à"))
+(define-letter-group "V" :after "U" :prefixes ("å"))
+(define-letter-group "W" :after "V" :prefixes ("æ"))
+(define-letter-group "X" :after "W" :prefixes ("ë"))
+(define-letter-group "Y" :after "X" :prefixes ("í"))
+(define-letter-group "Ȝ" :after "Y" :prefixes ("ï"))
+(define-letter-group "Z" :after "Ȝ" :prefixes ("ð"))
+(define-letter-group "Þ" :after "Z" :prefixes ("ö"))
+(define-letter-group "Æ¿" :after "Þ" :prefixes ("÷"))
+
+(define-rule-set "en-alphabetize"
+
+ :rules (("à" "€" :string)
+ ("À" "€" :string)
+ ("Æ" "€—" :string)
+ ("æ" "€—" :string)
+ ("Ç" "†" :string)
+ ("ç" "†" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("É" "—" :string)
+ ("Ê" "—" :string)
+ ("È" "—" :string)
+ ("Ë" "—" :string)
+ ("è" "—" :string)
+ ("ë" "—" :string)
+ ("ê" "—" :string)
+ ("é" "—" :string)
+ ("Ï" "¨" :string)
+ ("ï" "¨" :string)
+ ("Ñ" "¼" :string)
+ ("ñ" "¼" :string)
+ ("Ö" "Ã" :string)
+ ("Ô" "Ã" :string)
+ ("ô" "Ã" :string)
+ ("ö" "Ã" :string)
+ ("œ" "×" :string)
+ ("Œ" "×" :string)
+ ("ȝ" "ï" :string)
+ ("Ȝ" "ï" :string)
+ ("þ" "ö" :string)
+ ("Þ" "ö" :string)
+ ("Ç·" "÷" :string)
+ ("Æ¿" "÷" :string)
+ ("a" "€" :string)
+ ("A" "€" :string)
+ ("b" "„" :string)
+ ("B" "„" :string)
+ ("C" "†" :string)
+ ("c" "†" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("E" "—" :string)
+ ("e" "—" :string)
+ ("F" "œ" :string)
+ ("f" "œ" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("H" "¤" :string)
+ ("h" "¤" :string)
+ ("I" "¨" :string)
+ ("i" "¨" :string)
+ ("J" "¬" :string)
+ ("j" "¬" :string)
+ ("K" "®" :string)
+ ("k" "®" :string)
+ ("L" "´" :string)
+ ("l" "´" :string)
+ ("Mc" "Ƞ" :string)
+ ("Mac" "Ƞ" :string)
+ ("M" "»" :string)
+ ("m" "»" :string)
+ ("N" "¼" :string)
+ ("n" "¼" :string)
+ ("O" "Ã" :string)
+ ("o" "Ã" :string)
+ ("P" "È" :string)
+ ("p" "È" :string)
+ ("q" "Ê" :string)
+ ("Q" "Ê" :string)
+ ("r" "Ë" :string)
+ ("R" "Ë" :string)
+ ("S" "Ð" :string)
+ ("s" "Ð" :string)
+ ("T" "Ú" :string)
+ ("t" "Ú" :string)
+ ("u" "à" :string)
+ ("U" "à" :string)
+ ("v" "å" :string)
+ ("V" "å" :string)
+ ("w" "æ" :string)
+ ("W" "æ" :string)
+ ("X" "ë" :string)
+ ("x" "ë" :string)
+ ("Y" "í" :string)
+ ("y" "í" :string)
+ ("z" "ð" :string)
+ ("Z" "ð" :string)
+ ))
+
+(define-rule-set "en-resolve-diacritics"
+
+ :rules (("ȝ" "¢" :string)
+ ("þ" "¢" :string)
+ ("Ç·" "¢" :string)
+ ("Þ" "¢" :string)
+ ("Ȝ" "¢" :string)
+ ("Æ¿" "¢" :string)
+ ("Ö" "£" :string)
+ ("Ñ" "£" :string)
+ ("ð" "£" :string)
+ ("Ç" "£" :string)
+ ("É" "£" :string)
+ ("Ï" "£" :string)
+ ("ï" "£" :string)
+ ("ö" "£" :string)
+ ("ñ" "£" :string)
+ ("ç" "£" :string)
+ ("à" "£" :string)
+ ("À" "£" :string)
+ ("é" "£" :string)
+ ("Ð" "£" :string)
+ ("Ô" "¤" :string)
+ ("ô" "¤" :string)
+ ("È" "¤" :string)
+ ("è" "¤" :string)
+ ("Ë" "¥" :string)
+ ("ë" "¥" :string)
+ ("Ê" "¦" :string)
+ ("ê" "¦" :string)
+ ("œ" "ÿ" :string)
+ ("Æ" "ÿ" :string)
+ ("Œ" "ÿ" :string)
+ ("æ" "ÿ" :string)
+ ("S" "¢" :string)
+ ("K" "¢" :string)
+ ("d" "¢" :string)
+ ("Y" "¢" :string)
+ ("E" "¢" :string)
+ ("y" "¢" :string)
+ ("g" "¢" :string)
+ ("e" "¢" :string)
+ ("J" "¢" :string)
+ ("q" "¢" :string)
+ ("D" "¢" :string)
+ ("b" "¢" :string)
+ ("z" "¢" :string)
+ ("w" "¢" :string)
+ ("Q" "¢" :string)
+ ("M" "¢" :string)
+ ("C" "¢" :string)
+ ("L" "¢" :string)
+ ("X" "¢" :string)
+ ("P" "¢" :string)
+ ("T" "¢" :string)
+ ("a" "¢" :string)
+ ("N" "¢" :string)
+ ("j" "¢" :string)
+ ("Z" "¢" :string)
+ ("u" "¢" :string)
+ ("k" "¢" :string)
+ ("t" "¢" :string)
+ ("W" "¢" :string)
+ ("v" "¢" :string)
+ ("s" "¢" :string)
+ ("B" "¢" :string)
+ ("H" "¢" :string)
+ ("c" "¢" :string)
+ ("I" "¢" :string)
+ ("G" "¢" :string)
+ ("U" "¢" :string)
+ ("F" "¢" :string)
+ ("r" "¢" :string)
+ ("x" "¢" :string)
+ ("V" "¢" :string)
+ ("h" "¢" :string)
+ ("f" "¢" :string)
+ ("i" "¢" :string)
+ ("A" "¢" :string)
+ ("O" "¢" :string)
+ ("n" "¢" :string)
+ ("m" "¢" :string)
+ ("l" "¢" :string)
+ ("p" "¢" :string)
+ ("R" "¢" :string)
+ ("o" "¢" :string)
+ ))
+
+(define-rule-set "en-resolve-case"
+
+ :rules (("Ö" "8" :string)
+ ("Ñ" "8" :string)
+ ("Ô" "8" :string)
+ ("Ç" "8" :string)
+ ("É" "8" :string)
+ ("Ï" "8" :string)
+ ("Ê" "8" :string)
+ ("È" "8" :string)
+ ("Ë" "8" :string)
+ ("Ç·" "8" :string)
+ ("À" "8" :string)
+ ("Þ" "8" :string)
+ ("Ȝ" "8" :string)
+ ("Ð" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ð" "9" :string)
+ ("ô" "9" :string)
+ ("ȝ" "9" :string)
+ ("ï" "9" :string)
+ ("ö" "9" :string)
+ ("ñ" "9" :string)
+ ("ç" "9" :string)
+ ("à" "9" :string)
+ ("þ" "9" :string)
+ ("è" "9" :string)
+ ("ë" "9" :string)
+ ("ê" "9" :string)
+ ("é" "9" :string)
+ ("Æ¿" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("S" "8" :string)
+ ("K" "8" :string)
+ ("Y" "8" :string)
+ ("E" "8" :string)
+ ("J" "8" :string)
+ ("D" "8" :string)
+ ("Q" "8" :string)
+ ("M" "8" :string)
+ ("C" "8" :string)
+ ("L" "8" :string)
+ ("X" "8" :string)
+ ("P" "8" :string)
+ ("T" "8" :string)
+ ("N" "8" :string)
+ ("Z" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("H" "8" :string)
+ ("I" "8" :string)
+ ("G" "8" :string)
+ ("U" "8" :string)
+ ("F" "8" :string)
+ ("V" "8" :string)
+ ("A" "8" :string)
+ ("O" "8" :string)
+ ("R" "8" :string)
+ ("d" "9" :string)
+ ("y" "9" :string)
+ ("g" "9" :string)
+ ("e" "9" :string)
+ ("q" "9" :string)
+ ("b" "9" :string)
+ ("z" "9" :string)
+ ("w" "9" :string)
+ ("a" "9" :string)
+ ("j" "9" :string)
+ ("u" "9" :string)
+ ("k" "9" :string)
+ ("t" "9" :string)
+ ("v" "9" :string)
+ ("s" "9" :string)
+ ("c" "9" :string)
+ ("r" "9" :string)
+ ("x" "9" :string)
+ ("h" "9" :string)
+ ("f" "9" :string)
+ ("i" "9" :string)
+ ("n" "9" :string)
+ ("m" "9" :string)
+ ("l" "9" :string)
+ ("p" "9" :string)
+ ("o" "9" :string)
+ ))
+
+(define-rule-set "en-ignore-special"
+
+ :rules (("-" "" :string)
+ ("!" "" :string)
+ ("{" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ("?" "" :string)
+ ("." "" :string)
+ ))
+
+(define-rule-set "en-resolve-special"
+
+ :rules (("Ö" "¤" :string)
+ ("Ñ" "¤" :string)
+ ("ð" "¤" :string)
+ ("Ô" "¤" :string)
+ ("Ç" "¤" :string)
+ ("É" "¤" :string)
+ ("ô" "¤" :string)
+ ("Ï" "¤" :string)
+ ("ȝ" "¤" :string)
+ ("ï" "¤" :string)
+ ("Ê" "¤" :string)
+ ("ö" "¤" :string)
+ ("ñ" "¤" :string)
+ ("È" "¤" :string)
+ ("ç" "¤" :string)
+ ("Ë" "¤" :string)
+ ("à" "¤" :string)
+ ("þ" "¤" :string)
+ ("Ç·" "¤" :string)
+ ("è" "¤" :string)
+ ("À" "¤" :string)
+ ("ë" "¤" :string)
+ ("Þ" "¤" :string)
+ ("ê" "¤" :string)
+ ("é" "¤" :string)
+ ("Ȝ" "¤" :string)
+ ("Æ¿" "¤" :string)
+ ("Ð" "¤" :string)
+ ("œ" "¤¤" :string)
+ ("Æ" "¤¤" :string)
+ ("Œ" "¤¤" :string)
+ ("æ" "¤¤" :string)
+ ("?" "¡" :string)
+ ("!" "¢" :string)
+ ("." "£" :string)
+ ("S" "¤" :string)
+ ("K" "¤" :string)
+ ("d" "¤" :string)
+ ("Y" "¤" :string)
+ ("E" "¤" :string)
+ ("y" "¤" :string)
+ ("g" "¤" :string)
+ ("e" "¤" :string)
+ ("J" "¤" :string)
+ ("q" "¤" :string)
+ ("D" "¤" :string)
+ ("b" "¤" :string)
+ ("z" "¤" :string)
+ ("w" "¤" :string)
+ ("Q" "¤" :string)
+ ("M" "¤" :string)
+ ("C" "¤" :string)
+ ("L" "¤" :string)
+ ("X" "¤" :string)
+ ("P" "¤" :string)
+ ("T" "¤" :string)
+ ("a" "¤" :string)
+ ("N" "¤" :string)
+ ("j" "¤" :string)
+ ("Z" "¤" :string)
+ ("u" "¤" :string)
+ ("k" "¤" :string)
+ ("t" "¤" :string)
+ ("W" "¤" :string)
+ ("v" "¤" :string)
+ ("s" "¤" :string)
+ ("B" "¤" :string)
+ ("H" "¤" :string)
+ ("c" "¤" :string)
+ ("I" "¤" :string)
+ ("G" "¤" :string)
+ ("U" "¤" :string)
+ ("F" "¤" :string)
+ ("r" "¤" :string)
+ ("x" "¤" :string)
+ ("V" "¤" :string)
+ ("h" "¤" :string)
+ ("f" "¤" :string)
+ ("i" "¤" :string)
+ ("A" "¤" :string)
+ ("O" "¤" :string)
+ ("n" "¤" :string)
+ ("m" "¤" :string)
+ ("l" "¤" :string)
+ ("p" "¤" :string)
+ ("R" "¤" :string)
+ ("o" "¤" :string)
+ ("-" "¥" :string)
+ ("'" "¦" :string)
+ ("{" "§" :string)
+ ("}" "¨" :string)
+ ))
+
+; The following section is customised for samplexdy.tex
+; (copied from samplexdy.xdy automatically generated by
+; samplexdy.tex)
+
+; required styles
+
+(require "tex.xdy")
+
+; list of allowed attributes (number formats)
+
+(define-attributes (("default"
+ "glsnumberformat"
+ "textrm"
+ "textsf"
+ "texttt"
+ "textbf"
+ "textmd"
+ "textit"
+ "textup"
+ "textsl"
+ "textsc"
+ "emph"
+ "glshypernumber"
+ "hyperrm"
+ "hypersf"
+ "hypertt"
+ "hyperbf"
+ "hypermd"
+ "hyperit"
+ "hyperup"
+ "hypersl"
+ "hypersc"
+ "hyperemph"
+ "hyperbfit")))
+
+; user defined alphabets
+
+
+
+; location class definitions
+
+(define-location-class "roman-page-numbers"
+ ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers"
+ ("roman-numbers-uppercase"))
+(define-location-class "arabic-page-numbers"
+ ("arabic-numbers"))
+(define-location-class "alpha-page-numbers"
+ ("alpha"))
+(define-location-class "Alpha-page-numbers"
+ ("ALPHA"))
+(define-location-class "Appendix-page-numbers"
+ ("ALPHA" :sep "." "arabic-numbers"))
+(define-location-class "arabic-section-numbers"
+ ("arabic-numbers" :sep "." "arabic-numbers"))
+
+; user defined location classes
+
+(define-location-class "Numberstring"
+ (:sep "\protect \Numberstringnum {" "arabic-numbers" :sep "}"))
+
+; define cross-reference class
+
+(define-crossref-class "see" :unverified )
+(markup-crossref-list :class "see"
+ :open "\glsseeformat" :close "{}")
+
+; define the order of the location classes
+(define-location-class-order (
+ "roman-page-numbers"
+ "arabic-page-numbers"
+ "arabic-section-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "Appendix-page-numbers"
+ "see" ))
+
+; define the glossary markup
+
+(markup-index
+ :open "\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble~n\begin{theglossary}\glossaryheader~n"
+ :close "~n\end{theglossary}~n\glossarypostamble~n"
+ :tree)
+(markup-letter-group-list :sep "\glsgroupskip~n")
+(markup-indexentry :open "~n" :depth 0)
+(markup-locclass-list :open "{\glossaryentrynumbers{\relax "
+ :sep ", " :close "}}")
+(markup-locref-list :sep "\delimN ")
+(markup-range :sep "\delimR ")
+
+; define format to use for locations
+
+
+(markup-locref :open "~n\setentrycounter{page}\glsnumberformat{"
+ :close "}"
+ :attr "glsnumberformat")
+(markup-locref :open "~n\setentrycounter{page}\textrm{"
+ :close "}"
+ :attr "textrm")
+(markup-locref :open "~n\setentrycounter{page}\textsf{"
+ :close "}"
+ :attr "textsf")
+(markup-locref :open "~n\setentrycounter{page}\texttt{"
+ :close "}"
+ :attr "texttt")
+(markup-locref :open "~n\setentrycounter{page}\textbf{"
+ :close "}"
+ :attr "textbf")
+(markup-locref :open "~n\setentrycounter{page}\textmd{"
+ :close "}"
+ :attr "textmd")
+(markup-locref :open "~n\setentrycounter{page}\textit{"
+ :close "}"
+ :attr "textit")
+(markup-locref :open "~n\setentrycounter{page}\textup{"
+ :close "}"
+ :attr "textup")
+(markup-locref :open "~n\setentrycounter{page}\textsl{"
+ :close "}"
+ :attr "textsl")
+(markup-locref :open "~n\setentrycounter{page}\textsc{"
+ :close "}"
+ :attr "textsc")
+(markup-locref :open "~n\setentrycounter{page}\emph{"
+ :close "}"
+ :attr "emph")
+(markup-locref :open "~n\setentrycounter{page}\glshypernumber{"
+ :close "}"
+ :attr "glshypernumber")
+(markup-locref :open "~n\setentrycounter{page}\hyperrm{"
+ :close "}"
+ :attr "hyperrm")
+(markup-locref :open "~n\setentrycounter{page}\hypersf{"
+ :close "}"
+ :attr "hypersf")
+(markup-locref :open "~n\setentrycounter{page}\hypertt{"
+ :close "}"
+ :attr "hypertt")
+(markup-locref :open "~n\setentrycounter{page}\hyperbf{"
+ :close "}"
+ :attr "hyperbf")
+(markup-locref :open "~n\setentrycounter{page}\hypermd{"
+ :close "}"
+ :attr "hypermd")
+(markup-locref :open "~n\setentrycounter{page}\hyperit{"
+ :close "}"
+ :attr "hyperit")
+(markup-locref :open "~n\setentrycounter{page}\hyperup{"
+ :close "}"
+ :attr "hyperup")
+(markup-locref :open "~n\setentrycounter{page}\hypersl{"
+ :close "}"
+ :attr "hypersl")
+(markup-locref :open "~n\setentrycounter{page}\hypersc{"
+ :close "}"
+ :attr "hypersc")
+(markup-locref :open "~n\setentrycounter{page}\hyperemph{"
+ :close "}"
+ :attr "hyperemph")
+(markup-locref :open "~n\setentrycounter{page}\hyperbfit{"
+ :close "}"
+ :attr "hyperbfit")
+
+; define letter group list format
+
+(markup-letter-group-list :sep "\glsgroupskip~n")
+
+; letter group headings
+
+(markup-letter-group :open-head "\glsgroupheading{"
+ :close-head "}")
+
+(define-letter-group "glsnumbers"
+ :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+ :before "A")
+
+; The following is copied from xindy/lang/english/utf8-lang.xdy
+
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("en-alphabetize" "en-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("en-resolve-diacritics" "en-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("en-resolve-case" "en-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("en-resolve-special"))
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</samplexdy-mc207.xdy>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*database1.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This is a sample database of glossary entries
+ % Only those entries used in the document with \glslink, \gls,
+ % \glspl, and uppercase variants will have entries in the
+ % glossary. Note that the type key is not used, as the
+ % glossary type can be specified in \loadglsentries
+
+\newglossaryentry{array}{name=array,
+description={A list of values identified by a numeric value}}
+
+\newglossaryentry{binary}{name=binary,
+description={Pertaining to numbers represented in base 2}}
+
+\newglossaryentry{comment}{name=comment,
+description={A remark that doesn't affect the meaning of the
+code}}
+
+\newglossaryentry{global}{name=global,
+description={Something that maintains its state when it leaves
+the current group}}
+
+\newglossaryentry{local}{name=local,
+description={Something that only maintains its state until
+it leaves the group in which it was defined/changed}}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</database1.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*database2.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+ % This is a sample database of glossary entries
+ % Only those entries used in the document with \glslink, \gls,
+ % \glspl, and uppercase variants will have entries in the
+ % glossary. Note that the type key is not used, as the
+ % glossary type can be specified in \loadglsentries
+
+ % Don't need to worry about makeindex special characters
+\newglossaryentry{quote}{name={"},
+description={the double quote symbol}}
+
+\newglossaryentry{at}{name={@},
+description={the ``at'' symbol}}
+
+\newglossaryentry{excl}{name={!},
+description={the exclamation mark symbol}}
+
+\newglossaryentry{bar}{name={\ensuremath{|}},
+description={the vertical bar symbol}}
+
+\newglossaryentry{hash}{name={\#},
+description={the hash symbol}}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</database2.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries.perl>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+# File : glossaries.perl
+# Author : Nicola L.C. Talbot
+# Date : 14th June 2007
+# Last Modified : 2014-09-24
+# Version : 1.06
+# Description : LaTeX2HTML (limited!) implementation of glossaries
+# package. Note that not all the glossaries.sty
+# macros have been implemented.
+# Note that this may not work with new versions of
+# LaTeX2HTML.
+
+# This is a LaTeX2HTML style implementing the glossaries package, and
+# is distributed as part of that package.
+# Copyright 2007 Nicola L.C. 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 of (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.dtx and glossaries.ins
+# and the derived files glossaries.sty, glossaries-prefix.sty,
+# glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty,
+# glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty,
+# glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty,
+# glossary-tree.sty, glossaries-compatible-207.sty,
+# glossaries-compatible-307.sty, glossaries-accsupp.sty,
+# glossaries-babel.sty, glossaries-polyglossia.sty, glossaries.perl.
+# Also makeglossaries and makeglossaries-lite.lua.
+
+
+package main;
+
+&do_require_package("mfirstuc");
+
+ %glossary_style = ();
+ &set_glossarystyle('altlist');# default style
+
+ $CURRENT_STYLE='altlist';
+
+&process_commands_nowrap_in_tex( <<_RAW_ARG_CMDS_);
+newglossarystyle # {} # {}
+_RAW_ARG_CMDS_
+
+# These are the only package options implemented.
+
+sub do_glossaries_style_altlist{
+}
+
+sub do_glossaries_toc{
+}
+
+sub do_glossaries_toc_true{
+}
+
+$INDEXONLYFIRST=0;
+
+sub do_glossaries_indexonlyfirst{
+ $INDEXONLYFIRST=1;
+}
+
+$gls_nonumberlist{'main'} = 0;
+
+sub do_glossaries_nonumberlist{
+ $gls_nonumberlist{'main'} = 1;
+}
+
+$GLSCURRENTFORMAT="textrm" if (!defined($GLSCURRENTFORMAT));
+$GLOSSARY_END_DESCRIPTION = '.' if (!defined($GLOSSARY_END_DESCRIPTION));
+
+sub do_cmd_glossaryname{
+ "Glossary$_[0]"
+}
+
+$gls_mark{'main'} = "<tex2html_gls_main_mark>";
+$gls_file_mark{'main'} = "<tex2html_gls_main_file_mark>";
+$gls_title{'main'} = "\\glossaryname";
+$gls_toctitle{'main'} = "\\glossaryname";
+$delimN{'main'} = ", ";
+$glsnumformat{'main'} = $GLSCURRENTFORMAT;
+@{$gls_entries{'main'}} = ();
+$gls_displayfirst{'main'} = "glsdisplayfirst";
+$gls_display{'main'} = "glsdisplay";
+
+ %glsentry = ();
+
+$acronymtype = 'main';
+
+sub do_glossaries_acronym{
+ &do_glossaries_acronym_true
+}
+
+sub do_glossaries_acronym_true{
+ &make_newglossarytype("acronym", "\\acronymname");
+ $acronymtype = 'acronym';
+}
+
+sub do_glossaries_acronym_false{
+ $acronymtype = 'main';
+}
+
+sub do_cmd_acronymname{
+ join('', 'Acronyms', $_[0]);
+}
+
+sub do_cmd_acronymtype{
+ join('', $acronymtype, $_[0]);
+}
+
+$global{'glossaryentry'} = 0;
+$global{'glossarysubentry'} = 0;
+
+sub do_cmd_theglossaryentry{
+ join('', $global{'glossaryentry'}, $_[0]);
+}
+
+sub do_cmd_theglossarysubentry{
+ join('', $global{'glossarysubentry'}, $_[0]);
+}
+
+sub do_glossaries_entrycounter{
+ &do_glossaries_entrycounter_true
+}
+
+sub do_glossaries_entrycounter_true{
+ eval(<<'_END_DEF');
+ sub do_cmd_glsresetentrycounter{
+ $global{'entrycounter'} = 0;
+ $_[0];
+ }
+_END_DEF
+}
+
+sub do_glossaries_entrycounter_false{
+ eval(<<'_END_DEF');
+ sub do_cmd_glsresetentrycounter{
+ $_[0];
+ }
+_END_DEF
+}
+
+sub do_cmd_glsresetentrycounter{$_[0];}
+
+sub do_glossaries_subentrycounter{
+ &do_glossaries_subentrycounter_true
+}
+
+sub do_glossaries_subentrycounter_true{
+ eval(<<'_END_DEF');
+ sub do_cmd_glsresetsubentrycounter{
+ $global{'subentrycounter'} = 0;
+ $_[0];
+ }
+_END_DEF
+}
+
+sub do_glossaries_subentrycounter_false{
+ eval(<<'_END_DEF');
+ sub do_cmd_glsresetsubentrycounter{
+ $_[0];
+ }
+_END_DEF
+}
+
+sub do_cmd_glsresetsubentrycounter{ $_[0]; }
+
+# modify set_depth_levels so that glossary is added
+
+sub replace_glossary_markers{
+ foreach $type (keys %gls_mark)
+ {
+ if (defined &add_gls_hook)
+ {&add_gls_hook if (/$gls_mark{$type}/);}
+ else
+ {&add_gls($type) if (/$gls_mark{$type}/);}
+
+ s/$gls_file_mark{$type}/$glsfile{$type}/g;
+ }
+}
+
+# there must be a better way of doing this
+# other than copying the original code and adding to it.
+sub replace_general_markers {
+ if (defined &replace_infopage_hook) {&replace_infopage_hook if (/$info_page_mark/);}
+ else { &replace_infopage if (/$info_page_mark/); }
+ if (defined &add_idx_hook) {&add_idx_hook if (/$idx_mark/);}
+ else {&add_idx if (/$idx_mark/);}
+ &replace_glossary_markers;
+
+ if ($segment_figure_captions) {
+s/$lof_mark/$segment_figure_captions/o
+ } else { s/$lof_mark/$figure_captions/o }
+ if ($segment_table_captions) {
+s/$lot_mark/$segment_table_captions/o
+ } else { s/$lot_mark/$table_captions/o }
+ &replace_morelinks();
+ if (defined &replace_citations_hook) {&replace_citations_hook if /$bbl_mark/;}
+ else {&replace_bbl_marks if /$bbl_mark/;}
+ if (defined &add_toc_hook) {&add_toc_hook if (/$toc_mark/);}
+ else {&add_toc if (/$toc_mark/);}
+ if (defined &add_childs_hook) {&add_childs_hook if (/$childlinks_on_mark/);}
+ else {&add_childlinks if (/$childlinks_on_mark/);}
+ &remove_child_marks;
+
+ if (defined &replace_cross_references_hook) {&replace_cross_references_hook;}
+ else {&replace_cross_ref_marks if /$cross_ref_mark||$cross_ref_visible_mark/;}
+ if (defined &replace_external_references_hook) {&replace_external_references_hook;}
+ else {&replace_external_ref_marks if /$external_ref_mark/;}
+ if (defined &replace_cite_references_hook) {&replace_cite_references_hook;}
+ else { &replace_cite_marks if /$cite_mark/; }
+ if (defined &replace_user_references) {
+ &replace_user_references if /$user_ref_mark/; }
+
+}
+
+sub add_gls{
+ local($sidx_style, $eidx_style) =('<STRONG>','</STRONG>');
+ if ($INDEX_STYLES) {
+if ($INDEX_STYLES =~/,/) {
+local(@styles) = split(/\s*,\s*/,$INDEX_STYLES);
+ $sidx_style = join('','<', join('><',@styles) ,'>');
+ $eidx_style = join('','</', join('></',reverse(@styles)) ,'>');
+} else {
+ $sidx_style = join('','<', $INDEX_STYLES,'>');
+ $eidx_style = join('','</', $INDEX_STYLES,'>');
+}
+ }
+ &add_real_gls
+}
+
+sub gls_compare{
+ local($x, $y) = @_;
+
+ if ($x eq '' or $y eq '')
+ {
+ if ($x ne '')
+ {
+ # y is the shorter string
+ return 1;
+ }
+ elsif ($y ne '')
+ {
+ # x is the shorter string
+ return -1;
+ }
+ else
+ {
+ # both empty
+ return 0;
+ }
+ }
+
+ local($x0) = '';
+ local($y0) = '';
+
+ #v1.06 added /i for case-insensitive match
+ if ($x=~s/^(&#(?:\d+|x[\da-f]+);)//i)
+ {
+ $x0 = $1;
+ }
+ elsif ($x=~s/^(.)//)
+ {
+ $x0 = $1;
+ }
+
+ if ($y=~s/^(&#(?:\d+|x[\da-f]+);)//i)
+ {
+ $y0 = $1;
+ }
+ elsif ($y=~s/^(.)//)
+ {
+ $y0 = $1;
+ }
+
+ local($numx);
+
+ if ($x0=~/&#(\d+|x[\da-f]+);/i)
+ {
+ $numx = $1;
+
+ $numx = hex("0$numx") if $numx=~/^x/;
+ }
+ else
+ {
+ $numx = ord($x0);
+ }
+
+ local($numy);
+
+ if ($y0=~/&#(\d+|x[\da-f]+);/i)
+ {
+ $numy = $1;
+
+ $numy = hex("0$numy") if $numy=~/^x/;
+ }
+ else
+ {
+ $numy = ord($y0);
+ }
+
+ if ($numx == $numy)
+ {
+ return &gls_compare($x, $y);
+ }
+ elsif ($numx >= 48 and $numx <= 57) # x in range '0' ... '9'
+ {
+ if ($numy >= 48 and $numy <= 57) # y in range '0' ... '9'
+ {
+ return $numx <=> $numy;
+ }
+ elsif (($numy >= 97 and $numy <= 122) or ($numy >= 65 and $numy <= 90)) # y a letter
+ {
+ # digits are less than letters
+ return -1;
+ }
+ else
+ {
+ # digits are greater than symbols
+ return 1;
+ }
+ }
+ elsif (($numx >= 97 and $numx <= 122) or ($numx >= 65 and $numx <= 90)) # x a letter
+ {
+ if (($numy >= 97 and $numy <= 122) or ($numy >= 65 and $numy <= 90)) # y a letter
+ {
+ if (($numx <= 90 and $numy <= 90) or ($numx >= 97 and $numy >= 97))
+ {
+ # same case (already checked if they are equal)
+
+ return $numx <=> $numy;
+ }
+
+ # are they upper/lower case versions of each other?
+
+ if (($numx >= 97 and $numy == $numx-32))
+ {
+ # x is upper case version of y
+
+ if ($x or $y)
+ {
+ return &gls_compare($x, $y);
+ }
+ else
+ {
+ return -1;
+ }
+ }
+
+ if (($numy >= 97 and $numx == $numy-32))
+ {
+ # y is upper case version of x
+
+ if ($x or $y)
+ {
+ return &gls_compare($x, $y);
+ }
+ else
+ {
+ return 1;
+ }
+ }
+
+ # compare lower case values
+ return lc(chr($numx)) cmp lc(chr($numy));
+ }
+ else
+ {
+ # a-z greater than symbols and digits
+ return 1;
+ }
+ }
+ elsif ($numy >= 48 and $numy <= 57) # y in range '0' ... '9'
+ {
+ # already checked for '0' < x < '9' and '0' < y < '9'
+ # already checked for 'a' < x < 'z' and '0' < y < '9'
+
+ # digits greater than symbols
+ return 1;
+ }
+ elsif (($numy >= 97 and $numy <= 122) or ($numy >= 65 and $numy <= 90)) # y is a letter
+ {
+ # already checked for x is digit and y a is letter
+ # already checked for x is letter and y a is letter
+
+ # symbols and digits are less than letters
+
+ return -1;
+ }
+
+ $numx <=> $numy
+}
+
+sub gloskeysort{
+
+ $a=~/^(.*)###(\d+)$/;
+
+ local($labelx) = $1;
+ local($x_id) =$2;
+
+ $b=~/^(.*)###(\d+)$/;
+
+ local($labely) = $1;
+ local($y_id) = $2;
+
+ local($sortx) = &gls_get_sort($labelx);
+ local($sorty) = &gls_get_sort($labely);
+
+ local($n);
+
+ # are they case-insensitive equivalent?
+
+ if (lc($sortx) eq lc($sorty))
+ {
+ $n = ($sortx cmp $sorty);
+ }
+ else
+ {
+ $n = &gls_compare($sortx, $sorty);
+ }
+
+ unless ($n)
+ {
+ $n = ($x_id <=> $y_id);
+ }
+
+ $n
+}
+
+sub add_parent_if_required{
+ local($label) = @_;
+
+ local($parent) = &gls_get_parent($label);
+
+ if ($parent)
+ {
+ local($type) = &gls_get_type($parent);
+
+ # does this parent have a backlink?
+
+ for my $key (keys %{$glossary{$type}})
+ {
+ return if $key=~/^$parent###\d+$/;
+ }
+
+ # none found, so add empty one
+
+ my $id = ++$global{'max_id'};
+
+ $glossary{$type}{"$parent###$id"} = '';
+ $glossary_entry{$type}{"$parent###$id"} = $parent;
+
+ # check if parent also has a parent
+
+ &add_parent_if_required($parent);
+ }
+}
+
+sub add_real_gls{
+ local($type) = @_;
+ print "\nDoing glossary '$type' ...";
+ local($key, $str, @keys, $thisglsentry, $level, $count,
+ $previous, $current, $id, $linktext, $delimN);
+
+ $TITLE = $gls_toctitle{$type};
+
+ local($oldstyle) = $CURRENT_STYLE;
+
+ if ($gls_style{$type})
+ {
+ &set_glossarystyle($gls_style{$type});
+ }
+
+ # add any parent entries that haven't been referenced
+
+ for my $key (keys %{$glossary{$type}})
+ {
+ my $label = $key;
+ $label =~ s/###\d+$//o; # Remove the unique id's
+
+ &add_parent_if_required($label);
+ }
+
+ @keys = keys %{$glossary{$type}};
+
+ @keys = sort gloskeysort @keys;
+
+ $level = 0;
+
+ $delimN = $delimN{$type};
+
+ $previous = '';
+
+ local($previousentry) = '';
+
+ my $glossaryentryfield = '';
+
+ my $previouscat = '';
+
+ local ($entry);
+
+ foreach $key (@keys)
+ {
+ $current = $key;
+ $current =~ s/\#\#\#\d+$//o; # Remove the unique id's
+
+ my $issame = ($current eq $previous ? 1 : 0);
+
+ $previous = $current;
+
+ $entry = $glossary_entry{$type}{$key};
+
+ unless ($issame)
+ {
+ if ($glossaryentryfield)
+ {
+ $id = ++$global{'max_id'};
+
+ my $level = &gls_get_level($previousentry);
+
+ if ($level > 0)
+ {
+ my $id2 = ++$global{'max_id'};
+
+ $thisglsentry .=
+ "\\glossarysubentryfield $OP$id2$CP$level$OP$id2$CP$glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
+ }
+ else
+ {
+ $thisglsentry .=
+ "\\glossaryentryfield $glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
+ }
+
+ $glossaryentryfield = '';
+ }
+
+ $linktext = '';
+
+ my $currentcat = substr(&gls_get_sort($current), 0, 1);
+
+ if ($currentcat=~/[a-zA-Z]/)
+ {
+ $currentcat = uc($currentcat);
+ }
+ elsif ($currentcat=~/[0-9]/)
+ {
+ $currentcat = 'glsnumbers';
+ }
+ else
+ {
+ $currentcat = 'glssymbols';
+ }
+
+ unless ($previouscat eq $currentcat)
+ {
+ $id = ++$global{'max_id'};
+ $thisglsentry .= "\\glsgroupheading$OP$id$CP$currentcat$OP$id$CP";
+
+ $previouscat = $currentcat;
+ }
+ }
+
+ $previousentry = $entry;
+
+ # Back ref
+
+ if ($gls_nonumberlist{$type})
+ {
+ $linktext = '';
+ }
+ elsif ($glossary{$type}{$key})
+ {
+ $id = ++$global{'max_id'};
+
+ $linktext .= $delimN if ($linktext);
+
+ $linktext .= "$glossary{$type}{$key}\\$glossary_format{$type}{$key}${OP}$id${CP}$glossary_linktext{$type}{$key}${OP}$id${CP}</A>";
+
+ }
+
+ unless ($issame)
+ {
+ $id = ++$global{'max_id'};
+ local($name) = &translate_commands(
+ "\\glsnamefont $OP$id$CP$glsentry{$entry}{name}$OP$id$CP");
+
+ local($symbol) = ($glsentry{$entry}{'symbol'} ?
+ " $glsentry{$entry}{symbol}" : '');
+
+ $id = ++$global{'max_id'};
+ my $id2 = ++$global{'max_id'};
+ my $id3 = ++$global{'max_id'};
+ my $id4 = ++$global{'max_id'};
+
+ $glossaryentryfield = "$OP$id$CP$entry$OP$id$CP" # label
+ . "$OP$id2$CP$name$OP$id2$CP" # name
+ . "$OP$id3$CP$glsentry{$entry}{description}$OP$id3$CP" # description
+ . "$OP$id4$CP$symbol$OP$id4$CP" # symbol
+ }
+
+ }
+
+ if ($glossaryentryfield and $entry)
+ {
+ my $level = &gls_get_level($entry);
+
+ if ($level > 0)
+ {
+ my $id2 = ++$global{'max_id'};
+
+ $thisglsentry .=
+ "\\glossarysubentryfield $OP$id2$CP$level$OP$id2$CP$glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
+ }
+ else
+ {
+ $id = ++$global{'max_id'};
+ $thisglsentry .=
+ "\\glossaryentryfield $glossaryentryfield$OP$id$CP$linktext$OP$id$CP";
+ }
+ }
+
+ $str = &do_env_theglossary($thisglsentry) . &translate_commands("\\glossarypostamble");
+
+ if ($gls_style{$type})
+ {
+ &set_glossarystyle($oldstyle);
+ }
+
+ s/$gls_mark{$type}/$preglossary\n$str\n/s;
+}
+
+sub do_cmd_glstarget{
+ local($_) = @_;
+
+ local($id, $label, $text);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$label=$2;''/eo;
+
+ $text = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$text=$2;''/eo;
+
+ "<A NAME=\"gls:$label\">$text</A>$_";
+}
+
+sub do_cmd_newglossarystyle{
+ local($_) = @_;
+
+ local($id,$style,$defs);
+
+ $style = &missing_braces unless
+ s/$next_pair_rx/$id=$1;$style=$2;''/eo;
+
+ $defs = &missing_braces unless
+ s/$next_pair_rx/$id=$1;$defs=$2;''/eo;
+
+ $glossary_style{$style} = $defs;
+
+ $_;
+}
+
+sub do_cmd_glossarystyle{
+ local($_) = @_;
+
+ local($id,$style);
+
+ $style = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$style=$2;''/eo;
+
+ &set_glossarystyle($style);
+
+ $_;
+}
+
+sub set_glossarystyle{
+ local($style) = @_;
+
+ $CURRENT_STYLE = $style;
+
+ if ($glossary_style{$style})
+ {
+ local($_) = $glossary_style{$style};
+
+ s/$O(\d+)$C/$OP$1$CP/g;
+
+ &translate_commands($_);
+ }
+ else
+ {
+ my $cmd_sub = "set_glossarystyle_$style";
+
+ if (defined(&$cmd_sub))
+ {
+ &$cmd_sub();
+ }
+ else
+ {
+ &write_warnings("Unknown glossary style '$style', defaulting to 'altlist'");
+ &set_glossarystyle_altlist();
+
+ $CURRENT_STYLE = 'altlist';
+ }
+ }
+
+}
+
+sub do_cmd_glspar{ "<P>".$_[0]; }
+
+sub do_cmd_glossaryheader{
+ local($_) = @_;
+ $_
+}
+
+sub do_cmd_glsentryitem{
+ local($_) = @_;
+
+ local($id, $label);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$label=$2;''/eo;
+
+ $_
+}
+
+sub do_cmd_glssubentryitem{
+ local($_) = @_;
+
+ local($id, $label);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$label=$2;''/eo;
+
+ $_
+}
+
+sub do_cmd_glsgroupheading{
+ local($_) = @_;
+
+ local($id, $heading);
+
+ $heading = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$heading=$2;''/eo;
+
+ $_;
+}
+
+sub do_cmd_glossaryentryfield{
+ local($_) = @_;
+
+ local($id, $label, $name, $desc, $symbol, $backlink);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$name=$2;''/eo;
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$symbol=$2;''/eo;
+
+ $backlink = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$backlink=$2;''/eo;
+
+ local($id2) = ++$global{'max_id'};
+
+ "\\glstarget $OP$id$CP$label$OP$id$CP$OP$id2$CP$name$OP$id2$CP\n$desc $backlink\n$_";
+}
+
+sub do_cmd_glossarysubentryfield{
+ local($_) = @_;
+
+ local($id, $level, $label, $name, $desc, $symbol, $backlink);
+
+ $level = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$level=$2;''/eo;
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$name=$2;''/eo;
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$symbol=$2;''/eo;
+
+ $backlink = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$backlink=$2;''/eo;
+
+ local($id2) = ++$global{'max_id'};
+
+ "\\glstarget $OP$id$CP$label$OP$id$CP$OP$id2$CP$name$OP$id2$CP\n$desc $backlink\n$_";
+}
+
+sub do_env_theglossary{
+ local($_) = @_;
+
+ &translate_commands($_);
+}
+
+sub set_glossarystyle_altlist{
+ eval(<<'END_STYLE');
+ sub do_cmd_glossaryheader{
+ local($_) = @_;
+ $_
+ }
+
+ sub do_cmd_glsgroupheading{
+ local($_) = @_;
+
+ local($id, $heading);
+
+ $heading = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$heading=$2;''/eo;
+
+ $_
+ }
+
+ sub do_cmd_glossaryentryfield{
+ local($_) = @_;
+
+ local($id, $id2, $id3, $id4, $id5, $label, $name, $desc, $symbol, $backlink);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id2=$1;$name=$2;''/eo;
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id3=$1;$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id4=$1;$symbol=$2;''/eo;
+
+ $backlink = &missing_braces unless
+ s/$next_pair_pr_rx/$id5=$1;$backlink=$2;''/eo;
+
+ "<DT>\\glstarget $OP$id$CP$label$OP$id$CP$OP$id2$CP$name$OP$id2$CP\n<DD>"
+ . "$desc\\glspostdescription\\space $backlink$_";
+ }
+
+ sub do_cmd_glossarysubentryfield{
+ local($_) = @_;
+
+ local($id, $id2, $id3, $id4, $id5, $id6, $level,
+ $label, $name, $desc, $symbol, $backlink);
+
+ $level = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$level=$2;''/eo;
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id2=$1;$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id3=$1;$name=$2;''/eo;
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id4=$1;$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id5=$1;$symbol=$2;''/eo;
+
+ $backlink = &missing_braces unless
+ s/$next_pair_pr_rx/$id6=$1;$backlink=$2;''/eo;
+
+ "<P>\\glssubentryitem $OP$id$CP$label$OP$id$CP"
+ ."\\glstarget $OP$id2$CP$label$OP$id2$CP$OP$id3$CP$name$OP$id3$CP"
+ ."$desc\\glspostdescription\\space $backlink\n$_";
+ }
+
+ sub do_env_theglossary{
+ local($_) = @_;
+
+ "<DL>".&translate_commands("\\glossaryheader $_")."</DL>";
+ }
+END_STYLE
+}
+
+sub set_glossarystyle_inline{
+ eval(<<'END_STYLE');
+ sub do_cmd_glossaryheader{
+ local($_) = @_;
+ $_
+ }
+
+ sub do_cmd_glsgroupheading{
+ local($_) = @_;
+
+ local($id, $heading);
+
+ $heading = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$heading=$2;''/eo;
+
+ $_;
+ }
+
+ sub do_cmd_glossaryentryfield{
+ local($_) = @_;
+
+ local($id, $id2, $id3, $id4, $id5, $label, $name, $desc, $symbol, $backlink);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id2=$1;$name=$2;''/eo;
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id3=$1;$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id4=$1;$symbol=$2;''/eo;
+
+ $backlink = &missing_braces unless
+ s/$next_pair_pr_rx/$id5=$1;$backlink=$2;''/eo;
+
+ local($field) = "\\glsinlinedopostchild $glsinlinesep";
+
+ $field .= "\\glsentryitem $OP$id$CP$label$OP$id$CP"
+ . "\\glsinlinenameformat $OP$id2$CP$label$OP$id2$CP$OP$id3$CP$name$OP$id3$CP";
+
+ $id3 = ++$global{'max_id'};
+
+ if ($desc)
+ {
+ $field .=
+ "\\glsinlinedescformat $OP$id3$CP$desc$OP$id3$CP"
+ ."$OP$id4$CP$symbol$OP$id4$CP"
+ ."$OP$id5$CP$backlink$OP$id5$CP";
+ }
+ else
+ {
+ $field .=
+ "\\glsinlineemptydescformat "
+ ."$OP$id4$CP$symbol$OP$id4$CP"
+ ."$OP$id5$CP$backlink$OP$id5$CP";
+ }
+
+# TODO : check if has children
+
+ local($haschildren) = 0;
+
+ if ($haschildren)
+ {
+ $field .= "\\glsresetsubentrycounter "
+ . "\\glsinlineparentchildseparator "
+ . "\\glsinlinepostchild ";
+ }
+
+ $glsinlinesep = &translate_commands("\\glsinlineseparator ")
+ unless $glsinlinesep;
+
+ $field.$_;
+ }
+
+ sub do_cmd_glossarysubentryfield{
+ local($_) = @_;
+
+ local($id, $id2, $id3, $id4,$id5,$id6,$level,
+ $label, $name, $desc, $symbol, $backlink);
+
+ $level = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1;$level=$2;''/eo;
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id2=$1;$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id3=$1;$name=$2;''/eo;
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id4=$1;$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id5=$1;$symbol=$2;''/eo;
+
+ $backlink = &missing_braces unless
+ s/$next_pair_pr_rx/$id6=$1;$backlink=$2;''/eo;
+
+ "\\glsinlinesubnameformat $OP$id$CP$label$OP$id$CP$OP$id2$CP$name$OP$id2$CP"
+ ."\\glssubentryitem $OP$id3$CP$label$OP$id3$CP"
+ ."\\glsinlinesubdescformat $OP$id4$CP$desc$OP$id4$CP$OP$id5$CP$symbol$OP$id5$CP$OP$id6$CP$backlink$OP$id6$CP"
+ .$_;
+ }
+
+ sub do_env_theglossary{
+ local($_) = @_;
+
+ $glsinlinesep = '';
+
+ &translate_commands("\\glossaryheader $_\\glspostinline ");
+ }
+END_STYLE
+}
+
+local($glsinlinesep,$glsinlinepostchild);
+
+sub do_cmd_glsinlineseparator{
+ local($_) = @_;
+
+ "; $_";
+}
+
+sub do_cmd_glsinlinedopostchild{
+ local($_) = @_;
+
+ $_;
+}
+
+sub do_cmd_glspostdescription{
+ local($_) = @_;
+
+ $GLOSSARY_END_DESCRIPTION.$_;
+}
+
+sub do_cmd_glspostinline{
+ local($_) = @_;
+
+ &translate_commands("\\glspostdescription\\space ").$_;
+}
+
+sub do_cmd_glsinlinepostchild{
+ local($_) = @_;
+
+ $_;
+}
+
+sub do_cmd_glsinlineparentchildseparator{
+ local($_) = @_;
+
+ ": $_";
+}
+
+sub do_cmd_glsinlinesubseparator{
+ local($_) = @_;
+
+ ", $_";
+}
+
+sub do_cmd_glsinlinenameformat{
+ &do_cmd_glstarget(@_);
+}
+
+sub do_cmd_glsinlinedescformat{
+ local($_) = @_;
+
+ local($id, $desc, $symbol, $backlinks);
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$symbol=$2;''/eo;
+
+ $backlinks = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$backlinks=$2;''/eo;
+
+ "\\space $desc$_";
+}
+
+sub do_cmd_glsinlineemptydescformat{
+ local($_) = @_;
+
+ local($id, $symbol, $backlinks);
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$symbol=$2;''/eo;
+
+ $backlinks = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$backlinks=$2;''/eo;
+
+ $_;
+}
+
+sub do_cmd_glsinlinesubnameformat{
+ local($_) = @_;
+
+ local($id, $id2, $label, $name);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$label=$2;''/eo;
+
+ $name = &missing_braces unless
+ s/$next_pair_pr_rx/$id2=$1,$name=$2;''/eo;
+
+ "\\glstarget $OP$id$CP$label$OP$id$CP$OP$id2$CP$OP$id2$CP$_";
+}
+
+sub do_cmd_glsinlinesubdescformat{
+ local($_) = @_;
+
+ local($id, $desc, $symbol, $backlinks);
+
+ $desc = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$desc=$2;''/eo;
+
+ $symbol = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$symbol=$2;''/eo;
+
+ $backlinks = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$backlinks=$2;''/eo;
+
+ "$desc$_";
+}
+
+sub set_depth_levels {
+ # Sets $outermost_level
+ local($level);
+ # scan the document body, not the preamble, for use of sectioning commands
+ my ($contents) = $_;
+ if ($contents =~ /\\begin\s*((?:$O|$OP)\d+(?:$C|$CP))document\1|\\startdocument/s) {
+$contents = $';
+ }
+ foreach $level ("part", "chapter", "section", "subsection",
+ "subsubsection", "paragraph") {
+last if (($outermost_level) = $contents =~ /\\($level)$delimiter_rx/);
+last if (($outermost_level) = $contents =~ /\\endsegment\s*\[\s*($level)\s*\]/s);
+if ($contents =~ /\\segment\s*($O\d+$C)[^<]+\1\s*($O\d+$C)\s*($level)\s*\2/s)
+{ $outermost_level = $3; last };
+ }
+ $level = ($outermost_level ? $section_commands{$outermost_level} :
+ do {$outermost_level = 'section'; 3;});
+
+ if ($REL_DEPTH && $MAX_SPLIT_DEPTH) {
+$MAX_SPLIT_DEPTH = $level + $MAX_SPLIT_DEPTH;
+ } elsif (!($MAX_SPLIT_DEPTH)) { $MAX_SPLIT_DEPTH = 1 };
+
+ %unnumbered_section_commands = (
+ 'tableofcontents', $level
+, 'listoffigures', $level
+, 'listoftables', $level
+, 'bibliography', $level
+, 'textohtmlindex', $level
+, 'textohtmlglossary', $level
+, 'textohtmlglossaries', $level
+ , %unnumbered_section_commands
+ );
+
+ %section_commands = (
+ %unnumbered_section_commands
+ , %section_commands
+ );
+}
+
+sub add_bbl_and_idx_dummy_commands {
+ local($id) = $global{'max_id'};
+
+ s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg;
+ ## if ($bbl_cnt == 1) {
+s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo;
+ #}
+ $global{'max_id'} = $id;
+ s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o;
+ s/[\\]printindex/\\textohtmlindex /o;
+ &add_gls_dummy_commands;
+ &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands);
+}
+
+sub add_gls_dummy_commands{
+ s/[\\]printglossary/\\textohtmlglossary/sg;
+ s/[\\]printglossaries/\\textohtmlglossaries/sg;
+}
+
+sub get_firstkeyval{
+ local($key,$_) = @_;
+ local($value);
+
+ s/\b$key\s*=$OP(\d+)$CP(.*)$OP\1$CP\s*(,|$)/$value=$2;','/es;
+ undef($value) if $`=~/\b$key\s*=/;
+
+ unless (defined($value))
+ {
+ s/(^|,)\s*$key\s*=\s*([^,]*)\s*(,|$)/,/s;
+ $value=$2;
+ }
+
+ ($value,$_);
+}
+
+# need to get the value of the last key of a given name
+# in the event of multiple occurrences.
+sub get_keyval{
+ local($key,$_) = @_;
+ local($value);
+
+ while (/\b$key\s*=/g)
+ {
+ ($value,$_) = &get_firstkeyval($key, $_);
+ last unless defined($value);
+ }
+
+ ($value,$_);
+}
+
+sub get_boolval{
+ local($key,$_) = @_;
+ local($value);
+
+ while (/\b$key\s*(?:=(true|false))?\b/g)
+ {
+ $value = ($1 ? $1 : 'true');
+ }
+
+ ($value eq 'true' ? 1 : 0, $_);
+}
+
+# This is modified from do_cmd_textohtmlindex
+
+sub do_cmd_textohtmlglossary{
+ local($_) = @_;
+
+ local($keyval,$pat) = &get_next_optional_argument;
+
+ local($type,$title,$toctitle,$style,$nonumberlist);
+
+ $nonumberlist = 'default';
+
+ ($type,$keyval) = &get_keyval('type', $keyval);
+ ($title,$keyval) = &get_keyval('title', $keyval);
+ ($toctitle,$keyval) = &get_keyval('toctitle', $keyval);
+ ($style,$keyval) = &get_keyval('style', $keyval);
+ ($nonumberlist,$keyval) = &get_boolval('nonumberlist', $keyval);
+
+ &make_textohtmlglossary($type,$toctitle,$title,$style,$nonumberlist).$_;
+}
+
+# add_real_gls does the actual glossary
+sub make_textohtmlglossary{
+ local($type,$toctitle,$title,$style,$nonumberlist) = @_;
+
+ unless (defined($type)) {$type = 'main';}
+
+ unless (defined $gls_mark{$type})
+ {
+ &write_warnings("glossary type '$type' not implemented");
+ }
+
+ if ($style)
+ {
+ $gls_style{$type} = $style;
+ }
+
+ $toctitle = $gls_toctitle{$type} unless ($toctitle or $title);
+
+ $title = $gls_title{$type} unless ($title);
+ $toctitle = $title unless ($toctitle);
+
+ $gls_toctitle{$type} = $toctitle;
+
+ $gls_nonumberlist{$type} = $nonumberlist unless ($nonumberlist eq 'default');
+
+ $toc_sec_title = $toctitle;
+ $glsfile{$type} = $CURRENT_FILE;
+
+ if (defined($frame_main_suffix))
+ {
+ $glsfile{$type}=~s/$frame_main_suffix/$frame_body_suffix/;
+ }
+
+ $TITLE=&translate_commands($toctitle);
+
+ if (%glossary_labels) { &make_glossary_labels(); }
+
+ if (($SHORT_INDEX) && (%glossary_segment))
+ {
+ &make_preglossary();
+ }
+ else
+ {
+ $preglossary = &translate_commands("\\glossarypreamble");
+ }
+
+ local $idx_head = $section_headings{'textohtmlindex'};
+ local($heading) = join(''
+ , &make_section_heading($title, $idx_head)
+ , $gls_mark{$type} );
+ local($pre,$post) = &minimize_open_tags($heading);
+
+ join('',"<BR>\n" , $pre);
+}
+
+sub do_cmd_textohtmlglossaries{
+ local($_) = @_;
+
+ foreach $type (keys %gls_mark)
+ {
+ $id = ++$global{'max_id'};
+ $_ = &make_textohtmlglossary($type,$gls_title{'main'}).$_;
+ }
+
+ $_;
+}
+
+sub make_glossary_labels {
+ local($key, @keys);
+ @keys = keys %glossary_labels;
+ foreach $key (@keys) {
+ if (($ref_files{$key}) && !($ref_files{$key} eq "$glsfile{'main'}")) {
+ local($tmp) = $ref_files{$key};
+ &write_warnings("\nmultiple label $key , target in $glsfile{'main'} masks $tmp ");
+ }
+ $ref_files{$key} .= $glsfile{'main'};
+ }
+}
+
+sub make_preglossary{ &make_real_preglossary }
+sub make_real_preglossary{
+ local($key, @keys, $head, $body);
+ $head = "<HR>\n<H4>Legend:</H4>\n<DL COMPACT>";
+ @keys = keys %glossary_segment;
+ foreach $key (@keys) {
+ local($tmp) = "segment$key";
+ $tmp = $ref_files{$tmp};
+ $body .= "\n<DT>$key<DD>".&make_named_href('',$tmp,$glossary_segment{$key});
+ }
+ $preglossary = join('', $head, $body, "\n</DL>") if ($body);
+}
+
+sub do_cmd_glossary { &do_real_glossary(@_) }
+sub do_real_glossary {
+ local($_) = @_;
+ local($type) = "main";
+ local($anchor,$entry);
+
+ local($type,$pat) = &get_next_optional_argument;
+
+ $entry = &missing_braces unless
+ (s/$next_pair_pr_rx//o&&($entry=$2));
+
+ $anchor = &make_glossary_entry($entry,$anchor_invisible_mark,$type);
+
+ join('', $anchor, $_);
+}
+
+sub make_glossary_entry { &make_real_glossary_entry(@_) }
+sub make_real_glossary_entry {
+ local($entry,$text,$type) = @_;
+ local($this_file) = $CURRENT_FILE;
+
+ $TITLE = $saved_title
+ if (($saved_title)&&(!($TITLE)||($TITLE eq $default_title)));
+
+ # Save the reference
+ local($str) = "$label###" . ++$global{'max_id'}; # Make unique
+
+ local($id) = ++$glsentry{$entry}{'maxid'};
+ local($glsanchor)="gls:$entry$id";
+
+ local($target) = $frame_body_name;
+
+ if (defined($frame_main_suffix))
+ {
+ $this_file=~s/$frame_main_suffix/$frame_body_suffix/;
+ }
+
+ $glossary{$type}{$str} .= &make_half_href($this_file."#$glsanchor");
+ $glossary_format{$type}{$str} = $GLSCURRENTFORMAT;
+ $glossary_entry{$type}{$str} = $entry;
+ $glossary_linktext{$type}{$str} = $TITLE;
+
+ local($mark) = $gls_file_mark{$type};
+
+ $mark = &get_gls_file_mark($type, $entry) if (defined(&get_gls_file_mark));
+
+ $text = &translate_commands($text);
+
+ if (defined($frame_foot_name))
+ {
+ "<A HREF=\"$mark#gls:$entry\" NAME=\"$glsanchor\" TARGET=\"$frame_foot_name\">$text<\/A>";
+ }
+ else
+ {
+ "<A HREF=\"$mark#gls:$entry\" NAME=\"$glsanchor\">$text<\/A>";
+ }
+}
+
+sub make_real_glossary_entry_no_backlink {
+ local($entry,$text,$type) = @_;
+ local($this_file) = $CURRENT_FILE;
+
+ local($target) = $frame_body_name;
+
+ if (defined($frame_main_suffix))
+ {
+ $this_file=~s/$frame_main_suffix/$frame_body_suffix/;
+ }
+
+ local($mark) = $gls_file_mark{$type};
+
+ $mark = &get_gls_file_mark($type, $entry) if (defined(&get_gls_file_mark));
+
+ $text = &translate_commands($text);
+
+ if (defined($frame_foot_name))
+ {
+ "<A HREF=\"$mark#gls:$entry\" NAME=\"$glsanchor\" TARGET=\"$frame_foot_name\">$text<\/A>";
+ }
+ else
+ {
+ "<A HREF=\"$mark#gls:$entry\" >$text<\/A>";
+ }
+}
+
+sub do_cmd_newglossary{
+ local($_) = @_;
+ local($type,$out,$in,$opt,$pat,$title);
+
+ ($opt,$pat) = &get_next_optional_argument;
+
+ $type = &missing_braces unless
+ (s/$next_pair_pr_rx//o&&($type=$2));
+ $in = &missing_braces unless
+ (s/$next_pair_pr_rx//o&&($in=$2));
+ $out = &missing_braces unless
+ (s/$next_pair_pr_rx//o&&($out=$2));
+ $title = &missing_braces unless
+ (s/$next_pair_pr_rx//o&&($title=$2));
+
+ ($opt,$pat) = &get_next_optional_argument;
+
+ &make_newglossarytype($type, $title);
+
+ $_;
+}
+
+sub make_newglossarytype{
+ local($type, $title) = @_;
+
+ $gls_mark{$type} = "<tex2html_gls_${type}_mark>";
+ $gls_file_mark{$type} = "<tex2html_gls_${type}_file_mark>";
+ $gls_title{$type} = $title;
+ $gls_toctitle{$type} = $title;
+ $delimN{$type} = ", ";
+ $glsnumformat{$type} = $GLSCURRENTFORMAT;
+ @{$gls_entries{$type}} = ();
+ $gls_displayfirst{$type} = "glsdisplayfirst";
+ $gls_display{$type} = "glsdisplay";
+ $gls_nonumberlist{$type} = $gls_nonumberlist{'main'};
+}
+
+sub do_cmd_glsdisplay{
+ local($_) = @_;
+ local($text,$description,$symbol,$insert);
+
+ $text = &missing_braces unless
+ (s/$next_pair_pr_rx/$text=$2;''/eo);
+
+ $description = &missing_braces unless
+ (s/$next_pair_pr_rx/$description=$2;''/eo);
+
+ $symbol = &missing_braces unless
+ (s/$next_pair_pr_rx/$symbol=$2;''/eo);
+
+ $insert = &missing_braces unless
+ (s/$next_pair_pr_rx/$insert=$2;''/eo);
+
+ "$text$insert" . $_;
+}
+
+sub do_cmd_glsdisplayfirst{
+ local($_) = @_;
+ local($text,$description,$symbol,$insert);
+
+ $text = &missing_braces unless
+ (s/$next_pair_pr_rx/$text=$2;''/eo);
+
+ $description = &missing_braces unless
+ (s/$next_pair_pr_rx/$description=$2;''/eo);
+
+ $symbol = &missing_braces unless
+ (s/$next_pair_pr_rx/$symbol=$2;''/eo);
+
+ $insert = &missing_braces unless
+ (s/$next_pair_pr_rx/$insert=$2;''/eo);
+
+ "$text$insert" . $_;
+}
+
+sub gls_get_displayfirst{
+ local($type) = @_;
+ local($display)= $gls_displayfirst{$type};
+
+ if (not defined($display))
+ {
+ &write_warnings("Glossary '$type' is not defined");
+ $display='';
+ }
+ elsif ($display eq '')
+ {
+ &write_warnings("glsdisplayfirst not set for glossary '$type'");
+ }
+ else
+ {
+ $display = "\\$display ";
+ }
+
+ $display;
+}
+
+sub gls_get_display{
+ local($type) = @_;
+ local($display)= $gls_display{$type};
+
+ if (not defined($display))
+ {
+ &write_warnings("Glossary '$type' is not defined");
+ $display = '';
+ }
+ elsif ($display eq '')
+ {
+ &write_warnings("glsdisplay not set for glossary '$type'");
+ }
+ else
+ {
+ $display = "\\$display ";
+ }
+
+ $display;
+}
+
+sub do_cmd_glsnamefont{
+ local($_) = @_;
+ local($text);
+
+ $text = &missing_braces unless
+ (s/$next_pair_pr_rx/$text=$2;''/eo);
+
+ "<B>$text</B>$_";
+}
+
+sub do_cmd_newacronym{
+ local($_) = @_;
+ local($label,$abbrev,$long,$opt,$shortplural,$longplural);
+
+ ($opt,$pat) = &get_next_optional_argument;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+ $abbrv = &missing_braces unless
+ (s/$next_pair_pr_rx/$abbrv=$2;''/eo);
+ $long = &missing_braces unless
+ (s/$next_pair_pr_rx/$long=$2;''/eo);
+
+ ($longplural,$opt) = &get_keyval('longplural', $opt);
+ ($shortplural,$opt) = &get_keyval('shortplural', $opt);
+
+ $longplural = $long.'s' unless ($longplural);
+ $shortplural = $abbrv.'s' unless ($shortplural);
+
+ local($cmd) = "\\newglossaryentry";
+ local($id);
+ $id = ++$global{'max_id'};
+ $cmd .= "$OP$id$CP$label$OP$id$CP";
+ $id = ++$global{'max_id'};
+ local($entry) = "type=$OP$id$CP\\acronymtype$OP$id$CP,";
+ $id = ++$global{'max_id'};
+ $entry .= "name=$OP$id$CP$abbrv$OP$id$CP,";
+ $id = ++$global{'max_id'};
+ $entry .= "description=$OP$id$CP$long$OP$id$CP,";
+ $id = ++$global{'max_id'};
+ $entry .= "text=$OP$id$CP$abbrv$OP$id$CP,";
+ $id = ++$global{'max_id'};
+ $entry .= "first=$OP$id$CP$long ($abbrv)$OP$id$CP,";
+ $id = ++$global{'max_id'};
+ $entry .= "plural=$OP$id$CP$shortplural$OP$id$CP,";
+ $id = ++$global{'max_id'};
+ $entry .= "firstplural=$OP$id$CP$longplural ($shortplural)$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $cmd .= "$OP$id$CP$entry,$opt$OP$id$CP";
+
+ &translate_commands($cmd).$_;
+}
+
+sub gls_entry_init{
+ local($label, $type, $name, $desc) = @_;
+
+ %{$glsentry{$label}} =
+ ( type => $type,
+ name => $name,
+ 'sort' => $name,
+ description => $desc,
+ text => $name,
+ first => $name,
+ plural => "${name}s",
+ firstplural => "${name}s",
+ symbol => '',
+ flag => 0,
+ maxid => 0,
+ level => 0,
+ parent => ''
+ );
+
+ $#{@{$glsentry{$label}{children}}} = -1;
+
+ $glsentry{$label};
+}
+
+sub gls_get_type{
+ local($label) = @_;
+ local($type) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $type = $glsentry{$label}{'type'};
+ }
+ else
+ {
+ &write_warnings("gls_get_type: glossary entry '$label' has not been defined");
+ }
+
+ $type;
+}
+
+sub gls_set_type{
+ local($label, $type) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'type'} = $type;
+ }
+ else
+ {
+ &write_warnings("gls_set_type: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_name{
+ local($label) = @_;
+ local($name) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $name = $glsentry{$label}{'name'};
+ }
+ else
+ {
+ &write_warnings("gls_get_name: glossary entry '$label' has not been defined");
+ }
+
+ $name;
+}
+
+sub gls_set_name{
+ local($label, $name) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'name'} = $name;
+ }
+ else
+ {
+ &write_warnings("gls_set_name: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_description{
+ local($label) = @_;
+ local($description) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $description = $glsentry{$label}{'description'};
+ }
+ else
+ {
+ &write_warnings("gls_get_description: glossary entry '$label' has not been defined");
+ }
+
+ $description;
+}
+
+sub gls_set_description{
+ local($label, $description) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'description'} = $description;
+ }
+ else
+ {
+ &write_warnings("gls_set_description: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_symbol{
+ local($label) = @_;
+ local($symbol) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $symbol = $glsentry{$label}{'symbol'};
+ }
+ else
+ {
+ &write_warnings("gls_get_symbol: glossary entry '$label' has not been defined");
+ }
+
+ $symbol;
+}
+
+sub gls_set_symbol{
+ local($label, $symbol) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'symbol'} = $symbol;
+ }
+ else
+ {
+ &write_warnings("gls_set_symbol: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_sort{
+ local($label) = @_;
+ local($sort) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $sort = $glsentry{$label}{'sort'};
+ }
+ else
+ {
+ &write_warnings("gls_get_sort: glossary entry '$label' has not been defined");
+ }
+
+ $sort;
+}
+
+sub gls_set_sort{
+ local($label, $sort) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'sort'} = $sort;
+ }
+ else
+ {
+ &write_warnings("gls_set_sort: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_text{
+ local($label) = @_;
+ local($text) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $text = $glsentry{$label}{'text'};
+ }
+ else
+ {
+ &write_warnings("gls_get_text: glossary entry '$label' has not been defined");
+ }
+
+ $text;
+}
+
+sub gls_set_text{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'text'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_text: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_plural{
+ local($label) = @_;
+ local($plural) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $plural = $glsentry{$label}{'plural'};
+ }
+ else
+ {
+ &write_warnings("gls_get_plural: glossary entry '$label' has not been defined");
+ }
+
+ $plural;
+}
+
+sub gls_set_plural{
+ local($label, $plural) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'plural'} = $plural;
+ }
+ else
+ {
+ &write_warnings("gls_set_plural: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_firstplural{
+ local($label) = @_;
+ local($firstplural) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $firstplural = $glsentry{$label}{'firstplural'};
+ }
+ else
+ {
+ &write_warnings("gls_get_firstplural: glossary entry '$label' has not been defined");
+ }
+
+ $firstplural;
+}
+
+sub gls_set_firstplural{
+ local($label, $firstplural) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'firstplural'} = $firstplural;
+ }
+ else
+ {
+ &write_warnings("gls_set_firstplural: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_first{
+ local($label) = @_;
+ local($first) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $first = $glsentry{$label}{'first'};
+ }
+ else
+ {
+ &write_warnings("gls_get_first: glossary entry '$label' has not been defined");
+ }
+
+ $first;
+}
+
+sub gls_set_first{
+ local($label, $first) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'first'} = $first;
+ }
+ else
+ {
+ &write_warnings("gls_set_first: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_parent{
+ local($label) = @_;
+
+ local($parent);
+
+ if (&gls_entry_defined($label))
+ {
+ $parent = $glsentry{$label}{'parent'};
+ }
+ else
+ {
+ &write_warnings("gls_get_parent: glossary entry '$label' has not been defined");
+ }
+
+ $parent;
+}
+
+sub gls_get_level{
+ local($label) = @_;
+
+ local($level) = 0;
+
+ if (&gls_entry_defined($label))
+ {
+ $level = $glsentry{$label}{'level'};
+ }
+ else
+ {
+ &write_warnings("gls_get_level: glossary entry '$label' has not been defined");
+ }
+
+ $level;
+}
+
+sub gls_set_parent{
+ local ($label, $parent) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ if ($parent)
+ {
+ if (&gls_entry_defined($parent))
+ {
+ $glsentry{$label}{'parent'} = $parent;
+
+ push @{$glsentry{$parent}{'children'}}, $label;
+
+ $glsentry{$label}{'level'} = $glsentry{$parent}{'level'}+1;
+ }
+ else
+ {
+ &write_warnings("gls_set_parent: parent '$parent' for glossary entry '$label' has not been defined");
+ }
+ }
+ else
+ {
+ $glsentry{$label}{'parent'} = '';
+ }
+ }
+ else
+ {
+ &write_warnings("gls_set_parent: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_childcount{
+ my($label) = @_;
+
+ my($count) = 0;
+
+ if (&gls_entry_defined($label))
+ {
+ $count = scalar(@{$glsentry{$label}{'children'}});
+ }
+ else
+ {
+ &write_warnings("gls_get_childcount: glossary entry '$label' has not been defined");
+ }
+
+ $count;
+}
+
+sub gls_get_referenced_childcount{
+ my($label) = @_;
+
+ my($count) = 0;
+
+ if (&gls_entry_defined($label))
+ {
+ $count = scalar(grep(($glsentry{$_}{'maxid'} > 0), @{$glsentry{$label}{'children'}}));
+ }
+ else
+ {
+ &write_warnings("gls_get_childcount: glossary entry '$label' has not been defined");
+ }
+
+ $count;
+}
+
+sub gls_set_userkeys{
+ local($label, @user) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ for (my $idx = 0; $idx < 6; $idx++)
+ {
+ $glsentry{$label}{"user".($idx+1)} = $user[$idx];
+ }
+ }
+ else
+ {
+ &write_warnings("gls_set_user: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_user{
+ local($label, $idx, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{"user$idx"} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_user: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_useri{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'user1'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_useri: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_userii{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'user2'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_userii: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_useriii{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'user3'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_useriii: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_useriv{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'user4'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_useriv: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_userv{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'user5'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_userv: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_set_uservi{
+ local($label, $text) = @_;
+
+ if (&gls_entry_defined($label))
+ {
+ $glsentry{$label}{'user6'} = $text;
+ }
+ else
+ {
+ &write_warnings("gls_set_uservi: glossary entry '$label' has not been defined");
+ }
+}
+
+sub gls_get_user{
+ local($label, $idx) = @_;
+ local($value) = '';
+
+ if (&gls_entry_defined($label))
+ {
+ $value = $glsentry{$label}{"user".$idx};
+ }
+ else
+ {
+ &write_warnings("gls_get_user[$idx]: glossary entry '$label' has not been defined");
+ }
+
+ $value;
+}
+
+sub gls_used{
+ local($label) = @_;
+ local($flag) = 0;
+
+ if (&gls_entry_defined($label))
+ {
+ $flag = $glsentry{$label}{'flag'};
+ }
+ else
+ {
+ &write_warnings("gls_used: glossary entry '$label' has not been defined");
+ }
+
+ $flag;
+}
+
+sub gls_entry_defined{
+ local($label) = @_;
+
+ (%{$glsentry{$label}}) ? 1 : 0;
+}
+
+sub do_cmd_newglossaryentry{
+ local($_) = @_;
+ local($label,$name,$description,$symbol,$sort,$text,$first,
+ $plural,$firstplural,$type,$keyval,$parent,@user);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$label=$2;''/eo;
+
+ $keyval = &missing_braces unless
+ s/$next_pair_pr_rx/$keyval=$2;''/eo;
+
+ ($name,$keyval) = &get_keyval('name', $keyval);
+ ($description,$keyval) = &get_keyval('description', $keyval);
+ ($symbol,$keyval) = &get_keyval('symbol', $keyval);
+ ($sort,$keyval) = &get_keyval('sort', $keyval);
+ ($text,$keyval) = &get_keyval('text', $keyval);
+ ($first,$keyval) = &get_keyval('first', $keyval);
+ ($firstplural,$keyval) = &get_keyval('firstplural', $keyval);
+ ($plural,$keyval) = &get_keyval('plural', $keyval);
+ ($type,$keyval) = &get_keyval('type', $keyval);
+ ($parent,$keyval) = &get_keyval('parent', $keyval);
+
+ if ($parent and not $name)
+ {
+ $name = &gls_get_name($parent);
+ }
+
+ @user = ();
+
+ for (my $idx = 0; $idx < 6; $idx++)
+ {
+ ($user[$idx],$keyval) = &get_keyval("user".($idx+1), $keyval);
+ }
+
+ if (defined($type))
+ {
+ $type = &translate_commands($type);
+ }
+ else
+ {
+ $type = 'main';
+ }
+
+ &gls_entry_init($label, $type, $name, $description);
+
+ &gls_set_symbol($label, defined($symbol)?$symbol:'');
+
+ $sort = "$name $description" unless (defined($sort) and $sort);
+
+ &gls_set_sort($label, $sort);
+
+ $text = $name unless (defined($text) and $text);
+
+ &gls_set_text($label, $text);
+
+ $first = $text unless (defined($first) and $first);
+
+ &gls_set_first($label, $first);
+
+ $plural = "${text}s" unless (defined($plural) and $plural);
+
+ &gls_set_plural($label, $plural);
+
+ $firstplural = "${first}s" unless (defined($firstplural) and $firstplural);
+
+ &gls_set_firstplural($label, $firstplural);
+
+ &gls_set_userkeys($label, @user);
+
+ &gls_set_parent($label, $parent);
+
+ push @{$gls_entries{$type}}, $label;
+
+ $_;
+}
+
+sub reset_entry{
+ local($label) = @_;
+
+ $glsentry{$label}{'flag'} = 0;
+}
+
+sub unset_entry{
+ local($label) = @_;
+
+ $glsentry{$label}{'flag'} = 1;
+}
+
+sub do_cmd_glsreset{
+ local($_) = @_;
+ local($label);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$label=$2;''/eo;
+
+ &reset_entry($label);
+
+ $_;
+}
+
+sub do_cmd_glsunset{
+ local($_) = @_;
+ local($label);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$label=$2;''/eo;
+
+ &unset_entry($label);
+
+ $_;
+}
+
+sub do_cmd_ifglsused{
+ local($_) = @_;
+ local($label,$true,$false);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$label=$2;''/eo;
+
+ $true = &missing_braces unless
+ s/$next_pair_pr_rx/$true=$2;''/eo;
+
+ $false = &missing_braces unless
+ s/$next_pair_pr_rx/$false=$2;''/eo;
+
+ (&gls_used($label) ? $true : $false) . $_;
+}
+
+sub do_cmd_ifglsentryexists{
+ local($_) = @_;
+ local($label,$true,$false);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$label=$2;''/eo;
+
+ $true = &missing_braces unless
+ s/$next_pair_pr_rx/$true=$2;''/eo;
+
+ $false = &missing_braces unless
+ s/$next_pair_pr_rx/$false=$2;''/eo;
+
+ (&gls_entry_defined($label) ? $true : $false) . $_;
+}
+
+sub gls_add_entry{
+ local($type, $label, $format, $text) = @_;
+
+ local($oldfmt) = $GLSCURRENTFORMAT;
+
+ if (defined($format))
+ {
+ $format=~s/[\(\)]//;
+
+ if ($format)
+ {
+ $GLSCURRENTFORMAT=$format;
+ }
+ }
+
+ $id = ++$global{'max_id'};
+
+ local($str) = &make_real_glossary_entry($label,$text,$type);
+ $GLSCURRENTFORMAT = $oldfmt;
+
+ $str;
+}
+
+sub do_cmd_glsadd{
+ local($_) = @_;
+ local($optarg,$pat,$label,$str,$id,$type,$format);
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ $type = &gls_get_type($label);
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ &unset_entry($label);
+ }
+
+ if (defined $type)
+ {
+ ($format,$optarg) = &get_keyval('format', $optarg);
+ $format='' unless(defined($format));
+
+ if ($dobacklink)
+ {
+ &gls_add_entry($type,$label,$format,"");
+ }
+ else
+ {
+ $glsentry{$label}{'maxid'} = ++$glsentry{$entry}{'maxid'};
+ my $key = $label."###".$glsentry{$label}{'maxid'};
+ $glossary{$type}{$key}='';
+ }
+ }
+ else
+ {
+ &write_warnings("gls_add: glossary entry '$label' undefined");
+ $str = '';
+ }
+
+ $str . $_;
+}
+
+sub do_cmd_glsaddall{
+ local($_) = @_;
+ local($optarg,$pat) = &get_next_optional_argument;
+
+ local($format,$list);
+
+ ($list,$optarg) = &get_keyval('types', $optarg);
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $format='' unless(defined($format));
+
+ local(@types) = keys(%gls_mark);
+
+ if ($list)
+ {
+ @types = split /\s*,\s*/, $list;
+ }
+
+ foreach $type (@types)
+ {
+ # strip leading and trailing spaces
+ $type=~s/^\s*([^\s]+)\s*$/\1/;
+
+ foreach $label (@{$gls_entries{$type}})
+ {
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ &unset_entry($label);
+ }
+
+ if ($dobacklink)
+ {
+ &gls_add_entry($type,$label,$format,"");
+ }
+ }
+ }
+
+ $_;
+}
+
+sub do_cmd_glsresetall{
+ local($_) = @_;
+ local($types,$pat) = &get_next_optional_argument;
+
+ local(@types) = keys(%gls_mark);
+
+ if (defined($types) and $types)
+ {
+ @types = split /,/, $types;
+ }
+
+ foreach $type (@types)
+ {
+ # strip leasing and trailing spaces
+ $type=~s/^\s*([^\s]+)\s*$/\1/;
+
+ foreach $label (@{$gls_entries{$type}})
+ {
+ &reset_entry($label);
+ }
+ }
+
+ $_;
+}
+
+sub do_cmd_glsunsetall{
+ local($_) = @_;
+ local($types,$pat) = &get_next_optional_argument;
+
+ local(@types) = keys(%gls_mark);
+
+ if (defined($types) and $types)
+ {
+ @types = split /,/, $types;
+ }
+
+ foreach $type (@types)
+ {
+ # strip leasing and trailing spaces
+ $type=~s/^\s*([^\s]+)\s*$/\1/;
+
+ foreach $label (@{$gls_entries{$type}})
+ {
+ &reset_entry($label);
+ }
+ }
+
+ $_;
+}
+
+$glslabel = '';
+
+sub do_cmd_glslabel{ $glslabel.$_[0] }
+
+sub make_glslink{
+ local($type,$label,$format,$text) = @_;
+ local($str) = '';
+
+ $glslabel = $label;
+
+ if (defined $type)
+ {
+ $str = &gls_add_entry($type,$label,$format,$text);
+ }
+ else
+ {
+ &write_warnings("glossary '$type' undefined");
+ }
+
+ $str;
+}
+
+sub do_cmd_glslink{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text,$type,$format,$str);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ $text = &missing_braces unless
+ (s/$next_pair_pr_rx/$text=$2;''/eo);
+
+ # v1.01 removed following lines (\glslink doesn't have
+ # a final optional argument!
+ #local ($space) = '';
+ #if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+ #($optarg,$pat) = &get_next_optional_argument;
+
+ $type = &gls_get_type($label);
+
+ #&make_glslink($type, $label, $format, $text).$space . $_;
+ &make_glslink($type, $label, $format, $text) . $_;
+}
+
+sub do_cmd_glslinkstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text,$type,$format,$str);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ $text = &missing_braces unless
+ (s/$next_pair_pr_rx/$text=$2;''/eo);
+
+ $type = &gls_get_type($label);
+
+ $text . $_;
+}
+
+sub do_cmd_glsdisp{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text,$type,$format,$str);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ $text = &missing_braces unless
+ (s/$next_pair_pr_rx/$text=$2;''/eo);
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ &unset_entry($label);
+ }
+
+ $type = &gls_get_type($label);
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $text, $type). $space . $_;
+ }
+}
+
+sub do_cmd_glshyperlink{
+ local($_) = @_;
+
+ local($text,$pat) = &get_next_optional_argument;
+
+ local($id, $label);
+
+ $label = &missing_braces unless
+ s/$next_pair_pr_rx/$id=$1,$label=$2;''/eo;
+
+ $text = &gls_get_text($label) unless $text;
+
+ local($type) = &gls_get_type($label);
+
+ "<A HREF=\"$gls_file_mark{$type}#gls:$label\">$text<\/A>"
+ .$_;
+}
+
+sub do_cmd_glsentrydesc{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_description($label).$_;
+}
+
+sub do_cmd_Glsentrydesc{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_description($label)).$_;
+}
+
+sub do_cmd_glsentrytext{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_text($label).$_;
+}
+
+sub do_cmd_Glsentrytext{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_text($label)).$_;
+}
+
+sub do_cmd_glsentryname{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_name($label).$_;
+}
+
+sub do_cmd_Glsentryname{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_name($label)).$_;
+}
+
+sub do_cmd_glsentryfirst{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_first($label).$_;
+}
+
+sub do_cmd_Glsentryfirst{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_first($label)).$_;
+}
+
+sub do_cmd_glsentryplural{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_plural($label).$_;
+}
+
+sub do_cmd_Glsentryplural{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_plural($label)).$_;
+}
+
+sub do_cmd_glsentryfirstplural{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local($text)=$glsentry{$label}{'firstplural'};
+
+ unless (defined($text))
+ {
+ &write_warnings("glossary entry '$label' has not been defined");
+ $text = '';
+ }
+
+ "$text$_";
+ &gls_get_firstplural($label).$_;
+}
+
+sub do_cmd_Glsentryfirstplural{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_firstplural($label)).$_;
+}
+
+sub do_cmd_glsentrysymbol{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_symbol($label).$_;
+}
+
+sub do_cmd_Glsentrysymbol{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &do_real_makefirstuc(&gls_get_symbol($label)).$_;
+}
+
+sub do_cmd_glsentryuseri{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_user($label, 1).$_;
+}
+
+sub do_cmd_glsentryuserii{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_user($label, 2).$_;
+}
+
+sub do_cmd_glsentryuseriii{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_user($label, 3).$_;
+}
+
+sub do_cmd_glsentryuseriv{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_user($label, 4).$_;
+}
+
+sub do_cmd_glsentryuserv{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_user($label, 5).$_;
+}
+
+sub do_cmd_glsentryuservi{
+ local($_) = @_;
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ &gls_get_user($label, 6).$_;
+}
+
+sub do_cmd_gls{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_text($label);
+ $display = &gls_get_display($type);
+
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_first($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $link_text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $link_text, $type). $space . $_;
+ }
+}
+
+# added v1.04
+sub do_cmd_glsstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_text($label);
+ $display = &gls_get_display($type);
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_first($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ $link_text . $space . $_;
+}
+
+sub do_cmd_glspl{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_plural($label);
+ $display = &gls_get_display($type);;
+
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_firstplural($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $link_text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $link_text, $type). $space . $_;
+ }
+}
+
+# added v1.04
+sub do_cmd_glsplstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_plural($label);
+ $display = &gls_get_display($type);;
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_firstplural($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ $link_text . $space . $_;
+}
+
+sub do_cmd_Gls{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_text($label);
+ $display = &gls_get_display($type);;
+
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_first($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &do_real_makefirstuc(&translate_commands("$display$args"));
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $link_text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $link_text, $type). $space . $_;
+ }
+}
+
+# added v1.04
+sub do_cmd_Glsstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_text($label);
+ $display = &gls_get_display($type);;
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_first($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ &do_real_makefirstuc($link_text). $space . $_;
+}
+
+sub do_cmd_Glspl{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_plural($label);
+ $display = &gls_get_display($type);;
+
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_firstplural($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &do_real_makefirstuc(&translate_commands("$display$args"));
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $link_text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $link_text, $type). $space . $_;
+ }
+}
+
+# added v1.04
+sub do_cmd_Glsplstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_plural($label);
+ $display = &gls_get_display($type);;
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_firstplural($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ &do_real_makefirstuc($link_text).$space . $_;
+}
+
+sub do_cmd_GLS{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_text($label);
+ $display = &gls_get_display($type);;
+
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_first($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = uc(&translate_commands("$display$args"));
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $link_text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $link_text, $type). $space . $_;
+ }
+}
+
+# added v1.04
+sub do_cmd_GLSstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_text($label);
+ $display = &gls_get_display($type);;
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_first($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ uc($link_text).$space . $_;
+}
+
+sub do_cmd_GLSpl{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ local($dobacklink) = 1;
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_plural($label);
+ $display = &gls_get_display($type);;
+
+ if ($INDEXONLYFIRST)
+ {
+ $dobacklink = 0;
+ }
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_firstplural($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = uc(&translate_commands("$display$args"));
+
+ if ($dobacklink)
+ {
+ &make_glslink($type, $label, $format, $link_text) .$space . $_;
+ }
+ else
+ {
+ &make_real_glossary_entry_no_backlink($label, $link_text, $type). $space . $_;
+ }
+}
+
+# added v1.04
+sub do_cmd_GLSplstar{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = $glsentry{$label}{'type'};
+
+ if (&gls_used($label))
+ {
+ # entry has already been used
+
+ $text = &gls_get_plural($label);
+ $display = &gls_get_display($type);;
+ }
+ else
+ {
+ # entry hasn't been used
+
+ $text = &gls_get_firstplural($label);
+ $display = &gls_get_displayfirst($type);
+
+ &unset_entry($label);
+ }
+
+ local($args) = '';
+
+ local($id) = ++$global{'max_id'};
+ $args .= "$OP$id$CP$text$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{description}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$glsentry{$label}{symbol}$OP$id$CP";
+
+ $id = ++$global{'max_id'};
+ $args .= "$OP$id$CP$insert$OP$id$CP";
+
+ local($link_text) = &translate_commands("$display$args");
+
+ uc($link_text).$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glstext{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_text($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glstext{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_text($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLStext{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_text($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glsname{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_name($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glsname{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_name($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLSname{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_name($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glsfirst{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_first($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glsfirst{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_first($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLSfirst{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_first($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glsfirstplural{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_firstplural($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glsfirstplural{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_firstplural($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLSfirstplural{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_firstplural($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glsplural{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_plural($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glsplural{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_plural($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLSplural{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_plural($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glsdesc{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_description($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glsdesc{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_description($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLSdesc{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_description($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_glssymbol{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_symbol($label);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_Glssymbol{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_symbol($label);
+
+ &make_glslink($type, $label, $format, &do_real_makefirstuc($text)) .$space . $_;
+}
+
+# added 22 Feb 2008
+sub do_cmd_GLSsymbol{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_symbol($label);
+
+ &make_glslink($type, $label, $format, uc($text)) .$space . $_;
+}
+
+sub do_cmd_glsuseri{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_user($label, 1);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_Glsuseri{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &do_real_makefirstuc(&gls_get_user($label, 1));
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_glsuserii{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_user($label, 2);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_Glsuserii{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &do_real_makefirstuc(&gls_get_user($label, 2));
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_glsuseriii{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_user($label, 3);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_Glsuseriii{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &do_real_makefirstuc(&gls_get_user($label, 3));
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_glsuseriv{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_user($label, 4);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_Glsuseriv{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &do_real_makefirstuc(&gls_get_user($label, 4));
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_glsuserv{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_user($label, 5);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_Glsuserv{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &do_real_makefirstuc(&gls_get_user($label, 5));
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_glsuservi{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &gls_get_user($label, 6);
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_Glsuservi{
+ local($_) = @_;
+ local($optarg,$pat,$label,$text, $format, $insert);
+
+ ($optarg,$pat) = &get_next_optional_argument;
+
+ ($format,$optarg) = &get_keyval('format', $optarg);
+
+ $label = &missing_braces unless
+ (s/$next_pair_pr_rx/$label=$2;''/eo);
+
+ local ($space) = '';
+ if (/^\s+[^\[]/ or /^\s*\[.*\]\s/) {$space = ' ';}
+
+ $insert = '';
+ ($insert,$pat) = &get_next_optional_argument;
+
+ local($display) = '';
+
+ local($type) = &gls_get_type($label);
+
+ $text = &do_real_makefirstuc(&gls_get_user($label, 6));
+
+ &make_glslink($type, $label, $format, $text) .$space . $_;
+}
+
+sub do_cmd_acrshort{
+ &do_cmd_glstext(@_)
+}
+
+sub do_cmd_Acrshort{
+ &do_cmd_Glstext(@_)
+}
+
+sub do_cmd_ACRshort{
+ &do_cmd_GLStext(@_)
+}
+
+sub do_cmd_acrlong{
+ &do_cmd_glsdesc(@_)
+}
+
+sub do_cmd_Acrlong{
+ &do_cmd_Glsdesc(@_)
+}
+
+sub do_cmd_ACRlong{
+ &do_cmd_GLSdesc(@_)
+}
+
+sub do_cmd_acrfull{
+ &do_cmd_glsfirst(@_)
+}
+
+sub do_cmd_Acrfull{
+ &do_cmd_Glsfirst(@_)
+}
+
+sub do_cmd_ACRfull{
+ &do_cmd_GLSfirst(@_)
+}
+
+sub do_cmd_glossarypreamble{
+ local($_) = @_;
+ $_[0];
+}
+
+sub do_cmd_glossarypostamble{
+ local($_) = @_;
+ $_[0];
+}
+
+sub do_cmd_glsnumformat{
+ local($_) = @_;
+
+ $_;
+}
+
+sub do_cmd_hyperit{
+ join('', "\\textit ", $_[0]);
+}
+
+sub do_cmd_hyperrm{
+ join('', "\\textrm ", $_[0]);
+}
+
+sub do_cmd_hypertt{
+ join('', "\\texttt ", $_[0]);
+}
+
+sub do_cmd_hypersf{
+ join('', "\\textsf ", $_[0]);
+}
+
+sub do_cmd_hyperbf{
+ join('', "\\textbf ", $_[0]);
+}
+
+&ignore_commands( <<_IGNORED_CMDS_ );
+makeglossary
+makeglossaries
+glossaryentrynumbers # {}
+_IGNORED_CMDS_
+
+1;
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</glossaries.perl>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/glossaries/glossaries.ins b/macros/latex/contrib/glossaries/glossaries.ins
new file mode 100644
index 0000000000..14ad799bbb
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossaries.ins
@@ -0,0 +1,129 @@
+% glossaries.ins generated using makedtx version 1.2 2019/1/6 19:06
+\input docstrip
+
+\preamble
+
+ glossaries.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.dtx and glossaries.ins and the derived files glossaries.sty, glossaries-prefix.sty, glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty, glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty, glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty, glossary-tree.sty, glossaries-compatible-207.sty, glossaries-compatible-307.sty, glossaries-accsupp.sty, glossaries-babel.sty, glossaries-polyglossia.sty, minimalgls.tex, glossary-lipsum-examples.tex, example-glossaries-acronym-desc.tex, example-glossaries-acronym.tex, example-glossaries-acronyms-lang.tex, example-glossaries-brief.tex, example-glossaries-childnoname.tex, example-glossaries-cite.tex, example-glossaries-images.tex, example-glossaries-long.tex, example-glossaries-multipar.tex, example-glossaries-parent.tex, example-glossaries-symbolnames.tex, example-glossaries-symbols.tex, example-glossaries-url.tex, sample-chap-hyperfirst.tex, sample-crossref.tex, sample-custom-acronym.tex, sample-dot-abbr.tex, sample-dual.tex, sample-entrycount.tex, sample-entryfmt.tex, sample-FnDesc.tex, sample-font-abbr.tex, sample-ignored.tex, sample-index.tex, sample-inline.tex, sample-langdict.tex, sample-newkeys.tex, sample-noidxapp-utf8.tex, sample-noidxapp.tex, sample-nomathhyper.tex, sample-numberlist.tex, sample-prefix.tex, sample-si.tex, sample-storage-abbr-desc.tex, sample-storage-abbr.tex, sample.tex, sample4col.tex, sampleaccsupp.tex, sampleAcr.tex, sampleAcrDesc.tex, sampleacronyms.tex, sampleCustomAcr.tex, sampleDB.tex, sampleDesc.tex, sampleEq.tex, sampleEqPg.tex, sampleFnAcrDesc.tex, sampleNtn.tex, samplePeople.tex, sampleSec.tex, sampleSort.tex, sampletree.tex, sampleutf8.tex, samplexdy.tex, samplexdy2.tex, samplexdy3.tex, mwe-acr-desc.tex, mwe-acr.tex, mwe-gls.tex, samplexdy-mc.xdy, samplexdy-mc207.xdy, database1.tex, database2.tex, glossaries.perl.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate{\file{glossaries.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries.sty,package}}
+\file{glossaries-prefix.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-prefix.sty,package}}
+\file{glossary-hypernav.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-hypernav.sty,package}}
+\file{glossary-inline.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-inline.sty,package}}
+\file{glossary-list.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-list.sty,package}}
+\file{glossary-long.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-long.sty,package}}
+\file{glossary-longbooktabs.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-longbooktabs.sty,package}}
+\file{glossary-longragged.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-longragged.sty,package}}
+\file{glossary-mcols.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-mcols.sty,package}}
+\file{glossary-super.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-super.sty,package}}
+\file{glossary-superragged.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-superragged.sty,package}}
+\file{glossary-tree.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossary-tree.sty,package}}
+\file{glossaries-compatible-207.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-compatible-207.sty,package}}
+\file{glossaries-compatible-307.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-compatible-307.sty,package}}
+\file{glossaries-accsupp.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-accsupp.sty,package}}
+\file{glossaries-babel.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-babel.sty,package}}
+\file{glossaries-polyglossia.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries.dtx}{glossaries-polyglossia.sty,package}}
+\file{minimalgls.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{minimalgls.tex}}
+\file{glossary-lipsum-examples.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{glossary-lipsum-examples.tex}}
+\file{example-glossaries-acronym-desc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-acronym-desc.tex}}
+\file{example-glossaries-acronym.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-acronym.tex}}
+\file{example-glossaries-acronyms-lang.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-acronyms-lang.tex}}
+\file{example-glossaries-brief.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-brief.tex}}
+\file{example-glossaries-childnoname.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-childnoname.tex}}
+\file{example-glossaries-cite.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-cite.tex}}
+\file{example-glossaries-images.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-images.tex}}
+\file{example-glossaries-long.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-long.tex}}
+\file{example-glossaries-multipar.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-multipar.tex}}
+\file{example-glossaries-parent.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-parent.tex}}
+\file{example-glossaries-symbolnames.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-symbolnames.tex}}
+\file{example-glossaries-symbols.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-symbols.tex}}
+\file{example-glossaries-url.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{example-glossaries-url.tex}}
+\file{sample-chap-hyperfirst.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-chap-hyperfirst.tex}}
+\file{sample-crossref.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-crossref.tex}}
+\file{sample-custom-acronym.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-custom-acronym.tex}}
+\file{sample-dot-abbr.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-dot-abbr.tex}}
+\file{sample-dual.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-dual.tex}}
+\file{sample-entrycount.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-entrycount.tex}}
+\file{sample-entryfmt.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-entryfmt.tex}}
+\file{sample-FnDesc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-FnDesc.tex}}
+\file{sample-font-abbr.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-font-abbr.tex}}
+\file{sample-ignored.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-ignored.tex}}
+\file{sample-index.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-index.tex}}
+\file{sample-inline.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-inline.tex}}
+\file{sample-langdict.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-langdict.tex}}
+\file{sample-newkeys.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-newkeys.tex}}
+\file{sample-noidxapp-utf8.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-noidxapp-utf8.tex}}
+\file{sample-noidxapp.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-noidxapp.tex}}
+\file{sample-nomathhyper.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-nomathhyper.tex}}
+\file{sample-numberlist.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-numberlist.tex}}
+\file{sample-prefix.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-prefix.tex}}
+\file{sample-si.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-si.tex}}
+\file{sample-storage-abbr-desc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-storage-abbr-desc.tex}}
+\file{sample-storage-abbr.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample-storage-abbr.tex}}
+\file{sample.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample.tex}}
+\file{sample4col.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sample4col.tex}}
+\file{sampleaccsupp.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleaccsupp.tex}}
+\file{sampleAcr.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleAcr.tex}}
+\file{sampleAcrDesc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleAcrDesc.tex}}
+\file{sampleacronyms.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleacronyms.tex}}
+\file{sampleCustomAcr.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleCustomAcr.tex}}
+\file{sampleDB.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleDB.tex}}
+\file{sampleDesc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleDesc.tex}}
+\file{sampleEq.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleEq.tex}}
+\file{sampleEqPg.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleEqPg.tex}}
+\file{sampleFnAcrDesc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleFnAcrDesc.tex}}
+\file{sampleNtn.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleNtn.tex}}
+\file{samplePeople.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{samplePeople.tex}}
+\file{sampleSec.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleSec.tex}}
+\file{sampleSort.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleSort.tex}}
+\file{sampletree.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampletree.tex}}
+\file{sampleutf8.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{sampleutf8.tex}}
+\file{samplexdy.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy.tex}}
+\file{samplexdy2.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy2.tex}}
+\file{samplexdy3.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy3.tex}}
+\file{mwe-acr-desc.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{mwe-acr-desc.tex}}
+\file{mwe-acr.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{mwe-acr.tex}}
+\file{mwe-gls.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{mwe-gls.tex}}
+\file{samplexdy-mc.xdy}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy-mc.xdy}}
+\file{samplexdy-mc207.xdy}{\nopreamble\nopostamble\from{glossaries.dtx}{samplexdy-mc207.xdy}}
+\file{database1.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{database1.tex}}
+\file{database2.tex}{\nopreamble\nopostamble\from{glossaries.dtx}{database2.tex}}
+\file{glossaries.perl}{\nopreamble\nopostamble\from{glossaries.dtx}{glossaries.perl}}
+}
+
+\endbatchfile
diff --git a/macros/latex/contrib/glossaries/glossariesbegin.html b/macros/latex/contrib/glossaries/glossariesbegin.html
new file mode 100644
index 0000000000..ff79fcb0ef
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossariesbegin.html
@@ -0,0 +1,3949 @@
+<?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="glossariesbegin.tex" />
+
+<style type="text/css">
+<!--
+
+/* start css.sty */
+.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;}
+.cmr-9{font-size:90%;}
+.cmbx-9{font-size:90%; font-weight: bold;}
+.cmbx-9{ font-weight: bold;}
+.cmss-9{font-size:90%; font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.cmti-10{ font-style: italic;}
+.cmtt-9{font-size:90%;font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmitt-10{font-family: monospace; font-style: italic;}
+.cmbx-10{ font-weight: bold;}
+.cmbx-10{ font-weight: bold;}
+.cmsy-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;}
+.small-caps{font-variant: small-caps; }
+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%;}
+.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; }
+.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; }
+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; }
+div.array {text-align:center;}
+.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#textcolor1{color:#00FF00}
+span#textcolor2{color:#00FF00}
+span#textcolor3{color:#00FF00}
+span#textcolor4{color:#FF0000}
+span#textcolor5{color:#00FF00}
+span#textcolor6{color:#FF0000}
+span#textcolor7{color:#FF0000}
+span#textcolor8{color:#FF0000}
+span#textcolor9{color:#00FF00}
+span#textcolor10{color:#00FF00}
+span#textcolor11{color:#FF0000}
+span#textcolor12{color:#00FF00}
+span#textcolor13{color:#00FF00}
+span#textcolor14{color:#00FF00}
+span#textcolor15{color:#00FF00}
+span#textcolor16{color:#FF0000}
+span#textcolor17{color:#FF0000}
+span#textcolor18{color:#FF0000}
+span#textcolor19{color:#00FF00}
+span#textcolor20{color:#00FF00}
+span#textcolor21{color:#FF0000}
+span#textcolor22{color:#00FF00}
+span#textcolor23{color:#00FF00}
+span#textcolor24{color:#00FF00}
+span#textcolor25{color:#00FF00}
+span#textcolor26{color:#FF0000}
+span#textcolor27{color:#FF0000}
+span#textcolor28{color:#00FF00}
+span#textcolor29{color:#FF0000}
+span#textcolor30{color:#FF0000}
+span#textcolor31{color:#FF0000}
+span#textcolor32{color:#00FF00}
+span#textcolor33{color:#FF0000}
+span#textcolor34{color:#00FF00}
+span#textcolor35{color:#00FF00}
+span#textcolor36{color:#00FF00}
+span#textcolor37{color:#00FF00}
+span#textcolor38{color:#FF0000}
+span#textcolor39{color:#00FF00}
+span#textcolor40{color:#00FF00}
+/* end css.sty */
+
+
+-->
+</style>
+</head><body
+>
+<!--l. 55--><p class="noindent" ><a
+ id="top"></a>
+</p><!--l. 55--><p class="indent" >
+
+
+
+</p><!--l. 55--><p class="indent" >
+
+
+
+</p>
+<div class="center"
+>
+<!--l. 55--><p class="noindent" >
+</p><!--l. 55--><p class="noindent" ><span
+class="cmr-17">The glossaries package v4.42: a guide for</span>
+<span
+class="cmr-17">beginners</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></table>
+</div>
+<!--l. 55--><p class="noindent" ><span
+class="cmr-12">2019-01-06</span></p></div>
+ <div
+class="abstract"
+>
+<div class="center"
+>
+<!--l. 57--><p class="noindent" >
+</p><!--l. 57--><p class="noindent" ><span
+class="cmbx-9">Abstract</span></p></div>
+ <!--l. 58--><p class="indent" > <span
+class="cmr-9">The </span><span
+class="cmss-9">glossaries </span><span
+class="cmr-9">package is very flexible, but this means that it has a</span><span
+class="cmr-9">&#x00A0;lot</span>
+ <span
+class="cmr-9">of options, and since a user guide is supposed to provide a complete list</span>
+ <span
+class="cmr-9">of all the high-level user commands, the main user manual is quite big.</span>
+ <span
+class="cmr-9">This can be rather daunting for beginners, so this document is a brief</span>
+ <span
+class="cmr-9">introduction just to help get you started. If you find yourself saying, &#8220;Yeah,</span>
+ <span
+class="cmr-9">but how can I do</span><span
+class="cmr-9">&#x2026;?&#8221; then it&#8217;s time to move on to the </span><a
+href="glossaries-user.html" ><span
+class="cmr-9">main user manual</span></a><span
+class="cmr-9">.</span>
+ </p><!--l. 67--><p class="indent" > <span
+class="cmr-9">I&#8217;ve made some statements in this document that don&#8217;t actually tell</span>
+ <span
+class="cmr-9">you the full truth, but it would clutter the document and cause confusion</span>
+ <span
+class="cmr-9">if I keep writing &#8220;except when </span><span
+class="cmr-9">&#x2026;&#8221; or &#8220;but you can also do this, that or</span>
+ <span
+class="cmr-9">the other&#8221; or &#8220;you can do it this way but you can also do it that way, but</span>
+ <span
+class="cmr-9">that way may cause complications under certain circumstances&#8221;.</span>
+</p>
+</div>
+ <h3 class="likesectionHead"><a
+ id="x1-1000"></a>Contents</h3>
+ <div class="tableofcontents">
+ <span class="sectionToc" >1 <a
+href="#sec:start" id="QQ2-1-2">Getting Started</a></span>
+
+
+
+<br /> <span class="sectionToc" >2 <a
+href="#sec:defterm" id="QQ2-1-3">Defining Terms</a></span>
+<br /> <span class="sectionToc" >3 <a
+href="#sec:useterm" id="QQ2-1-4">Using Entries</a></span>
+<br /> <span class="sectionToc" >4 <a
+href="#sec:printglossaries" id="QQ2-1-5">Displaying a List of Entries</a></span>
+<br /> <span class="sectionToc" >5 <a
+href="#sec:glosstyle" id="QQ2-1-7">Customising the Glossary</a></span>
+<br /> <span class="sectionToc" >6 <a
+href="#sec:multigloss" id="QQ2-1-8">Multiple Glossaries</a></span>
+<br /> <span class="sectionToc" >7 <a
+href="#sec:hyperref" id="QQ2-1-9">glossaries and hyperref</a></span>
+<br /> <span class="sectionToc" >8 <a
+href="#sec:xr" id="QQ2-1-10">Cross-References</a></span>
+<br /> <span class="sectionToc" >9 <a
+href="#sec:moreinfo" id="QQ2-1-11">Further Information</a></span>
+ </div>
+<!--l. 77--><p class="noindent" >
+</p>
+<!--l. 77--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1 </span> <a
+ id="sec:start"></a>Getting Started</h3>
+<!--l. 80--><p class="noindent" >As with all packages, you need to load <span
+class="cmss-10">glossaries </span>with <span
+class="cmtt-10">\usepackage</span>, but
+there are certain packages that must be loaded before <span
+class="cmss-10">glossaries</span>, <span
+class="cmti-10">if </span>they are
+required: <span
+class="cmss-10">hyperref</span><a
+ id="dx1-2001"></a>, <span
+class="cmss-10">babel</span><a
+ id="dx1-2002"></a>, <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-2003"></a>, <span
+class="cmss-10">inputenc</span><a
+ id="dx1-2004"></a> and <span
+class="cmss-10">fontenc</span><a
+ id="dx1-2005"></a>. (You don&#8217;t have
+to load these packages, but if you want them, you must load them before
+<span
+class="cmss-10">glossaries</span>.)
+</p><!--l. 87--><p class="indent" > <div class="important" title="Important Note"> If you require multilingual support you must also install the relevant
+language module. Each language module is called <span
+class="cmtt-10">glossaries-</span>&#x27E8;<span
+class="cmti-10">language</span>&#x27E9;, where
+&#x27E8;<span
+class="cmti-10">language</span>&#x27E9; is the root language name. For example, <span
+class="cmtt-10">glossaries-french </span>or
+<span
+class="cmtt-10">glossaries-german</span>. If a language module is required, the <span
+class="cmss-10">glossaries </span>package will
+automatically try to load it and will give a warning if the module isn&#8217;t found.
+</div>
+</p><!--l. 95--><p class="noindent" >
+</p><!--l. 97--><p class="indent" > Once you have loaded <span
+class="cmss-10">glossaries</span>, you need to define your terms in the
+preamble and then you can use them throughout the document. Here&#8217;s a simple
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-1">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries}
+&#x00A0;<br />&#x00A0;\newglossaryentry{ex}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;Here's&#x00A0;my&#x00A0;\gls{ex}&#x00A0;term.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 110--><p class="nopar" > This produces:
+ </p><div class="quote">
+ <!--l. 113--><p class="noindent" >Here&#8217;s my sample term.</p></div>
+<!--l. 115--><p class="noindent" >Here&#8217;s another example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-2">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries}
+&#x00A0;<br />&#x00A0;\setacronymstyle{long-short}
+&#x00A0;<br />&#x00A0;\newacronym{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;First&#x00A0;use:&#x00A0;\gls{svm}.&#x00A0;Second&#x00A0;use:&#x00A0;\gls{svm}.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 128--><p class="nopar" > This produces:
+ </p><div class="quote">
+ <!--l. 131--><p class="noindent" >First use: support vector machine (SVM). Second use: SVM.</p></div>
+<!--l. 133--><p class="noindent" >In this case, the text produced by <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> changed after the first use. The first use
+produced the long form followed by the short form in parentheses because I set the
+acronym style to <span
+class="cmtt-10">long-short</span>. I suggest you try the above two examples to
+make sure you have the package correctly installed. If you get an <span
+class="cmtt-10">undefined</span>
+<span
+class="cmtt-10">control sequence </span>error, check that the version number at the top of this
+document matches the version you have installed. (Open the <span
+class="cmtt-10">.log </span>file and search
+for the line that starts with <span
+class="cmtt-10">Package: glossaries </span>followed by a date and
+version.)
+</p><!--l. 144--><p class="indent" > <div class="important" title="Important Note"> Be careful of fragile commands. If a command causes a problem when used in one
+of the <span
+class="cmtt-10">\newglossaryentry </span>fields, consider adding <span
+class="cmtt-10">\glsnoexpandfields </span>before you
+start defining your entries. </div>
+</p><!--l. 148--><p class="noindent" >
+</p><!--l. 150--><p class="indent" > Abbreviations are slightly different if you use the extension package <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2006"></a>
+(which needs to be installed separately):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-3">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries-extra}
+&#x00A0;<br />&#x00A0;\setabbreviationstyle{long-short}%&#x00A0;glossaries-extra.sty
+&#x00A0;<br />&#x00A0;\newabbreviation{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}%&#x00A0;glossaries-extra.sty
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;First&#x00A0;use:&#x00A0;\gls{svm}.&#x00A0;Second&#x00A0;use:&#x00A0;\gls{svm}.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 164--><p class="nopar" > If you still want to use <span
+class="cmtt-10">\newacronym </span>(rather than <span
+class="cmtt-10">\newabbreviation</span>) then you need
+the optional argument of <span
+class="cmtt-10">\setabbreviationstyle</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-4">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries-extra}
+&#x00A0;<br />&#x00A0;\setabbreviationstyle[acronym]{long-short}%&#x00A0;glossaries-extra.sty&#x00A0;only
+&#x00A0;<br />&#x00A0;\newacronym{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;First&#x00A0;use:&#x00A0;\gls{svm}.&#x00A0;Second&#x00A0;use:&#x00A0;\gls{svm}.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 180--><p class="nopar" >
+</p><!--l. 181--><p class="indent" > <div class="important" title="Important Note"> You can&#8217;t use <span
+class="cmtt-10">\setacronymstyle </span>with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2007"></a>. </div>
+</p><!--l. 183--><p class="noindent" >
+</p><!--l. 185--><p class="indent" > If you like, you can put all your definitions in another file (for example,
+<span
+class="cmtt-10">defns.tex</span>) and load that file in the preamble using <span
+class="cmtt-10">\loadglsentries </span>with the
+filename as the argument. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-5">
+\loadglsentries{defns}
+</div>
+<!--l. 190--><p class="nopar" > If you find you have a really large number of definitions that are hard to manage in a
+<span
+class="cmtt-10">.tex </span>file, you might want to have a look at <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2008"></a> (installed separately) which
+requires a <span
+class="cmtt-10">.bib </span>format instead that can be managed by an application such as
+JabRef.
+</p><!--l. 197--><p class="indent" > Don&#8217;t try inserting formatting commands into the definitions as they can interfere
+with the underlying mechanism. Instead, the formatting should be done by the
+style. For example, suppose I&#x00A0;want to replace <span
+class="cmtt-10">SVM </span>with <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\textsc{svm}</span></span></span>, then
+I&#x00A0;need to select a style that uses <span
+class="cmtt-10">\textsc</span>, like this (for the base <span
+class="cmss-10">glossaries</span>
+style):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-6">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries}
+&#x00A0;<br />&#x00A0;\setacronymstyle{long-sc-short}
+&#x00A0;<br />&#x00A0;\newacronym{svm}{svm}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;First&#x00A0;use:&#x00A0;\gls{svm}.&#x00A0;Second&#x00A0;use:&#x00A0;\gls{svm}.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 215--><p class="nopar" > The abbreviation styles have a different naming scheme with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2009"></a>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-7">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries-extra}
+&#x00A0;<br />&#x00A0;\setabbreviationstyle{long-short-sc}%&#x00A0;glossaries-extra.sty
+&#x00A0;<br />&#x00A0;\newabbreviation{svm}{svm}{support&#x00A0;vector&#x00A0;machine}%&#x00A0;glossaries-extra.sty
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;First&#x00A0;use:&#x00A0;\gls{svm}.&#x00A0;Second&#x00A0;use:&#x00A0;\gls{svm}.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 230--><p class="nopar" > With <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2010"></a> you can have multiple abbreviation styles for different
+categories. Many of these styles have their own associated formatting commands that
+can be redefined for minor adjustments. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-8">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries-extra}
+&#x00A0;<br />&#x00A0;\setabbreviationstyle[statistical]{long-short-sc}
+&#x00A0;<br />&#x00A0;\setabbreviationstyle[bacteria]{long-only-short-only}
+&#x00A0;<br />&#x00A0;%&#x00A0;Formatting&#x00A0;commands&#x00A0;used&#x00A0;by&#x00A0;'long-only-short-only'&#x00A0;style:
+&#x00A0;<br />&#x00A0;\renewcommand*{\glsabbrvonlyfont}[1]{\emph{#1}}
+&#x00A0;<br />&#x00A0;\renewcommand*{\glslongonlyfont}[1]{\emph{#1}}
+&#x00A0;<br />&#x00A0;%&#x00A0;Formatting&#x00A0;command&#x00A0;used&#x00A0;by&#x00A0;'long-short-sc'&#x00A0;style:
+&#x00A0;<br />&#x00A0;%&#x00A0;(make&#x00A0;sure&#x00A0;abbreviation&#x00A0;is&#x00A0;converted&#x00A0;to&#x00A0;lower&#x00A0;case)
+&#x00A0;<br />&#x00A0;\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}}
+&#x00A0;<br />&#x00A0;\newabbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;[
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;category={statistical}%&#x00A0;glossaries-extra.sty&#x00A0;key
+&#x00A0;<br />&#x00A0;&#x00A0;]
+&#x00A0;<br />&#x00A0;&#x00A0;{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />&#x00A0;\newabbreviation
+&#x00A0;<br />&#x00A0;&#x00A0;[
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;category={bacteria}%&#x00A0;glossaries-extra.sty&#x00A0;key
+&#x00A0;<br />&#x00A0;&#x00A0;]
+&#x00A0;<br />&#x00A0;&#x00A0;{cbot}{C.~botulinum}{Clostridium&#x00A0;botulinum}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;First&#x00A0;use:&#x00A0;\gls{svm},&#x00A0;\gls{cbot}.
+&#x00A0;<br />&#x00A0;Next&#x00A0;use:&#x00A0;\gls{svm},&#x00A0;\gls{cbot}.
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 268--><p class="nopar" > This produces:
+ </p><div class="quote">
+ <!--l. 271--><p class="noindent" >First use: support vector machine (<span
+class="cmcsc-10"><span
+class="small-caps">s</span><span
+class="small-caps">v</span><span
+class="small-caps">m</span></span>), <span
+class="cmti-10">Clostridium botulinum</span>.
+ </p><!--l. 274--><p class="noindent" >Next use: <span
+class="cmcsc-10"><span
+class="small-caps">s</span><span
+class="small-caps">v</span><span
+class="small-caps">m</span></span>, <span
+class="cmti-10">C.</span><span
+class="cmti-10">&#x00A0;botulinum</span>.</p></div>
+<!--l. 277--><p class="indent" > As you can hopefully see from the above examples, there are two main ways of
+defining a term: as a general entry (<span
+class="cmtt-10">\newglossaryentry</span>) or as an abbreviation
+(<span
+class="cmtt-10">\newacronym </span>or, with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2011"></a>, <span
+class="cmtt-10">\newabbreviation</span>).
+</p><!--l. 282--><p class="indent" > Regardless of the method of defining a term, the term is always given a label. In
+
+
+
+the first example, the label was <span
+class="cmtt-10">ex </span>and in the other examples the label was <span
+class="cmtt-10">svm </span>(and
+<span
+class="cmtt-10">cbot </span>in the last example). The label is used to uniquely identify the term (like the
+standard <span
+class="cmtt-10">\label</span>/<span
+class="cmtt-10">\ref </span>or <span
+class="cmtt-10">\cite </span>mechanism). It&#8217;s best to just use the following
+alphanumerics in the labels: <span
+class="cmtt-10">a</span>, &#x2026;, <span
+class="cmtt-10">z</span>, <span
+class="cmtt-10">A</span>, &#x2026;, <span
+class="cmtt-10">Z</span>, <span
+class="cmtt-10">0</span>, &#x2026;, <span
+class="cmtt-10">9</span>. Sometimes you can also use
+punctuation characters but not if another package (such as <span
+class="cmss-10">babel</span><a
+ id="dx1-2012"></a>) meddles with
+them. Don&#8217;t try using any characters outside of the basic Latin set with
+<span
+class="cmss-10">inputenc</span><a
+ id="dx1-2013"></a> (for example, &eacute; or &szlig;) or things will go horribly wrong. This warning
+only applies to the label. It doesn&#8217;t apply to the text that appears in the
+document.
+</p><!--l. 297--><p class="indent" > <div class="important" title="Important Note"> Don&#8217;t use <span
+class="cmtt-10">\gls </span>in chapter or section headings as it can have some unpleasant
+side-effects. Instead use <span
+class="cmtt-10">\glsentrytext </span>for regular entries and one of <span
+class="cmtt-10">\glsentryshort</span>,
+<span
+class="cmtt-10">\glsentrylong </span>or <span
+class="cmtt-10">\glsentryfull </span>for acronyms. Alternatively use <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2014"></a>
+which provides special commands for use in section headings, such as <span
+class="cmtt-10">\glsfmtshort</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. </div>
+</p><!--l. 304--><p class="noindent" >
+</p><!--l. 306--><p class="indent" > The above examples are reasonably straightforward. The difficulty comes if you
+want to display a <span
+class="cmti-10">sorted </span>list of all the entries you have used in the document. The
+<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2015"></a> package provides a really easy way of listing all the defined
+entries:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-9">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage[sort=none]{glossaries-extra}
+&#x00A0;<br />&#x00A0;\newglossaryentry{potato}{name={potato},plural={potatoes},
+&#x00A0;<br />&#x00A0;&#x00A0;description={starchy&#x00A0;tuber}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{cabbage}{name={cabbage},
+&#x00A0;<br />&#x00A0;&#x00A0;description={vegetable&#x00A0;with&#x00A0;thick&#x00A0;green&#x00A0;or&#x00A0;purple&#x00A0;leaves}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{turnip}{name={turnip},
+&#x00A0;<br />&#x00A0;&#x00A0;description={round&#x00A0;pale&#x00A0;root&#x00A0;vegetable}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{carrot}{name={carrot},
+&#x00A0;<br />&#x00A0;&#x00A0;description={orange&#x00A0;root}}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;Chop&#x00A0;the&#x00A0;\gls{cabbage},&#x00A0;\glspl{potato}&#x00A0;and&#x00A0;\glspl{carrot}.
+&#x00A0;<br />&#x00A0;\printunsrtglossaries&#x00A0;%&#x00A0;list&#x00A0;all&#x00A0;entries
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 332--><p class="nopar" > However this method doesn&#8217;t sort the entries (they&#8217;re listed in order of definition)
+and it will display all the defined entries, regardless of whether or not you&#8217;ve used
+them all in the document, so &#8220;turnip&#8221; appears in the glossary even though there&#8217;s no
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{turnip}</span></span></span> (or similar) in the document.
+</p><!--l. 339--><p class="indent" > The <span
+class="cmss-10">sort=none</span><a
+ id="dx1-2016"></a> option isn&#8217;t essential in this case (there&#8217;s no other sort option
+available for this document), but it prevents the automatic construction of the sort
+value and so slightly improves the document build time.
+</p><!--l. 344--><p class="indent" > Note that this example document uses the same command (<span
+class="cmtt-10">\printunsrtglossaries</span>)
+that&#8217;s used with <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2017"></a> (<a
+href="#option4">Option&#x00A0;4</a>) but with <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2018"></a> you instead need to use the
+<span
+class="cmss-10">record</span><a
+ id="dx1-2019"></a> package option and one or more instances of <span
+class="cmtt-10">\GlsXtrLoadResources </span>in the
+preamble (see below).
+</p><!--l. 350--><p class="indent" > Most users prefer to have an automatically sorted list that only contains entries
+that have been used in the document. The <span
+class="cmss-10">glossaries </span>package provides three options:
+use <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;to perform the sorting (<a
+href="#option1">Option&#x00A0;1</a>); use <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-2020"></a> to perform
+the sorting (<a
+href="#option2">Option&#x00A0;2</a>); use <span
+class="cmtt-10">xindy</span><a
+ id="dx1-2021"></a> to perform the sorting (<a
+href="#option3">Option&#x00A0;3</a>). The
+extension package <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2022"></a> provides a fourth method: use <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2023"></a>
+(<a
+href="#option4">Option&#x00A0;4</a>).
+</p><!--l. 358--><p class="indent" > The first option (using <span class="TEX">T<span
+class="E">E</span>X</span>) is the simplest method, as it doesn&#8217;t require an
+external tool, but it&#8217;s very inefficient and the sorting is done according to the English
+alphabet. To use this method, add <span
+class="cmtt-10">\makenoidxglossaries </span>to the preamble and put
+<span
+class="cmtt-10">\printnoidxglossaries </span>at the place where you want your glossary. For
+
+
+
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-10">
+&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries}
+&#x00A0;<br />&#x00A0;\makenoidxglossaries&#x00A0;%&#x00A0;use&#x00A0;TeX&#x00A0;to&#x00A0;sort
+&#x00A0;<br />&#x00A0;\newglossaryentry{potato}{name={potato},plural={potatoes},
+&#x00A0;<br />&#x00A0;&#x00A0;description={starchy&#x00A0;tuber}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{cabbage}{name={cabbage},
+&#x00A0;<br />&#x00A0;&#x00A0;description={vegetable&#x00A0;with&#x00A0;thick&#x00A0;green&#x00A0;or&#x00A0;purple&#x00A0;leaves}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{turnip}{name={turnip},
+&#x00A0;<br />&#x00A0;&#x00A0;description={round&#x00A0;pale&#x00A0;root&#x00A0;vegetable}}
+&#x00A0;<br />&#x00A0;\newglossaryentry{carrot}{name={carrot},
+&#x00A0;<br />&#x00A0;&#x00A0;description={orange&#x00A0;root}}
+&#x00A0;<br />&#x00A0;\begin{document}
+&#x00A0;<br />&#x00A0;Chop&#x00A0;the&#x00A0;\gls{cabbage},&#x00A0;\glspl{potato}&#x00A0;and&#x00A0;\glspl{carrot}.
+&#x00A0;<br />&#x00A0;\printnoidxglossaries
+&#x00A0;<br />&#x00A0;\end{document}
+</div>
+<!--l. 388--><p class="nopar" >
+</p><!--l. 390--><p class="indent" > <div class="important" title="Important Note"> The <span
+class="cmtt-10">\makenoidxglossaries </span>method is very slow, uses an ASCII comparator and
+often breaks if there are commands in the <span
+class="cmtt-10">name </span>key. </div>
+</p><!--l. 394--><p class="noindent" >
+</p><!--l. 396--><p class="indent" > Try this out and run <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="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>) <span
+class="cmti-10">twice</span>. The first run won&#8217;t show the
+glossary. It will only appear on the second run. This doesn&#8217;t include &#8220;turnip&#8221; in the
+glossary because that term hasn&#8217;t been used (with commands like <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{turnip}</span></span></span>) in
+the document.
+</p><!--l. 401--><p class="indent" > The glossary has a vertical gap between the &#8220;carrot&#8221; term and the &#8220;potato&#8221; term.
+This is because the entries in the glossaries are grouped according to their
+first letter. If you don&#8217;t want this gap, just add <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-2024"></a> to the package
+options:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-11">
+\usepackage[nogroupskip]{glossaries}
+</div>
+<!--l. 407--><p class="nopar" > or you may want to try out a style that shows the group headings:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-12">
+\usepackage[style=indexgroup]{glossaries}
+</div>
+<!--l. 411--><p class="nopar" > If you try out this example you may also notice that the description is followed by a
+full stop (period) and a number. The number is the location in the document where
+the entry was used (page&#x00A0;1 in this case), so you can lookup the term in the glossary
+and be directed to the relevant pages. It may be that you don&#8217;t want this
+back-reference, in which case you can suppress it using the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-2025"></a> package
+option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-13">
+\usepackage[nonumberlist]{glossaries}
+</div>
+<!--l. 421--><p class="nopar" > If you don&#8217;t like the terminating full stop, you can suppress that with the <span
+class="cmss-10">nopostdot</span><a
+ id="dx1-2026"></a>
+package option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-14">
+\usepackage[nopostdot]{glossaries}
+</div>
+<!--l. 426--><p class="nopar" >
+</p><!--l. 428--><p class="indent" > If you tried out the previous example with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2027"></a> and <span
+class="cmtt-10">\printunsrtglossaries</span>
+the terminating full stop is missing and there are no number lists. You can add the
+full stop back with
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-15">
+\usepackage[nopostdot=false]{glossaries-extra}
+</div>
+<!--l. 433--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-16">
+\usepackage[postdot]{glossaries-extra}
+</div>
+<!--l. 437--><p class="nopar" > If you want the number lists then you need to use an indexing option.
+</p><!--l. 441--><p class="indent" > You may have noticed that I&#8217;ve used another command in the above example:
+<span
+class="cmtt-10">\glspl</span>. This displays the plural form. By default, this is just the singular form with
+the letter &#8220;s&#8221; appended, but in the case of &#8220;potato&#8221; I had to specify the correct
+plural using the <span
+class="cmtt-10">plural </span>key.
+</p><!--l. 447--><p class="indent" > As I mentioned earlier, using <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;to sort the entries is the simplest but least
+efficient method. If you have a large glossary or if your terms contain non-Latin or
+extended Latin characters, then you will have a much faster build time if you use
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-2028"></a> (<a
+href="#option2">Option&#x00A0;2</a>) or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-2029"></a> (<a
+href="#option3">Option&#x00A0;3</a>) or <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2030"></a> (<a
+href="#option4">Option&#x00A0;4</a>). If you are using
+extended Latin or non-Latin characters, then <span
+class="cmtt-10">xindy</span><a
+ id="dx1-2031"></a> or <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-2032"></a> are the
+recommended methods. These methods are described in more detail in <a
+href="#sec:printglossaries"><span
+class="cmsy-10">&sect;</span>4 </a><a
+href="#sec:printglossaries">Displaying
+a List of Entries<!--tex4ht:ref: sec:printglossaries --></a>.
+</p><!--l. 457--><p class="indent" > The rest of this document briefly describes the main commands provided by the
+<span
+class="cmss-10">glossaries </span>package. (Most of these are also available with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-2033"></a> but may
+behave slightly differently.)
+</p><!--l. 462--><p class="noindent" >
+</p>
+<!--l. 462--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2 </span> <a
+ id="sec:defterm"></a>Defining Terms</h3>
+<!--l. 465--><p class="noindent" >When you use the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-3001"></a> package, you need to define glossary entries in the
+document preamble. These entries could be a&#x00A0;word, phrase, abbreviation or symbol.
+They&#8217;re usually accompanied by a&#x00A0;description, which could be a short sentence or an
+in-depth explanation that spans multiple paragraphs. The simplest method of
+defining an entry is to use:
+</p><!--l. 472--><p class="indent" > <hr><div title="Definition"></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>
+<br /><span class="verb"><span
+class="cmtt-10">{</span></span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name={</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">},</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description={</span>&#x27E8;<span
+class="cmitt-10">description</span>&#x27E9;<span
+class="cmtt-10">},</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;</span>&#x27E8;<span
+class="cmitt-10">other</span><span
+class="cmitt-10">&#x00A0;options</span>&#x27E9;
+<br /><span class="verb"><span
+class="cmtt-10">}</span></span>
+</div>
+</div> </div><hr>
+
+
+
+<!--l. 480--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is a unique label that identifies this entry. (Don&#8217;t include the angle
+brackets &#x27E8; &#x27E9;. They just indicate the parts of the code you need to change when you use
+this command in your document.) The &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the word, phrase or symbol
+you are defining, and &#x27E8;<span
+class="cmti-10">description</span>&#x27E9; is the description to be displayed in the
+glossary.
+</p><!--l. 488--><p class="indent" > This command is a &#8220;short&#8221; command, which means that &#x27E8;<span
+class="cmti-10">description</span>&#x27E9; can&#8217;t
+contain a&#x00A0;paragraph break. If you have a&#x00A0;long description, you can instead
+use:
+</p><!--l. 492--><p class="indent" > <hr><div title="Definition"></p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\longnewglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<br /><span class="verb"><span
+class="cmtt-10">{</span></span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name={</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">},</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;</span>&#x27E8;<span
+class="cmitt-10">other</span><span
+class="cmitt-10">&#x00A0;options</span>&#x27E9;
+<br /><span class="verb"><span
+class="cmtt-10">}</span></span>
+<br /><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">description</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> </div><hr>
+<!--l. 500--><p class="noindent" >
+</p><!--l. 502--><p class="indent" > Examples:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-3003x1">Define the term &#8220;set&#8221; with the label <span
+class="cmtt-10">set</span>:
+
+
+
+ <div class="verbatim" id="verbatim-17">
+ \newglossaryentry{set}
+ &#x00A0;<br />{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={set},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;collection&#x00A0;of&#x00A0;objects}
+ &#x00A0;<br />}
+</div>
+ <!--l. 511--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-3005x2">Define the symbol <span
+class="cmsy-10">&#x2205; </span>with the label <span
+class="cmtt-10">emptyset</span>:
+
+
+
+ <div class="verbatim" id="verbatim-18">
+ \newglossaryentry{emptyset}
+ &#x00A0;<br />{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={\ensuremath{\emptyset}},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={the&#x00A0;empty&#x00A0;set}
+ &#x00A0;<br />}
+</div>
+ <!--l. 521--><p class="nopar" > (This will also need a <span
+class="cmtt-10">sort </span>key if you use Options&#x00A0;<a
+href="#option1">1</a> or&#x00A0;<a
+href="#option3">3</a>, see below.)
+ </p></li>
+ <li
+ class="enumerate" id="x1-3007x3">Define the phrase &#8220;Fish Age&#8221; with the label <span
+class="cmtt-10">fishage</span>:
+
+
+
+ <div class="verbatim" id="verbatim-19">
+ \longnewglossaryentry{fishage}
+ &#x00A0;<br />{name={Fish&#x00A0;Age}}
+ &#x00A0;<br />{%
+ &#x00A0;<br />&#x00A0;&#x00A0;A&#x00A0;common&#x00A0;name&#x00A0;for&#x00A0;the&#x00A0;Devonian&#x00A0;geologic&#x00A0;period
+ &#x00A0;<br />&#x00A0;&#x00A0;spanning&#x00A0;from&#x00A0;the&#x00A0;end&#x00A0;of&#x00A0;the&#x00A0;Silurian&#x00A0;Period&#x00A0;to
+ &#x00A0;<br />&#x00A0;&#x00A0;the&#x00A0;beginning&#x00A0;of&#x00A0;the&#x00A0;Carboniferous&#x00A0;Period.
+ &#x00A0;<br />&#x00A0;&#x00A0;This&#x00A0;age&#x00A0;was&#x00A0;known&#x00A0;for&#x00A0;its&#x00A0;remarkable&#x00A0;variety&#x00A0;of
+ &#x00A0;<br />&#x00A0;&#x00A0;fish&#x00A0;species.
+ &#x00A0;<br />}
+</div>
+ <!--l. 538--><p class="nopar" > (The percent character discards the end of line character that would otherwise
+ cause an unwanted space to appear at the start of the description.)
+ </p></li>
+ <li
+ class="enumerate" id="x1-3009x4">Take care if the first letter is an extended Latin or non-Latin character (either
+ specified via a&#x00A0;command such as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\&#8217;e</span></span></span> or explicitly via the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-3010"></a> package such
+ as <span
+class="cmtt-10">&eacute;</span>). This first letter must be placed in a&#x00A0;group:
+
+
+
+ <div class="verbatim" id="verbatim-20">
+ \newglossaryentry{elite}
+ &#x00A0;<br />{
+ &#x00A0;<br />&#x00A0;&#x00A0;name={{\'e}lite},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={select&#x00A0;group&#x00A0;or&#x00A0;class}
+ &#x00A0;<br />}
+</div>
+ <!--l. 554--><p class="nopar" > or </p><div class="alltt">
+ <div class="obeylines-v">
+ <span class="verb"><span
+class="cmtt-10">\newglossaryentry{elite}</span></span>
+ <br /><span class="verb"><span
+class="cmtt-10">{</span></span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}lite}</span></span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;or</span><span
+class="cmtt-10">&#x00A0;class}</span></span>
+ <br /><span class="verb"><span
+class="cmtt-10">}</span></span>
+</div>
+ </div></li></ol>
+<!--l. 564--><p class="noindent" >(For further details, see the section &#8220;UTF-8&#8221; of the <a
+href="https://ctan.org/pkg/mfirstuc" ><span
+class="cmss-10">mfirstuc</span></a> user manual.)
+</p><!--l. 567--><p class="indent" > If you use <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3011"></a> with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-3012"></a> then the terms must be defined in a <span
+class="cmtt-10">.bib</span>
+file. For example: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;Encoding:</span><span
+class="cmtt-10">&#x00A0;UTF-8</span>
+<br />
+<br /><span
+class="cmtt-10">@entry</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">set,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">set</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">a</span><span
+class="cmtt-10">&#x00A0;collection</span><span
+class="cmtt-10">&#x00A0;of</span><span
+class="cmtt-10">&#x00A0;objects</span><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmsy-10">}</span>
+<br />
+<br /><span
+class="cmtt-10">@entry</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">emptyset,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{\ensuremath{\emptyset}}</span></span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">the</span><span
+class="cmtt-10">&#x00A0;empty</span><span
+class="cmtt-10">&#x00A0;set</span><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmsy-10">}</span>
+<br />
+<br /><span
+class="cmtt-10">@entry</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">fishage,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">Fish</span><span
+class="cmtt-10">&#x00A0;Age</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">A</span><span
+class="cmtt-10">&#x00A0;common</span><span
+class="cmtt-10">&#x00A0;name</span><span
+class="cmtt-10">&#x00A0;for</span><span
+class="cmtt-10">&#x00A0;the</span><span
+class="cmtt-10">&#x00A0;Devonian</span><span
+class="cmtt-10">&#x00A0;geologic</span><span
+class="cmtt-10">&#x00A0;period</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;spanning</span><span
+class="cmtt-10">&#x00A0;from</span><span
+class="cmtt-10">&#x00A0;the</span><span
+class="cmtt-10">&#x00A0;end</span><span
+class="cmtt-10">&#x00A0;of</span><span
+class="cmtt-10">&#x00A0;the</span><span
+class="cmtt-10">&#x00A0;Silurian</span><span
+class="cmtt-10">&#x00A0;Period</span><span
+class="cmtt-10">&#x00A0;to</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;the</span><span
+class="cmtt-10">&#x00A0;beginning</span><span
+class="cmtt-10">&#x00A0;of</span><span
+class="cmtt-10">&#x00A0;the</span><span
+class="cmtt-10">&#x00A0;Carboniferous</span><span
+class="cmtt-10">&#x00A0;Period.</span>
+
+
+
+<br />
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;This</span><span
+class="cmtt-10">&#x00A0;age</span><span
+class="cmtt-10">&#x00A0;was</span><span
+class="cmtt-10">&#x00A0;known</span><span
+class="cmtt-10">&#x00A0;for</span><span
+class="cmtt-10">&#x00A0;its</span><span
+class="cmtt-10">&#x00A0;remarkable</span><span
+class="cmtt-10">&#x00A0;variety</span><span
+class="cmtt-10">&#x00A0;of</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;fish</span><span
+class="cmtt-10">&#x00A0;species.</span><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmsy-10">}</span>
+<br />
+<br /><span
+class="cmtt-10">@entry</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">elite,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}lite}</span></span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;or</span><span
+class="cmtt-10">&#x00A0;class}</span></span>
+<br /><span
+class="cmsy-10">}</span>
+</div>
+</div> (The <span
+class="cmtt-10">.bib </span>format doesn&#8217;t allow spaces in labels so you can&#8217;t have <span
+class="cmtt-10">fish age </span>as the
+label, but you can have <span
+class="cmtt-10">fish-age</span>.) This method requires the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-3013"></a>&#8217;s <span
+class="cmss-10">record</span><a
+ id="dx1-3014"></a>
+package option:
+
+
+
+ <div class="verbatim" id="verbatim-21">
+\usepackage[record]{glossaries-extra}
+</div>
+<!--l. 604--><p class="nopar" > and the <span
+class="cmtt-10">.bib </span>file is specified in the resource command. For example, if the
+<span
+class="cmtt-10">.bib </span>file is called <span
+class="cmtt-10">entries.bib </span>then put the following line in the document
+preamble:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-22">
+\GlsXtrLoadResources[src={entries}]
+</div>
+<!--l. 610--><p class="nopar" > You can have a comma-separated list. For example, if you also have entries defined
+in the file <span
+class="cmtt-10">entries2.bib</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-23">
+\GlsXtrLoadResources[src={entries,entries2.bib}]
+</div>
+<!--l. 615--><p class="nopar" >
+</p><!--l. 617--><p class="indent" > There are other keys you can use when you define an entry. For example, the <span
+class="cmtt-10">name</span>
+key indicates how the term should appear in the list of entries (glossary), but if the
+term should appear differently when you reference it with <span
+class="cmtt-10">\gls{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>in the
+document, you need to use the <span
+class="cmtt-10">text </span>key as well.
+</p><!--l. 623--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-24">
+\newglossaryentry{latinalph}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={Latin&#x00A0;Alphabet},
+&#x00A0;<br />&#x00A0;&#x00A0;text={Latin&#x00A0;alphabet},
+&#x00A0;<br />&#x00A0;&#x00A0;description={alphabet&#x00A0;consisting&#x00A0;of&#x00A0;the&#x00A0;letters
+&#x00A0;<br />&#x00A0;&#x00A0;a,&#x00A0;\ldots,&#x00A0;z,&#x00A0;A,&#x00A0;\ldots,&#x00A0;Z}
+&#x00A0;<br />}
+</div>
+<!--l. 632--><p class="nopar" > This will appear in the text as &#8220;Latin alphabet&#8221; but will be listed in the glossary
+as &#8220;Latin Alphabet&#8221;. With <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3015"></a> this entry is defined in the <span
+class="cmtt-10">.bib </span>file
+as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-25">
+@entry{latinalph,
+&#x00A0;<br />&#x00A0;&#x00A0;name={Latin&#x00A0;Alphabet},
+&#x00A0;<br />&#x00A0;&#x00A0;text={Latin&#x00A0;alphabet},
+&#x00A0;<br />&#x00A0;&#x00A0;description={alphabet&#x00A0;consisting&#x00A0;of&#x00A0;the&#x00A0;letters
+&#x00A0;<br />&#x00A0;&#x00A0;a,&#x00A0;\ldots,&#x00A0;z,&#x00A0;A,&#x00A0;\ldots,&#x00A0;Z}
+&#x00A0;<br />}
+</div>
+<!--l. 644--><p class="nopar" >
+</p><!--l. 646--><p class="indent" > Another commonly used key is <span
+class="cmtt-10">plural </span>for specifying the plural of the term. This
+defaults to the value of the <span
+class="cmtt-10">text </span>key with an &#8220;s&#8221; appended, but if this is incorrect,
+just use the <span
+class="cmtt-10">plural </span>key to override it:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-26">
+\newglossaryentry{oesophagus}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={{\oe}sophagus},
+&#x00A0;<br />&#x00A0;&#x00A0;plural={{\oe}sophagi},
+&#x00A0;<br />&#x00A0;&#x00A0;description={canal&#x00A0;from&#x00A0;mouth&#x00A0;to&#x00A0;stomach}
+&#x00A0;<br />}
+</div>
+<!--l. 657--><p class="nopar" > (Remember from earlier that the initial ligature <span
+class="cmtt-10">\oe </span>needs to be grouped.)
+</p><!--l. 661--><p class="indent" > Abbreviations can be defined using
+</p><!--l. 663--><p class="indent" > <hr><div title="Definition"><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. 664--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label (as per <span
+class="cmtt-10">\newglossaryentry</span>), &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; is the short form and
+&#x27E8;<span
+class="cmti-10">long</span>&#x27E9; is the long form. For example, the following defines an abbreviation:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-27">
+\newacronym{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 671--><p class="nopar" > This internally uses <span
+class="cmtt-10">\newglossaryentry </span>to define an entry with the label <span
+class="cmtt-10">svm</span>. By
+default, the <span
+class="cmtt-10">name </span>key is set to &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#8220;SVM&#8221; in the above example) and the
+<span
+class="cmtt-10">description </span>key is set to &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#8220;support vector machine&#8221; in the above example). If,
+instead, you want to be able to specify your own description you can do this using
+the optional argument:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-28">
+\newacronym
+&#x00A0;<br />&#x00A0;[description={statistical&#x00A0;pattern&#x00A0;recognition&#x00A0;technique}]
+&#x00A0;<br />&#x00A0;{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 683--><p class="nopar" >
+</p><!--l. 685--><p class="indent" > Before you define your acronyms (or other types of abbreviations), you need to
+specify which style to use with
+</p><!--l. 688--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\setacronymstyle{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 689--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">style name</span>&#x27E9; is the name of the style. There are a number of predefined styles,
+such as: <span
+class="cmtt-10">long-short </span>(on first use display the long form with the short form in
+parentheses); <span
+class="cmtt-10">short-long </span>(on first use display the short form with the long form in
+parentheses); <span
+class="cmtt-10">long-short-desc </span>(like <span
+class="cmtt-10">long-short </span>but you need to specify the
+description); or <span
+class="cmtt-10">short-long-desc </span>(like <span
+class="cmtt-10">short-long </span>but you need to specify the
+description). There are some other styles as well that use <span
+class="cmtt-10">\textsc </span>to typeset the
+acronym or that use a footnote on first use. See the main user guide for further
+details.
+</p><!--l. 701--><p class="indent" > The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-3016"></a> package provides improved abbreviation handling with <a
+href="http://www.dickimaw-books.com/gallery/sample-abbr-styles.shtml" >a lot
+more predefined styles</a>. With this extension package, abbreviations are defined
+using:
+</p><!--l. 705--><p class="indent" > <hr><div title="Definition"><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. 706--><p class="noindent" >
+You can still use <span
+class="cmtt-10">\newacronym </span>but it&#8217;s redefined to use the new abbreviation
+interface. The style must now be set using:
+</p><!--l. 710--><p class="indent" > <hr><div title="Definition"><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. 711--><p class="noindent" >
+The default &#x27E8;<span
+class="cmti-10">category</span>&#x27E9; is <span
+class="cmtt-10">abbreviation</span>. If you use <span
+class="cmtt-10">\newacronym </span>the category is
+<span
+class="cmtt-10">acronym</span>, which is why you need to use the optional argument if you define
+abbreviations with <span
+class="cmtt-10">\newacronym </span>when <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-3017"></a> has been loaded: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\setabbreviationstyle[acronym]{</span>&#x27E8;<span
+class="cmitt-10">style</span><span
+class="cmitt-10">&#x00A0;name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> If you use <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3018"></a> then abbreviations are defined in the <span
+class="cmtt-10">.bib </span>file in the format:
+<div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">@abbreviation</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;long={</span>&#x27E8;<span
+class="cmitt-10">long</span><span
+class="cmitt-10">&#x00A0;form</span>&#x27E9;<span
+class="cmtt-10">},</span>
+
+
+
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;short={</span>&#x27E8;<span
+class="cmitt-10">short</span><span
+class="cmitt-10">&#x00A0;form</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<br /><span
+class="cmsy-10">}</span>
+</div>
+</div>
+<!--l. 728--><p class="indent" > The plural forms for abbreviations can be specified using the <span
+class="cmtt-10">longplural </span>and
+<span
+class="cmtt-10">shortplural </span>keys. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-29">
+\newacronym
+&#x00A0;<br />&#x00A0;[longplural={diagonal&#x00A0;matrices}]
+&#x00A0;<br />&#x00A0;{dm}{DM}{diagonal&#x00A0;matrix}
+</div>
+<!--l. 734--><p class="nopar" > or (with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-3019"></a>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-30">
+\newabbreviation&#x00A0;%&#x00A0;glossaries-extra.sty
+&#x00A0;<br />&#x00A0;[longplural={diagonal&#x00A0;matrices}]
+&#x00A0;<br />&#x00A0;{dm}{DM}{diagonal&#x00A0;matrix}
+</div>
+<!--l. 740--><p class="nopar" > If omitted, the defaults are again obtained by appending an &#8220;s&#8221; to the singular
+versions. With <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3020"></a>, the definition in the <span
+class="cmtt-10">.bib </span>file is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-31">
+@abbreviation{dm,
+&#x00A0;<br />&#x00A0;&#x00A0;short={DM},
+&#x00A0;<br />&#x00A0;&#x00A0;long={diagonal&#x00A0;matrix},
+&#x00A0;<br />&#x00A0;&#x00A0;longplural={diagonal&#x00A0;matrices}
+&#x00A0;<br />}
+</div>
+<!--l. 750--><p class="nopar" >
+</p><!--l. 752--><p class="indent" > It&#8217;s also possible to have both a&#x00A0;name and a&#x00A0;corresponding symbol.
+Just use the <span
+class="cmtt-10">name </span>key for the name and the <span
+class="cmtt-10">symbol </span>key for the symbol. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-32">
+\newglossaryentry{emptyset}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={empty&#x00A0;set},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={\ensuremath{\emptyset}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={the&#x00A0;set&#x00A0;containing&#x00A0;no&#x00A0;elements}
+&#x00A0;<br />}
+</div>
+<!--l. 762--><p class="nopar" > or with <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3021"></a> the definition in the <span
+class="cmtt-10">.bib </span>file is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-33">
+@entry{emptyset,
+&#x00A0;<br />&#x00A0;&#x00A0;name={empty&#x00A0;set},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={\ensuremath{\emptyset}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={the&#x00A0;set&#x00A0;containing&#x00A0;no&#x00A0;elements}
+&#x00A0;<br />}
+</div>
+<!--l. 770--><p class="nopar" >
+</p><!--l. 772--><p class="indent" > If you want the symbol in the <span
+class="cmtt-10">name </span>field then you must supply a <span
+class="cmtt-10">sort </span>value with
+Options&#x00A0;<a
+href="#option1">1</a> and&#x00A0;<a
+href="#option3">3</a> otherwise you&#8217;ll end up with errors from <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-3022"></a>. With
+<a
+href="#option2">Option&#x00A0;2</a> (<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-3023"></a>) it&#8217;s not quite so important but you may find the resulting
+order is a little odd. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-34">
+\newglossaryentry{emptyset}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={\ensuremath{\emptyset}},
+&#x00A0;<br />&#x00A0;&#x00A0;sort={empty&#x00A0;set},
+&#x00A0;<br />&#x00A0;&#x00A0;description={the&#x00A0;set&#x00A0;containing&#x00A0;no&#x00A0;elements}
+&#x00A0;<br />}
+</div>
+<!--l. 784--><p class="nopar" > This displays the symbol as <span
+class="cmsy-10">&#x2205; </span>but sorts according to &#8220;empty set&#8221;. You
+may want to consider using <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-3024"></a>&#8217;s <span
+class="cmss-10">symbols</span><a
+ id="dx1-3025"></a> package option which
+provides
+</p><!--l. 790--><p class="indent" > <hr><div title="Definition"><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. 791--><p class="noindent" >
+This internally uses <span
+class="cmtt-10">\newglossaryentry </span>but automatically sets the <span
+class="cmtt-10">sort </span>key to the
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-35">
+\documentclass{article}
+&#x00A0;<br />\usepackage[symbols]{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\glsxtrnewsymbol&#x00A0;%&#x00A0;requires&#x00A0;glossaries-extra.sty&#x00A0;'symbols'&#x00A0;option
+&#x00A0;<br />&#x00A0;[description={the&#x00A0;set&#x00A0;containing&#x00A0;no&#x00A0;elements}]
+&#x00A0;<br />&#x00A0;{emptyset}%&#x00A0;label&#x00A0;(and&#x00A0;sort&#x00A0;value)
+&#x00A0;<br />&#x00A0;{\ensuremath{\emptyset}}%&#x00A0;symbol
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{emptyset}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 811--><p class="nopar" > Now the sort value is &#8220;emptyset&#8221; rather than the previous &#8220;empty set&#8221;.
+</p><!--l. 815--><p class="indent" > With <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3026"></a> you can define this in the <span
+class="cmtt-10">.bib </span>file as
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-36">
+@entry{emptyset,
+&#x00A0;<br />&#x00A0;&#x00A0;name={\ensuremath{\emptyset}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={the&#x00A0;set&#x00A0;containing&#x00A0;no&#x00A0;elements}
+&#x00A0;<br />}
+</div>
+<!--l. 822--><p class="nopar" > in which case <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-3027"></a> will try to interpret the <span
+class="cmtt-10">name </span>field to determine the sort
+value. Alternatively you can use:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-37">
+@symbol{emptyset,
+&#x00A0;<br />&#x00A0;&#x00A0;name={\ensuremath{\emptyset}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={the&#x00A0;set&#x00A0;containing&#x00A0;no&#x00A0;elements}
+&#x00A0;<br />}
+</div>
+<!--l. 830--><p class="nopar" > which will use the label (<span
+class="cmtt-10">emptyset</span>) as the sort value. (You don&#8217;t need the <span
+class="cmss-10">symbols</span><a
+ id="dx1-3028"></a>
+package option in this case, unless you want a separate symbols list.) The
+corresponding document (where the definition is in the file <span
+class="cmtt-10">entries.bib</span>) is
+now:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-38">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record]{glossaries-extra}
+&#x00A0;<br />\GlsXtrLoadResources[src=entries]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{emptyset}
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 847--><p class="nopar" >
+</p><!--l. 849--><p class="noindent" >
+</p>
+<!--l. 849--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3 </span> <a
+ id="sec:useterm"></a>Using Entries</h3>
+<!--l. 852--><p class="noindent" >Once you have defined your entries, as described above, you can reference them in
+your document. There are a&#x00A0;number of commands to do this, but the most common
+one is:
+</p><!--l. 856--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\gls{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 857--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label you assigned to the entry when you defined it. For example,
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{fishage}</span></span></span> will display &#8220;Fish Age&#8221; in the text (given the definition from the
+previous section). If you are using <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-4001"></a> then this will display ?? (like
+<span
+class="cmtt-10">\ref </span>and <span
+class="cmtt-10">\cite</span>) until <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-4002"></a> has created the relevant files and <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;is
+rerun.
+</p><!--l. 865--><p class="indent" > If you are using the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-4003"></a> package (remember to load it before <span
+class="cmss-10">glossaries</span>) <span
+class="cmtt-10">\gls</span>
+will create a hyperlink to the corresponding entry in the glossary. If you want to
+suppress the hyperlink for a particular instance, use the starred form <span
+class="cmtt-10">\gls* </span>for
+example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls*{fishage}</span></span></span>. The other commands described in this section all have a
+similar starred form.
+</p><!--l. 872--><p class="indent" > If the entry was defined as an acronym (using <span
+class="cmtt-10">\newacronym </span>with <span
+class="cmss-10">glossaries</span>
+described above) or an abbreviation (using <span
+class="cmtt-10">\newabbreviation </span>with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-4004"></a>),
+then <span
+class="cmtt-10">\gls </span>will display the full form the first time it&#8217;s used and just the
+short form on subsequent use. For example, if the style is set to <span
+class="cmtt-10">long-short</span>,
+then <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> will display &#8220;support vector machine (SVM)&#8221; the first time
+it&#8217;s used, but the next occurrence of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> will just display &#8220;SVM&#8221;.
+(If you use <span
+class="cmtt-10">\newacronym </span>with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-4005"></a> the default doesn&#8217;t show the
+long form on first use. You&#8217;ll need to change the style first, as described
+earlier.)
+
+
+
+</p><!--l. 884--><p class="indent" > If you want the plural form, you can use:
+</p><!--l. 886--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glspl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 887--><p class="noindent" >
+instead of <span
+class="cmtt-10">\gls{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. For example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspl{set}</span></span></span> displays &#8220;sets&#8221;.
+</p><!--l. 891--><p class="indent" > If the term appears at the start of a&#x00A0;sentence, you can convert the first letter to
+upper case using:
+</p><!--l. 894--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\Gls{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 895--><p class="noindent" >
+for the singular form or
+</p><!--l. 898--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\Glspl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 899--><p class="noindent" >
+for the plural form. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-39">
+\Glspl{set}&#x00A0;are&#x00A0;collections.
+</div>
+<!--l. 903--><p class="nopar" > produces &#8220;Sets are collections&#8221;.
+</p><!--l. 906--><p class="indent" > If you&#8217;ve specified a symbol using the <span
+class="cmtt-10">symbol </span>key, you can display it
+using:
+</p><!--l. 909--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glssymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 910--><p class="noindent" >
+</p><!--l. 912--><p class="noindent" >
+</p>
+<!--l. 912--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4 </span> <a
+ id="sec:printglossaries"></a>Displaying a List of Entries</h3>
+<!--l. 915--><p class="noindent" >In <a
+href="#sec:start"><span
+class="cmsy-10">&sect;</span>1 </a><a
+href="#sec:start">Getting Started<!--tex4ht:ref: sec:start --></a>, I mentioned that there are three options you can
+choose from to create an automatically sorted glossary with the base <span
+class="cmss-10">glossaries</span>
+package. These are also available with the extension package <span
+class="cmss-10">glossaries-extra</span>
+along with a fourth option. These four options are listed below in a little
+more detail. <a
+href="#x1-50011">Table&#x00A0;1</a> summarises the main advantages and disadvantages.
+(There&#8217;s a more detailed summary in the main <span
+class="cmss-10">glossaries </span>user manual.) See also
+<a
+href="https://www.dickimaw-books.com/latex/buildglossaries/" >Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document
+build</a>.
+</p>
+ <div class="table">
+
+
+
+<!--l. 925--><p class="indent" > <a
+ id="x1-50011"></a></p><hr class="float" /><div class="float"
+>
+
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;1: </span><span
+class="content">Comparison of Glossary Options</span></div><!--tex4ht:label?: x1-50011 -->
+<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" /><col
+id="TBL-2-3" /><col
+id="TBL-2-4" /><col
+id="TBL-2-5" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1"
+class="td11"> <!--l. 931--><p class="noindent" > </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-2"
+class="td11"> <a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-3"
+class="td11"> <a
+href="#option2"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;2</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-4"
+class="td11"> <a
+href="#option3"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;3</span></a> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-1-5"
+class="td11"> <a
+href="#option4"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;4</span></a> </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="td11"> <!--l. 933--><p class="noindent" >Requires
+ <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-5002"></a>? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-2"
+class="td11"> <span id="textcolor1"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-3"
+class="td11"> <span id="textcolor2"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-4"
+class="td11"> <span id="textcolor3"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-2-5"
+class="td11"> <span id="textcolor4"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 935--><p class="noindent" >Requires
+ an
+ external
+ application? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-2"
+class="td11"> <span id="textcolor5"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-3"
+class="td11"> <span id="textcolor6"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-4"
+class="td11"> <span id="textcolor7"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-3-5"
+class="td11"> <span id="textcolor8"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 937--><p class="noindent" >Requires
+ Perl? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-2"
+class="td11"> <span id="textcolor9"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-3"
+class="td11"> <span id="textcolor10"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-4"
+class="td11"> <span id="textcolor11"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-4-5"
+class="td11"> <span id="textcolor12"><span
+class="pzdr-">&#x2718;</span></span> </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="td11"> <!--l. 939--><p class="noindent" >Requires
+ Java? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-2"
+class="td11"> <span id="textcolor13"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-3"
+class="td11"> <span id="textcolor14"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-4"
+class="td11"> <span id="textcolor15"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-5-5"
+class="td11"> <span id="textcolor16"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 941--><p class="noindent" >Can
+ sort
+ extended
+ Latin
+ or
+ non-Latin
+ alphabets? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-2"
+class="td11"> <span id="textcolor17"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-3"
+class="td11"> <span id="textcolor18"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-4"
+class="td11"> <span id="textcolor19"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-6-5"
+class="td11"> <span id="textcolor20"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 944--><p class="noindent" >Efficient
+ sort
+ algorithm? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-2"
+class="td11"> <span id="textcolor21"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-3"
+class="td11"> <span id="textcolor22"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-4"
+class="td11"> <span id="textcolor23"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-7-5"
+class="td11"> <span id="textcolor24"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 946--><p class="noindent" >Can
+ use
+ different
+ sort
+ methods
+ for
+ each
+ glossary? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-2"
+class="td11"> <span id="textcolor25"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-3"
+class="td11"> <span id="textcolor26"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-4"
+class="td11"> <span id="textcolor27"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-8-5"
+class="td11"> <span id="textcolor28"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 948--><p class="noindent" >Any
+ problematic
+ sort
+ values? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-2"
+class="td11"> <span id="textcolor29"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-3"
+class="td11"> <span id="textcolor30"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-4"
+class="td11"> <span id="textcolor31"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-9-5"
+class="td11"> <span id="textcolor32"><span
+class="pzdr-">&#x2718;</span></span> </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="td11"> <!--l. 950--><p class="noindent" >Can
+ form
+ ranges
+ in
+ the
+ location
+ lists? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-2"
+class="td11"> <span id="textcolor33"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-3"
+class="td11"> <span id="textcolor34"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-4"
+class="td11"> <span id="textcolor35"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-10-5"
+class="td11"> <span id="textcolor36"><span
+class="pzdr-">&#x2714;</span></span> </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="td11"> <!--l. 952--><p class="noindent" >Can
+ have
+ non-standard
+ locations? </p></td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-2"
+class="td11"> <span id="textcolor37"><span
+class="pzdr-">&#x2714;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-3"
+class="td11"> <span id="textcolor38"><span
+class="pzdr-">&#x2718;</span></span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-4"
+class="td11"> <span id="textcolor39"><span
+class="pzdr-">&#x2714;</span></span><sup class="textsuperscript"><span
+class="cmsy-9">&#8224;</span></sup> </td><td style="white-space:nowrap; text-align:center;" id="TBL-2-11-5"
+class="td11"> <span id="textcolor40"><span
+class="pzdr-">&#x2714;</span></span> </td>
+</tr></table></div>
+<!--l. 955--><p class="noindent" ><sup class="textsuperscript"><span
+class="cmsy-9">&#8224;</span></sup> <span
+class="cmr-8">Requires some setting up.</span>
+
+
+
+</p>
+ </div><hr class="endfloat" />
+ </div>
+ <dl class="description"><dt class="description">
+ </dt><dd
+class="description"><a
+ id="option1"></a><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span>:
+ <!--l. 962--><p class="noindent" >This is the simplest option but it&#8217;s slow and if you want a sorted
+ list, it doesn&#8217;t work for non-Latin alphabets. The <span
+class="cmtt-10">name </span>mustn&#8217;t contain
+ commands (or, if it does, the <span
+class="cmtt-10">sort </span>value must be supplied) unless you
+ have the package option <span
+class="cmss-10">sanitizesort</span><a
+ id="dx1-5003"></a> or <span
+class="cmss-10">sort=def</span><a
+ id="dx1-5004"></a> or <span
+class="cmss-10">sort=use</span><a
+ id="dx1-5005"></a>.
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-5007x1">Add <span
+class="cmtt-10">\makenoidxglossaries </span>to your preamble (before you start
+ defining your entries, as described in <a
+href="#sec:defterm"><span
+class="cmsy-10">&sect;</span>2 </a><a
+href="#sec:defterm">Defining Terms<!--tex4ht:ref: sec:defterm --></a>).
+ </li>
+ <li
+ class="enumerate" id="x1-5009x2">Put
+ <!--l. 976--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printnoidxglossary[sort=</span>&#x27E8;<span
+class="cmitt-10">order</span>&#x27E9;<span
+class="cmtt-10">,</span>&#x27E8;<span
+class="cmitt-10">other options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 977--><p class="noindent" >
+ where you want your list of entries to appear. The sort &#x27E8;<span
+class="cmti-10">order</span>&#x27E9; may be one
+ of: <span
+class="cmtt-10">word </span>(word ordering), <span
+class="cmtt-10">letter </span>(letter ordering), <span
+class="cmtt-10">case </span>(case-sensitive
+ letter ordering), <span
+class="cmtt-10">def </span>(in order of definition) or <span
+class="cmtt-10">use </span>(in order of use).
+ Alternatively, use
+ </p><!--l. 984--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printnoidxglossaries </span></div><hr>
+ </p><!--l. 985--><p class="noindent" >
+ to display all your glossaries (if you have more than one). This command
+ doesn&#8217;t have any arguments.
+ </p><!--l. 989--><p class="noindent" >This option allows you to have different sort methods. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-40">
+ \printnoidxglossary[sort=word]%&#x00A0;main&#x00A0;glossary
+ &#x00A0;<br />\printnoidxglossary[type=symbols,sort=use]%&#x00A0;symbols&#x00A0;glossary
+</div>
+ <!--l. 994--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5011x3">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;twice on your document. (As you would do to make a&#x00A0;table
+ of contents appear.) For example, click twice on the &#8220;typeset&#8221; or &#8220;build&#8221;
+ or &#8220;PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#8221; button in your editor.</li></ol>
+ <!--l. 1000--><p class="noindent" >Here&#8217;s a complete document (<span
+class="cmtt-10">myDoc.tex</span>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-41">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage{glossaries}
+ &#x00A0;<br />\makenoidxglossaries&#x00A0;%&#x00A0;use&#x00A0;TeX&#x00A0;to&#x00A0;sort
+ &#x00A0;<br />\newglossaryentry{sample}{name={sample},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}}
+ &#x00A0;<br />\begin{document}
+ &#x00A0;<br />A&#x00A0;\gls{sample}.
+ &#x00A0;<br />\printnoidxglossaries&#x00A0;%&#x00A0;iterate&#x00A0;over&#x00A0;all&#x00A0;indexed&#x00A0;entries
+ &#x00A0;<br />\end{document}
+</div>
+ <!--l. 1016--><p class="nopar" > Document build:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-42">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1021--><p class="nopar" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><a
+ id="option2"></a><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;2</span>:
+ <!--l. 1025--><p class="noindent" >This option uses an application called <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5012"></a> to sort the entries. This
+ application comes with all modern <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions, but it&#8217;s hard-coded for
+ the non-extended Latin alphabet. This process involves making <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;write
+ the glossary information to a temporary file which <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5013"></a> reads.
+ Then <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5014"></a> writes a&#x00A0;new file containing the code to typeset the
+ glossary. <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;then reads this file on the next run. The <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5015"></a>
+ application is automatically invoked by the helper <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5016"></a>
+ script, which works out all the appropriate settings from the <span
+class="cmtt-10">.aux</span>
+ file.
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-5018x1">If you are using <span
+class="cmss-10">ngerman</span><a
+ id="dx1-5019"></a><span class="footnote-mark"><a
+href="#fn1x0" id="fn1x0-bk"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-5020f1"></a>
+ or some other package that makes the double-quote character <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"</span></span></span> a
+ shorthand, then use <span
+class="cmtt-10">\GlsSetQuote </span>to change this to some other character.
+ For example:
+
+
+
+ <div class="verbatim" id="verbatim-43">
+ \GlsSetQuote{+}
+</div>
+ <!--l. 1044--><p class="nopar" > Use this as soon as possible after you&#8217;ve loaded the <span
+class="cmss-10">glossaries</span>
+ package.
+ </p></li>
+ <li
+ class="enumerate" id="x1-5023x2">Add <span
+class="cmtt-10">\makeglossaries </span>to your preamble (before you start defining your
+ entries).
+ </li>
+ <li
+ class="enumerate" id="x1-5025x3">Put
+ <!--l. 1053--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printglossary[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1054--><p class="noindent" >
+ where you want your list of entries (glossary) to appear. (The <span
+class="cmtt-10">sort </span>key
+ isn&#8217;t available in &#x27E8;<span
+class="cmti-10">options</span>&#x27E9;.) Alternatively, use
+ </p><!--l. 1059--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printglossaries </span></div><hr>
+ </p><!--l. 1060--><p class="noindent" >
+ which will display all glossaries (if you have more than one). This
+ command doesn&#8217;t have any arguments.
+ </p><!--l. 1064--><p class="noindent" ><div class="important" title="Important Note"> All glossaries are sorted using the same method which may be identified
+ with one of the package options: <span
+class="cmss-10">sort=standard</span><a
+ id="dx1-5026"></a> (default), <span
+class="cmss-10">sort=use</span><a
+ id="dx1-5027"></a> or
+ <span
+class="cmss-10">sort=def</span><a
+ id="dx1-5028"></a>. </div>
+ </p><!--l. 1069--><p class="noindent" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5030x4">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document. This creates files with the extensions
+ <span
+class="cmtt-10">.glo </span>and <span
+class="cmtt-10">.ist </span>(for example, if your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document is called
+ <span
+class="cmtt-10">myDoc.tex</span>, then you&#8217;ll have two extra files called <span
+class="cmtt-10">myDoc.glo </span>and
+ <span
+class="cmtt-10">myDoc.ist</span>). If you look at your document at this point, you won&#8217;t see the
+ glossary as it hasn&#8217;t been created yet.
+ </li>
+ <li
+ class="enumerate" id="x1-5032x5">Run <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5033"></a> with the base name of your document (without the
+ <span
+class="cmtt-10">.tex</span>) extension. If you have access to a terminal or a command prompt
+ (for example, the MSDOS command prompt for Windows users or
+ the bash console for Unix-like users) then you need to run the
+ command:
+
+
+
+ <div class="verbatim" id="verbatim-44">
+ makeglossaries&#x00A0;myDoc
+</div>
+ <!--l. 1085--><p class="nopar" > (Replace <span
+class="cmtt-10">myDoc </span>with the base name of your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document file
+ without the <span
+class="cmtt-10">.tex </span>extension. Avoid spaces in the file name.) If you don&#8217;t
+ have Perl installed use <span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-5034"></a> instead:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-45">
+ makeglossaries-lite&#x00A0;myDoc
+</div>
+ <!--l. 1092--><p class="nopar" >
+ </p><!--l. 1094--><p class="noindent" ><div class="important" title="Important Note"> Some beginners get confused by <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5035"></a> the application (run as
+ a system command) and <span
+class="cmtt-10">\makeglossaries </span>the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;command
+ which should be typed in the document preamble. These are two
+ different concepts that happen to have similar looking names.
+ </div>
+ </p><!--l. 1100--><p class="noindent" >
+ </p><!--l. 1102--><p class="noindent" >If you don&#8217;t know how to use the command prompt, then you can
+ probably configure your text editor to add <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5036"></a> (or
+ <span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-5037"></a>) as a build tool, but each editor has a different
+ method of doing this, so I&#x00A0;can&#8217;t give a&#x00A0;general description. You will have
+ to check your editor&#8217;s manual. If you still have problems, try adding the
+ <span
+class="cmss-10">automake</span><a
+ id="dx1-5038"></a> package option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-46">
+ \usepackage[automake]{glossaries}
+</div>
+ <!--l. 1112--><p class="nopar" >
+ </p><!--l. 1114--><p class="noindent" >The default sort is word order (&#8220;sea lion&#8221; comes before &#8220;seal&#8221;). If you
+ want letter ordering you need to add the <span
+class="cmss-10">order=letter</span><a
+ id="dx1-5039"></a> package
+ option
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-47">
+ \usepackage[order=letter]{glossaries}
+</div>
+ <!--l. 1119--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5041x6">Once you have successfully completed the previous step, you can now run
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document again.</li></ol>
+ <!--l. 1124--><p class="noindent" >Here&#8217;s a complete document (<span
+class="cmtt-10">myDoc.tex</span>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-48">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage{glossaries}
+ &#x00A0;<br />\makeglossaries&#x00A0;%&#x00A0;create&#x00A0;makeindex&#x00A0;files
+ &#x00A0;<br />\newglossaryentry{sample}{name={sample},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}}
+ &#x00A0;<br />\begin{document}
+ &#x00A0;<br />A&#x00A0;\gls{sample}.
+ &#x00A0;<br />\printglossaries&#x00A0;%&#x00A0;input&#x00A0;files&#x00A0;created&#x00A0;by&#x00A0;makeindex
+ &#x00A0;<br />\end{document}
+</div>
+ <!--l. 1140--><p class="nopar" > Document build:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-49">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />makeglossaries&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1146--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-50">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />makeglossaries-lite&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1152--><p class="nopar" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><a
+ id="option3"></a><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;3</span>:
+ <!--l. 1157--><p class="noindent" >This option uses an application called <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5042"></a> to sort the entries. This
+ application is more flexible than <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5043"></a> and is able to sort extended Latin
+ or non-Latin alphabets. It comes with both <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>.
+ Since <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5044"></a> is a Perl script, you will also need to ensure that Perl is
+ installed. In a&#x00A0;similar way to <a
+href="#option2">Option&#x00A0;2</a>, this option involves making
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;write the glossary information to a&#x00A0;temporary file which <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5045"></a>
+ reads. Then <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5046"></a> writes a&#x00A0;new file containing the code to typeset
+ the glossary. <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;then reads this file on the next run. The <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5047"></a>
+ application is automatically invoked by the helper <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5048"></a>
+ script, which works out all the appropriate settings from the <span
+class="cmtt-10">.aux</span>
+ file.
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-5050x1">Add the <span
+class="cmss-10">xindy</span><a
+ id="dx1-5051"></a> option to the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-5052"></a> package option list:
+
+
+
+ <div class="verbatim" id="verbatim-51">
+ \usepackage[xindy]{glossaries}
+</div>
+ <!--l. 1176--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5054x2">Add <span
+class="cmtt-10">\makeglossaries </span>to your preamble (before you start defining your
+ entries).
+ </li>
+ <li
+ class="enumerate" id="x1-5056x3">Put
+ <!--l. 1183--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printglossary[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1184--><p class="noindent" >
+ where you want your list of entries (glossary) to appear. (The <span
+class="cmtt-10">sort </span>key
+ isn&#8217;t available in &#x27E8;<span
+class="cmti-10">options</span>&#x27E9;.) Alternatively, use
+ </p><!--l. 1189--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printglossaries </span></div><hr>
+ </p><!--l. 1190--><p class="noindent" >
+ </p><!--l. 1192--><p class="noindent" ><div class="important" title="Important Note"> All glossaries are sorted using the same method which may be identified
+ with one of the package options: <span
+class="cmss-10">sort=standard</span><a
+ id="dx1-5057"></a> (default), <span
+class="cmss-10">sort=use</span><a
+ id="dx1-5058"></a> or
+ <span
+class="cmss-10">sort=def</span><a
+ id="dx1-5059"></a>. </div>
+ </p><!--l. 1197--><p class="noindent" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5061x4">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document. This creates files with the extensions
+ <span
+class="cmtt-10">.glo </span>and <span
+class="cmtt-10">.xdy </span>(for example, if your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document is called
+ <span
+class="cmtt-10">myDoc.tex</span>, then you&#8217;ll have two extra files called <span
+class="cmtt-10">myDoc.glo </span>and
+ <span
+class="cmtt-10">myDoc.xdy</span>). If you look at your document at this point, you won&#8217;t see the
+ glossary as it hasn&#8217;t been created yet.
+ </li>
+ <li
+ class="enumerate" id="x1-5063x5">Run <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5064"></a> with the base name of the document (omitting the
+ <span
+class="cmtt-10">.tex </span>extension). If you have access to a terminal or a command prompt
+ (for example, the MSDOS command prompt for Windows users or
+ the bash console for Unix-like users) then you need to run the
+ command:
+
+
+
+ <div class="verbatim" id="verbatim-52">
+ makeglossaries&#x00A0;myDoc
+</div>
+ <!--l. 1213--><p class="nopar" > (Replace <span
+class="cmtt-10">myDoc </span>with the base name of your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document file
+ without the <span
+class="cmtt-10">.tex </span>extension. Avoid spaces in the file name. If you don&#8217;t
+ know how to use the command prompt, then as mentioned above, you may
+ be able to configure your text editor to add <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5065"></a> as a build
+ tool.
+ </p><!--l. 1221--><p class="noindent" >The default sort is word order (&#8220;sea lion&#8221; comes before &#8220;seal&#8221;). If you
+ want letter ordering you need to add the <span
+class="cmtt-10">order=letter </span>package
+ option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-53">
+ \usepackage[xindy,order=letter]{glossaries}
+</div>
+ <!--l. 1227--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5067x6">Once you have successfully completed the previous step, you can now run
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document again.
+ </li></ol>
+ <!--l. 1233--><p class="noindent" >Here&#8217;s a complete document (<span
+class="cmtt-10">myDoc.tex</span>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-54">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage[xindy]{glossaries}
+ &#x00A0;<br />\makeglossaries&#x00A0;%&#x00A0;create&#x00A0;xindy&#x00A0;files
+ &#x00A0;<br />\newglossaryentry{sample}{name={sample},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}}
+ &#x00A0;<br />\begin{document}
+ &#x00A0;<br />A&#x00A0;\gls{sample}.
+ &#x00A0;<br />\printglossaries&#x00A0;%&#x00A0;input&#x00A0;files&#x00A0;created&#x00A0;by&#x00A0;xindy
+ &#x00A0;<br />\end{document}
+</div>
+ <!--l. 1249--><p class="nopar" > Document build:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-55">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />makeglossaries&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1255--><p class="nopar" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><a
+ id="option4"></a><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;4</span>:
+ <!--l. 1259--><p class="noindent" >This requires the extension package <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-5068"></a> and an application called
+ <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5069"></a>. This application is able to sort extended Latin or non-Latin
+ alphabets. It comes with both <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;but requires at least
+ Java&#x00A0;7. This method works differently to Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>. Instead of
+ creating a file containing the code to typeset the glossary it creates a
+ <span
+class="cmtt-10">.glstex </span>file containing the entry definitions fetched from the <span
+class="cmtt-10">.bib </span>file (or
+ files), but only those entries that are required in the document are
+ defined and they are defined in the order obtained from the chosen sort
+ method. This means that you can just use <span
+class="cmtt-10">\printunsrtglossary </span>to
+ display each glossary (or <span
+class="cmtt-10">\printunsrtglossaries </span>to display them
+ all).
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-5071x1">Add the <span
+class="cmss-10">record</span><a
+ id="dx1-5072"></a> option to the <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-5073"></a> package option list:
+
+
+
+ <div class="verbatim" id="verbatim-56">
+ \usepackage[record]{glossaries-extra}
+</div>
+ <!--l. 1278--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5075x2">Add one or more
+ <!--l. 1282--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\GlsXtrLoadResources[src={</span>&#x27E8;<span
+class="cmitt-10">bib list</span>&#x27E9;<span
+class="cmtt-10">},</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1283--><p class="noindent" >
+ to your preamble where &#x27E8;<span
+class="cmti-10">bib list</span>&#x27E9; is the list of <span
+class="cmtt-10">.bib </span>files containing the
+ entries. You may use different sort methods for each resource set. For
+ example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-57">
+ \usepackage[record,%&#x00A0;using&#x00A0;bib2gls
+ &#x00A0;<br />&#x00A0;abbreviations,
+ &#x00A0;<br />&#x00A0;symbols,
+ &#x00A0;<br />&#x00A0;numbers
+ &#x00A0;<br />]{glossaries-extra}
+ &#x00A0;<br />\GlsXtrLoadResources[
+ &#x00A0;<br />&#x00A0;&#x00A0;src={terms},%&#x00A0;entries&#x00A0;in&#x00A0;terms.bib
+ &#x00A0;<br />&#x00A0;&#x00A0;type=main,%&#x00A0;put&#x00A0;these&#x00A0;entries&#x00A0;in&#x00A0;the&#x00A0;'main'&#x00A0;(default)&#x00A0;list
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={de-CH-1996}%&#x00A0;sort&#x00A0;according&#x00A0;to&#x00A0;this&#x00A0;locale
+ &#x00A0;<br />]
+ &#x00A0;<br />\GlsXtrLoadResources[
+ &#x00A0;<br />&#x00A0;&#x00A0;src={abbrvs},%&#x00A0;entries&#x00A0;in&#x00A0;abbrvs.bib
+ &#x00A0;<br />&#x00A0;&#x00A0;type=abbreviations,%&#x00A0;put&#x00A0;these&#x00A0;entries&#x00A0;in&#x00A0;the&#x00A0;'abbreviations'&#x00A0;list
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={letter-case}%&#x00A0;case-sensitive&#x00A0;letter&#x00A0;(non-locale)&#x00A0;sort
+ &#x00A0;<br />]
+ &#x00A0;<br />\GlsXtrLoadResources[
+ &#x00A0;<br />&#x00A0;&#x00A0;src={syms},%&#x00A0;entries&#x00A0;in&#x00A0;syms.bib
+ &#x00A0;<br />&#x00A0;&#x00A0;type=symbols,%&#x00A0;put&#x00A0;these&#x00A0;entries&#x00A0;in&#x00A0;the&#x00A0;'symbols'&#x00A0;list
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={use}%&#x00A0;sort&#x00A0;according&#x00A0;to&#x00A0;first&#x00A0;use&#x00A0;in&#x00A0;the&#x00A0;document
+ &#x00A0;<br />]
+ &#x00A0;<br />\GlsXtrLoadResources[
+ &#x00A0;<br />&#x00A0;&#x00A0;src={constants},%&#x00A0;entries&#x00A0;in&#x00A0;constants.bib
+ &#x00A0;<br />&#x00A0;&#x00A0;type=numbers,%&#x00A0;put&#x00A0;these&#x00A0;entries&#x00A0;in&#x00A0;the&#x00A0;'numbers'&#x00A0;list
+ &#x00A0;<br />&#x00A0;&#x00A0;sort-field={user1},%&#x00A0;sort&#x00A0;according&#x00A0;to&#x00A0;this&#x00A0;field
+ &#x00A0;<br />&#x00A0;&#x00A0;sort={double}%&#x00A0;double-precision&#x00A0;sort
+ &#x00A0;<br />]
+</div>
+ <!--l. 1315--><p class="nopar" > The last resource set assumes that the entries defined in the file
+ <span
+class="cmtt-10">constants.bib </span>have a number stored in the <span
+class="cmtt-10">user1 </span>field. For
+ example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-58">
+ @number{pi,
+ &#x00A0;<br />&#x00A0;&#x00A0;name={\ensuremath{\pi}},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={pi},
+ &#x00A0;<br />&#x00A0;&#x00A0;user1={3.141592654}
+ &#x00A0;<br />}
+</div>
+ <!--l. 1325--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5077x3">Put
+ <!--l. 1329--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printunsrtglossary[type={</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">},</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1330--><p class="noindent" >
+ where you want your list of entries (glossary) to appear. (The <span
+class="cmtt-10">sort </span>key
+ isn&#8217;t available in &#x27E8;<span
+class="cmti-10">options</span>&#x27E9;. It needs to be used in <span
+class="cmtt-10">\GlsXtrLoadResources</span>
+ instead.) Alternatively, use
+ </p><!--l. 1336--><p class="noindent" ><hr><div title="Definition"><span
+class="cmtt-10">\printunsrtglossaries </span></div><hr>
+ </p><!--l. 1337--><p class="noindent" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5079x4">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;on your document. The <span
+class="cmss-10">record</span><a
+ id="dx1-5080"></a> option adds information to
+ the <span
+class="cmtt-10">.aux </span>file that provides <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5081"></a> with all required details for each
+ resource set. For example, if the file is called <span
+class="cmtt-10">myDoc.tex</span>:
+
+
+
+ <div class="verbatim" id="verbatim-59">
+ pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1345--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5083x5">Run <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5084"></a>
+
+
+
+ <div class="verbatim" id="verbatim-60">
+ bib2gls&#x00A0;myDoc
+</div>
+ <!--l. 1350--><p class="nopar" > or (if you need letter groups)
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-61">
+ bib2gls&#x00A0;--group&#x00A0;myDoc
+</div>
+ <!--l. 1354--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-5086x6">Run <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;again.</li></ol>
+ <!--l. 1358--><p class="noindent" >Here&#8217;s a complete document (<span
+class="cmtt-10">myDoc.tex</span>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-62">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage[record]{glossaries-extra}
+ &#x00A0;<br />\GlsXtrLoadResources&#x00A0;%&#x00A0;input&#x00A0;file&#x00A0;created&#x00A0;by&#x00A0;bib2gls
+ &#x00A0;<br />&#x00A0;[%&#x00A0;instructions&#x00A0;to&#x00A0;bib2gls:
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;src={entries},&#x00A0;%&#x00A0;terms&#x00A0;defined&#x00A0;in&#x00A0;entries.bib
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;sort={en-GB}%&#x00A0;sort&#x00A0;according&#x00A0;to&#x00A0;this&#x00A0;locale
+ &#x00A0;<br />&#x00A0;]
+ &#x00A0;<br />\newglossaryentry{sample}{name={sample},
+ &#x00A0;<br />&#x00A0;&#x00A0;description={an&#x00A0;example}}
+ &#x00A0;<br />\begin{document}
+ &#x00A0;<br />A&#x00A0;\gls{sample}.
+ &#x00A0;<br />\printunsrtglossaries&#x00A0;%&#x00A0;iterate&#x00A0;over&#x00A0;all&#x00A0;defined&#x00A0;entries
+ &#x00A0;<br />\end{document}
+</div>
+ <!--l. 1378--><p class="nopar" > The accompanying <span
+class="cmtt-10">entries.bib </span>file:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-63">
+ @entry{sample,
+ &#x00A0;<br />&#x00A0;&#x00A0;name&#x00A0;=&#x00A0;{sample},
+ &#x00A0;<br />&#x00A0;&#x00A0;description&#x00A0;=&#x00A0;{an&#x00A0;example}
+ &#x00A0;<br />}
+</div>
+ <!--l. 1385--><p class="nopar" > Document build:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-64">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />bib2gls&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1391--><p class="nopar" >
+</p>
+ </dd></dl>
+<!--l. 1395--><p class="indent" > If you are having difficulty integrating <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5087"></a> into your document build
+process, you may want to consider using <span
+class="cmtt-10">arara</span><a
+ id="dx1-5088"></a>, which is a Java application that
+searches the document for special comment lines that tell <span
+class="cmtt-10">arara</span><a
+ id="dx1-5089"></a> which applications
+to run. For example, the file <span
+class="cmtt-10">myDoc.tex </span>might start with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-65">
+&#x00A0;%&#x00A0;arara:&#x00A0;pdflatex
+&#x00A0;<br />&#x00A0;%&#x00A0;arara:&#x00A0;makeglossaries
+&#x00A0;<br />&#x00A0;%&#x00A0;arara:&#x00A0;pdflatex
+&#x00A0;<br />&#x00A0;\documentclass{article}
+&#x00A0;<br />&#x00A0;\usepackage{glossaries}
+&#x00A0;<br />&#x00A0;\makeglossaries
+</div>
+<!--l. 1408--><p class="nopar" > then to build the document you just need the single system call:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-66">
+&#x00A0;arara&#x00A0;myDoc
+</div>
+<!--l. 1412--><p class="nopar" > (The currently pending version 4.0 of <span
+class="cmtt-10">arara</span><a
+ id="dx1-5090"></a> has directives for <span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-5091"></a>
+and <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5092"></a>. These aren&#8217;t available in earlier versions, but you could try copying
+and adapting the <span
+class="cmtt-10">makeglossaries.yaml </span>file and replace <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-5093"></a> as
+appropriate.)
+</p><!--l. 1419--><p class="indent" > When sorting the entries, the string comparisons are made according to each
+entry&#8217;s <span
+class="cmtt-10">sort </span>key. If this is omitted, the <span
+class="cmtt-10">name </span>key is used. For example, recall the
+earlier definition:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-67">
+&#x00A0;\newglossaryentry{elite}
+&#x00A0;<br />&#x00A0;{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={{\'e}lite},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={select&#x00A0;group&#x00A0;or&#x00A0;class}
+&#x00A0;<br />&#x00A0;}
+</div>
+<!--l. 1429--><p class="nopar" > No <span
+class="cmtt-10">sort </span>key was used, so it&#8217;s set to the same as the <span
+class="cmtt-10">name </span>key: <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{\&#8217;e}lite</span></span></span>. How this
+is interpreted depends on which option you have used:
+ </p><dl class="description"><dt class="description">
+<a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">By default, the accent command will be stripped so the sort value
+ will be <span
+class="cmtt-10">elite</span>. This will put the entry in the &#8220;E&#8221; letter group. However
+ if you use the <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-5094"></a> package option, the sort value will be
+ interpreted as the sequence of characters: <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{</span></span></span> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\</span></span></span> <span
+class="cmtt-10">&#8217; e </span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">}</span></span></span> <span
+class="cmtt-10">l i t </span>and <span
+class="cmtt-10">e</span>. This will
+ place this entry in the &#8220;symbols&#8221; group since it starts with a symbol.
+ </dd><dt class="description">
+<a
+href="#option2"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;2</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">The sort key will be interpreted the sequence of characters: <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{</span></span></span> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\</span></span></span> <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">&#8217;</span></span></span> <span
+class="cmtt-10">e</span>
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">}</span></span></span><span
+class="cmtt-10">lit </span>and <span
+class="cmtt-10">e</span>. The first character is an opening curly brace <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{</span></span></span> so <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5095"></a>
+ will put this entry in the &#8220;symbols&#8221; group.
+ </dd><dt class="description">
+<a
+href="#option3"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;3</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-5096"></a> disregards <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;commands so it sorts on <span
+class="cmtt-10">elite</span>, which puts
+ this entry in the &#8220;E&#8221; group. If stripping all commands leads to an empty string
+ (such as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ensuremath{\emptyset}</span></span></span>) then <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5097"></a> will fail, so in these
+ situations you need to provide an appropriate <span
+class="cmtt-10">sort </span>value that <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5098"></a> will
+ accept.
+ <!--l. 1455--><p class="noindent" ><div class="important" title="Important Note"> <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5099"></a> merges entries with duplicate sort values. <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5100"></a> forbids empty sort
+ values. A sort value may degrade into an empty or duplicate value once <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5101"></a>
+ has stripped all commands and braces. </div>
+ </p><!--l. 1460--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+href="#option4"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;4</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5102"></a> has a primitive <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;parser that recognises a limited set of
+ commands, which includes the standard accent commands and some maths
+ commands, so it can convert <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{\&#8217;e}lite</span></span></span> to <span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite</span>. It disregards unknown
+ commands. This may lead to an empty sort value, but <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5103"></a> doesn&#8217;t mind
+ that.
+ <!--l. 1469--><p class="noindent" >Note that even if the name is given as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{\&#8217;e}lite</span></span></span>, the letter group heading
+ (if the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--group</span></span></span> switch is used) may end up with the character É
+ depending on the locale used by the sort comparator. In this case you
+
+
+
+ will need to ensure the document can support this character either
+ with <span
+class="cmss-10">inputenc</span><a
+ id="dx1-5104"></a> or by switching to a <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;engine with native UTF-8
+ support.
+</p>
+ </dd></dl>
+<!--l. 1479--><p class="indent" > If the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-5105"></a> package is used:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-68">
+&#x00A0;\usepackage[utf8]{inputenc}
+</div>
+<!--l. 1482--><p class="nopar" > and the entry is defined as: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">&#x00A0;</span><span class="verb"><span
+class="cmtt-10">\newglossaryentry{elite}</span></span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span class="verb"><span
+class="cmtt-10">{</span></span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span class="verb"><span
+class="cmtt-10">{{</span></span><span
+class="cmtt-10">&eacute;</span><span class="verb"><span
+class="cmtt-10">}lite},</span></span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span class="verb"><span
+class="cmtt-10">{select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;or</span><span
+class="cmtt-10">&#x00A0;class}</span></span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span class="verb"><span
+class="cmtt-10">}</span></span>
+</div>
+</div> then:
+ <dl class="description"><dt class="description">
+<a
+href="#option1"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;1</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">By default the sort value will be interpreted as <span
+class="cmtt-10">elite </span>so the entry
+ will be put in the &#8220;E&#8221; letter group. If you use the <span
+class="cmss-10">sanitizesort=true</span><a
+ id="dx1-5106"></a> package
+ option, the sort value will be interpreted as <span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite </span>where &eacute; has been
+ sanitized (so it&#8217;s no longer an active character and is in fact seen as two
+ octets 0xC3 0xA9) which will put this entry before the &#8220;A&#8221; letter group.
+ (The group is determined by the first octet 0xC3.)
+ </dd><dt class="description">
+<a
+href="#option2"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;2</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5107"></a> sees <span
+class="cmtt-10">&eacute;</span> as two octets (0xC3 0xA9) rather than a single
+ character so it tries to put <span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite </span>in the 0xC3 (&#8220;&Atilde;&#8221;) letter group (which,
+ in this case, comes after &#8220;Z&#8221;).
+ </dd><dt class="description">
+<a
+href="#option3"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;3</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><span
+class="cmtt-10">xindy</span><a
+ id="dx1-5108"></a> will correctly recognise the sort value <span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite </span>and will place
+ it in whatever letter group is appropriate for the given language setting.
+ (In English, this would just be the &#8220;E&#8221; letter group, but another language
+ might put it in the &#8220;É&#8221; letter group.)
+ </dd><dt class="description">
+<a
+href="#option4"><span
+class="cmbx-10">Option</span><span
+class="cmbx-10">&#x00A0;4</span></a><span
+class="cmbx-10">:</span> </dt><dd
+class="description">The <span
+class="cmss-10">inputenc</span><a
+ id="dx1-5109"></a> package doesn&#8217;t affect the encoding used with <span
+class="cmtt-10">.bib </span>entry
+ definitions, since these are dependent on the encoding used to save the <span
+class="cmtt-10">.bib </span>file
+ (although the labels must still be ASCII). You can help <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5110"></a> (and
+ JabRef) by putting an encoding comment at the start of the <span
+class="cmtt-10">.bib </span>file:
+ <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;Encoding:</span><span
+class="cmtt-10">&#x00A0;UTF-8</span>
+
+
+
+</div>
+ </div>
+ <!--l. 1522--><p class="noindent" >With the correct encoding set up, <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5111"></a> will determine that the sort value is
+ <span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite </span>and will place it in whatever letter group is appropriate for the given
+ sort rule. For example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">sort=en-GB</span></span></span> (or just <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">sort=en</span></span></span>) will put <span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">lite </span>in the
+ &#8220;E&#8221; letter group, but another language might put it in the &#8220;É&#8221; letter
+ group.
+</p>
+ </dd></dl>
+<!--l. 1531--><p class="indent" > Therefore if you have extended Latin or non-Latin characters, your best option is
+to use either <span
+class="cmtt-10">xindy</span><a
+ id="dx1-5112"></a> (<a
+href="#option3">Option&#x00A0;3</a>) or <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-5113"></a> (<a
+href="#option4">Option&#x00A0;4</a>) with the <span
+class="cmss-10">inputenc</span><a
+ id="dx1-5114"></a> or <span
+class="cmss-10">fontspec</span><a
+ id="dx1-5115"></a>
+package. If you use <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-5116"></a> (<a
+href="#option2">Option&#x00A0;2</a>) you need to specify the <span
+class="cmtt-10">sort </span>key like
+this:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-69">
+\newglossaryentry{elite}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={{\'e}lite},
+&#x00A0;<br />&#x00A0;&#x00A0;sort={elite},
+&#x00A0;<br />&#x00A0;&#x00A0;description={select&#x00A0;group&#x00A0;or&#x00A0;class}
+&#x00A0;<br />}
+</div>
+<!--l. 1543--><p class="nopar" > or </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\newglossaryentry</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">elite</span><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmsy-10">{</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;name=</span><span
+class="cmsy-10">{{</span><span
+class="cmtt-10">&eacute;</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">lite</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">elite</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;description=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">select</span><span
+class="cmtt-10">&#x00A0;group</span><span
+class="cmtt-10">&#x00A0;or</span><span
+class="cmtt-10">&#x00A0;class</span><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmsy-10">}</span>
+</div>
+</div> If you use <a
+href="#option1">Option&#x00A0;1</a>, you may or may not need to use the <span
+class="cmtt-10">sort </span>key, but you will
+need to be careful about fragile commands in the <span
+class="cmtt-10">name </span>key if you don&#8217;t set the <span
+class="cmtt-10">sort</span>
+key.
+<!--l. 1557--><p class="indent" > If you use <a
+href="#option3">Option&#x00A0;3</a> and the <span
+class="cmtt-10">name </span>only contains a command or commands (such
+as <span
+class="cmtt-10">\P </span>or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ensuremath{\pi}</span></span></span>) you must add the <span
+class="cmtt-10">sort </span>key. This is also advisable
+for the other options (except <a
+href="#option4">Option&#x00A0;4</a>), but is essential for <a
+href="#option3">Option&#x00A0;3</a>. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-70">
+&#x00A0;\newglossaryentry{P}{name={\P},sort={P},
+&#x00A0;<br />&#x00A0;&#x00A0;description={paragraph&#x00A0;symbol}}
+</div>
+<!--l. 1564--><p class="nopar" >
+</p>
+<!--l. 1566--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">5 </span> <a
+ id="sec:glosstyle"></a>Customising the Glossary</h3>
+<!--l. 1569--><p class="noindent" >The default glossary style uses the <span
+class="cmss-10">description</span><a
+ id="dx1-6001"></a><a
+ id="dx1-6002"></a> environment to display the entry list.
+Each entry name is set in the optional argument of <span
+class="cmtt-10">\item </span>which means that it will
+typically be displayed in bold. You can switch to medium weight by redefining
+<span
+class="cmtt-10">\glsnamefont</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-71">
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+</div>
+<!--l. 1576--><p class="nopar" > Some classes and packages redefine the <span
+class="cmss-10">description</span><a
+ id="dx1-6003"></a><a
+ id="dx1-6004"></a> environment in such as way that&#8217;s
+incompatible with the <span
+class="cmss-10">glossaries </span>package. In which case you&#8217;ll need to select a
+different glossary style (see below).
+</p><!--l. 1582--><p class="indent" > By default, a&#x00A0;full stop is appended to the description (unless you use
+<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-6005"></a>). To prevent this from happening use the <span
+class="cmss-10">nopostdot</span><a
+ id="dx1-6006"></a> package
+option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-72">
+\usepackage[nopostdot]{glossaries}
+</div>
+<!--l. 1587--><p class="nopar" > or to add it with <span
+class="cmss-10">glossaries-extra</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-73">
+\usepackage[postdot]{glossaries-extra}
+</div>
+<!--l. 1591--><p class="nopar" >
+</p><!--l. 1593--><p class="indent" > By default, a&#x00A0;location list is displayed for each entry (unless you use
+<span
+class="cmtt-10">\printunsrtglossary </span>without <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-6007"></a>). This refers to the document locations (for
+example, the page number) where the entry has been referenced. If you use
+Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> described in <a
+href="#sec:printglossaries"><span
+class="cmsy-10">&sect;</span>4 </a><a
+href="#sec:printglossaries">Displaying a List of Entries<!--tex4ht:ref: sec:printglossaries --></a> or <a
+href="#option4">Option&#x00A0;4</a> (with
+<span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-6008"></a> and <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-6009"></a>) then location ranges will be compressed. For example, if
+an entry was used on pages&#x00A0;1, 2 and&#x00A0;3, with Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> or <a
+href="#option4">Option&#x00A0;4</a> the
+location list will appear as 1&#8211;3, but with <a
+href="#option1">Option&#x00A0;1</a> it will appear as 1, 2, 3. If you
+don&#8217;t want the locations displayed you can hide them using the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-6010"></a> package
+option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-74">
+\usepackage[nonumberlist]{glossaries}
+</div>
+<!--l. 1605--><p class="nopar" > or with <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-6011"></a> use <span
+class="cmtt-10">save-locations=false </span>in the optional argument of the
+appropriate <span
+class="cmtt-10">\GlsXtrLoadResources </span>(it&#8217;s possible to have some resource sets with
+locations and some without).
+</p><!--l. 1611--><p class="indent" > Entries are grouped according to the first letter of each entry&#8217;s <span
+class="cmtt-10">sort </span>key. By
+default a&#x00A0;vertical gap is placed between letter groups. You can suppress this with the
+<span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-6012"></a> package option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-75">
+\usepackage[nogroupskip]{glossaries}
+</div>
+<!--l. 1617--><p class="nopar" >
+</p><!--l. 1619--><p class="indent" > If the default style doesn&#8217;t suit your document, you can change the style
+using:
+</p><!--l. 1622--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\setglossarystyle{</span>&#x27E8;<span
+class="cmitt-10">style name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1623--><p class="noindent" >
+<a
+href="http://www.dickimaw-books.com/gallery/glossaries-styles/" >There are a&#x00A0;number of predefined styles.</a> Glossaries can vary from a&#x00A0;list of symbols
+with a&#x00A0;terse description to a&#x00A0;list of words or phrases with descriptions that span
+multiple paragraphs, so there&#8217;s no &#8220;one style fits all&#8221; solution. You need to choose
+a&#x00A0;style that suits your document. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-76">
+\setglossarystyle{index}
+</div>
+<!--l. 1631--><p class="nopar" > You can also use the <span
+class="cmss-10">style</span><a
+ id="dx1-6013"></a> package option for the preloaded styles. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-77">
+\usepackage[style=index]{glossaries}
+</div>
+<!--l. 1636--><p class="nopar" >
+</p><!--l. 1638--><p class="indent" > Examples:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-6015x1">You have entries where the name is a&#x00A0;symbol and the description is a&#x00A0;brief
+ phrase or short sentence. Try one of the &#8220;mcol&#8221; styles defined in the
+ <span
+class="cmss-10">glossary-mcols</span><a
+ id="dx1-6016"></a> package. For example:
+
+
+
+ <div class="verbatim" id="verbatim-78">
+ \usepackage[nopostdot]{glossaries}
+ &#x00A0;<br />\usepackage{glossary-mcols}
+ &#x00A0;<br />\setglossarystyle{mcolindex}
+</div>
+ <!--l. 1647--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-79">
+ \usepackage[stylemods={mcols},style=mcolindex]{glossaries-extra}
+</div>
+ <!--l. 1651--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-6018x2">You have entries where the name is a&#x00A0;word or phrase and the description spans
+ multiple paragraphs. Try one of the &#8220;altlist&#8221; styles. For example:
+
+
+
+ <div class="verbatim" id="verbatim-80">
+ \usepackage[nopostdot]{glossaries}
+ &#x00A0;<br />\setglossarystyle{altlist}
+</div>
+ <!--l. 1659--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-81">
+ \usepackage[stylemods,style=altlist]{glossaries-extra}
+</div>
+ <!--l. 1663--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-6020x3">You have entries where the name is a&#x00A0;single word, the description is
+ brief, and an associated symbol has been set. Use one of the styles that
+ display the symbol (not all of them do). For example, one of the tabular
+ styles:
+
+
+
+ <div class="verbatim" id="verbatim-82">
+ \usepackage[nopostdot,nonumberlist]{glossaries}
+ &#x00A0;<br />\setglossarystyle{long4col}
+</div>
+ <!--l. 1672--><p class="nopar" > or one of the &#8220;tree&#8221; styles:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-83">
+ \usepackage[nopostdot,nonumberlist]{glossaries}
+ &#x00A0;<br />\setglossarystyle{tree}
+</div>
+ <!--l. 1677--><p class="nopar" ></p></li></ol>
+<!--l. 1680--><p class="indent" > If your glossary consists of a&#x00A0;list of abbreviations and you also want to specify
+a&#x00A0;description as well as the long form, then you need to use an abbreviation style
+that will suit the glossary style. For example, use the <span
+class="cmtt-10">long-short-desc </span>acronym
+style:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-84">
+\setacronymstyle{long-short-desc}
+</div>
+<!--l. 1686--><p class="nopar" > Define the acronyms with a&#x00A0;description:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-85">
+\newacronym
+&#x00A0;<br />&#x00A0;[description={statistical&#x00A0;pattern&#x00A0;recognition&#x00A0;technique}]
+&#x00A0;<br />&#x00A0;{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 1692--><p class="nopar" > Alternatively with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-6021"></a>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-86">
+\setabbreviationstyle{long-short-desc}
+&#x00A0;<br />\newabbreviation
+&#x00A0;<br />&#x00A0;[description={statistical&#x00A0;pattern&#x00A0;recognition&#x00A0;technique}]
+&#x00A0;<br />&#x00A0;{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 1700--><p class="nopar" >
+</p><!--l. 1702--><p class="indent" > Choose a&#x00A0;glossary style that suits wide entry names. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-87">
+\setglossarystyle{altlist}
+</div>
+<!--l. 1705--><p class="nopar" >
+</p><!--l. 1707--><p class="noindent" >
+</p>
+<!--l. 1707--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6 </span> <a
+ id="sec:multigloss"></a>Multiple Glossaries</h3>
+<!--l. 1710--><p class="noindent" >The <span
+class="cmss-10">glossaries</span><a
+ id="dx1-7001"></a> package predefines a&#x00A0;default <span
+class="cmtt-10">main </span>glossary. When you define an entry
+(using one of the commands described in <a
+href="#sec:defterm"><span
+class="cmsy-10">&sect;</span>2 </a><a
+href="#sec:defterm">Defining Terms<!--tex4ht:ref: sec:defterm --></a>), that entry is
+automatically assigned to the default glossary, unless you indicate otherwise using the
+<span
+class="cmtt-10">type </span>key. However you first need to make sure the desired glossary has been defined.
+This is done using:
+</p><!--l. 1717--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\newglossary[</span>&#x27E8;<span
+class="cmitt-10">glg</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">gls</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">glo</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1718--><p class="noindent" >
+The &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is a&#x00A0;label that uniquely identifies this new glossary. As with other types of
+identifying labels, be careful not to use active characters in &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. The final
+argument &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; is the section or chapter heading used by <span
+class="cmtt-10">\printglossary </span>or
+<span
+class="cmtt-10">\printnoidxglossary</span>. The other arguments indicate the file extensions used by
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7002"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-7003"></a> (described in <a
+href="#sec:printglossaries"><span
+class="cmsy-10">&sect;</span>4 </a><a
+href="#sec:printglossaries">Displaying a List of Entries<!--tex4ht:ref: sec:printglossaries --></a>). If you use <a
+href="#option1">Option&#x00A0;1</a>
+described above (or <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-7004"></a> and <span
+class="cmtt-10">\printunsrtglossaries</span>), then the &#x27E8;<span
+class="cmti-10">glg</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">gls</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">glo</span>&#x27E9;
+arguments are ignored, in which case you may prefer to use the starred version where
+you don&#8217;t specify the extensions:
+</p><!--l. 1732--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\newglossary*{</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. 1733--><p class="noindent" >
+</p><!--l. 1735--><p class="indent" > In the case of Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a>, all glossary definitions must come before
+<span
+class="cmtt-10">\makeglossaries</span>. (Entries definitions should come after <span
+class="cmtt-10">\makeglossaries</span>.) In the case
+of <a
+href="#option4">Option&#x00A0;4</a>, all glossary definitions must come before any <span
+class="cmtt-10">\GlsXtrLoadResources</span>
+that requires them.
+</p><!--l. 1740--><p class="indent" > Since it&#8217;s quite common for documents to have both a&#x00A0;list of terms and a&#x00A0;list of
+abbreviations, the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-7005"></a> package provides the package option <span
+class="cmss-10">acronym</span><a
+ id="dx1-7006"></a> (or
+<span
+class="cmss-10">acronyms</span><a
+ id="dx1-7007"></a>), which is a&#x00A0;convenient shortcut for
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-88">
+\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+</div>
+<!--l. 1746--><p class="nopar" > The option also changes the behaviour of <span
+class="cmtt-10">\newacronym </span>so that acronyms are
+automatically put in the list of acronyms instead of the main glossary. The
+<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7008"></a> package also provides this option for abbreviations defined using
+<span
+class="cmtt-10">\newacronym </span>but additionally has the package option <span
+class="cmss-10">abbreviations</span><a
+ id="dx1-7009"></a> to create a list of
+abbreviations for <span
+class="cmtt-10">\newabbreviation</span>.
+</p><!--l. 1754--><p class="indent" > There are some other package options for creating commonly used lists: <span
+class="cmss-10">symbols</span><a
+ id="dx1-7010"></a>
+(lists of symbols), <span
+class="cmss-10">numbers</span><a
+ id="dx1-7011"></a> (lists of numbers), <span
+class="cmss-10">index</span><a
+ id="dx1-7012"></a> (index of terms without
+descriptions defined with <span
+class="cmtt-10">\newterm[</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>).
+</p><!--l. 1759--><p class="indent" > For example, suppose you want a&#x00A0;main glossary for terms, a&#x00A0;list of acronyms and
+a&#x00A0;list of notation:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-89">
+&#x00A0;\usepackage[acronyms]{glossaries}
+&#x00A0;<br />&#x00A0;\newglossary[nlg]{notation}{not}{ntn}{Notation}
+</div>
+<!--l. 1764--><p class="nopar" > After <span
+class="cmtt-10">\makeglossaries </span>(or <span
+class="cmtt-10">\makenoidxglossaries</span>) you can define the entries in
+the preamble. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-90">
+&#x00A0;\newglossaryentry{gls:set}
+&#x00A0;<br />&#x00A0;{%&#x00A0;This&#x00A0;entry&#x00A0;goes&#x00A0;in&#x00A0;the&#x00A0;`main'&#x00A0;glossary
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name=set,
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={A&#x00A0;collection&#x00A0;of&#x00A0;distinct&#x00A0;objects}
+&#x00A0;<br />&#x00A0;}
+&#x00A0;<br />&#x00A0;%&#x00A0;This&#x00A0;entry&#x00A0;goes&#x00A0;in&#x00A0;the&#x00A0;`acronym'&#x00A0;glossary:
+&#x00A0;<br />&#x00A0;\newacronym{svm}{svm}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />&#x00A0;\newglossaryentry{not:set}
+&#x00A0;<br />&#x00A0;{%&#x00A0;This&#x00A0;entry&#x00A0;goes&#x00A0;in&#x00A0;the&#x00A0;`notation'&#x00A0;glossary:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;type=notation,
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={\ensuremath{\mathcal{S}}},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={A&#x00A0;set},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;sort={S}}
+</div>
+<!--l. 1783--><p class="nopar" > or if you don&#8217;t like using <span
+class="cmtt-10">\ensuremath</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-91">
+&#x00A0;\newglossaryentry{not:set}
+&#x00A0;<br />&#x00A0;{%&#x00A0;This&#x00A0;entry&#x00A0;goes&#x00A0;in&#x00A0;the&#x00A0;`notation'&#x00A0;glossary:
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;type=notation,
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={$\mathcal{S}$},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;text={\mathcal{S}},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={A&#x00A0;set},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;sort={S}}
+</div>
+<!--l. 1793--><p class="nopar" >
+</p><!--l. 1795--><p class="indent" > Each glossary is displayed using:
+</p><!--l. 1797--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\printnoidxglossary[type=</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 1798--><p class="noindent" >
+(<a
+href="#option1">Option&#x00A0;1</a>) or
+</p><!--l. 1801--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\printglossary[type=</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 1802--><p class="noindent" >
+(Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>). Where &#x27E8;<span
+class="cmti-10">type</span>&#x27E9; is the glossary label. If the type is omitted the
+default <span
+class="cmtt-10">main </span>glossary is assumed.
+</p><!--l. 1806--><p class="indent" > If you&#8217;re using <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-7013"></a> then each glossary is displayed using:
+</p><!--l. 1809--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\printunsrtglossary[type=</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 1810--><p class="noindent" >
+With this method you don&#8217;t use <span
+class="cmtt-10">\makeglossaries </span>or <span
+class="cmtt-10">\makenoidxglossaries</span>.
+Instead you can assign the entry type with the resource command. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-92">
+&#x00A0;\usepackage[record,abbreviations,symbols]{glossaries-extra}
+&#x00A0;<br />&#x00A0;\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;&#x00A0;src={terms},&#x00A0;%&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;terms.bib
+&#x00A0;<br />&#x00A0;&#x00A0;type={main}%&#x00A0;put&#x00A0;in&#x00A0;main&#x00A0;glossary
+&#x00A0;<br />&#x00A0;]
+&#x00A0;<br />&#x00A0;\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;&#x00A0;src={abbrvs},&#x00A0;%&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;abbrvs.bib
+&#x00A0;<br />&#x00A0;&#x00A0;type={abbreviations}%&#x00A0;put&#x00A0;in&#x00A0;abbreviations&#x00A0;glossary
+&#x00A0;<br />&#x00A0;]
+&#x00A0;<br />&#x00A0;\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;&#x00A0;src={syms},&#x00A0;%&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;syms.bib
+&#x00A0;<br />&#x00A0;&#x00A0;type={symbols}%&#x00A0;put&#x00A0;in&#x00A0;symbols&#x00A0;glossary
+&#x00A0;<br />&#x00A0;]
+</div>
+<!--l. 1829--><p class="nopar" > Later in the document:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-93">
+&#x00A0;\printunsrtglossary&#x00A0;%&#x00A0;main
+&#x00A0;<br />&#x00A0;\printunsrtglossary[type=abbreviations]
+&#x00A0;<br />&#x00A0;\printunsrtglossary[type=symbols]
+</div>
+<!--l. 1835--><p class="nopar" >
+</p><!--l. 1837--><p class="indent" > There&#8217;s a&#x00A0;convenient shortcut that will display all the defined glossaries
+depending on the indexing method:
+</p><!--l. 1840--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\printnoidxglossaries </span></div><hr>
+</p><!--l. 1841--><p class="noindent" >
+(<a
+href="#option1">Option&#x00A0;1</a>) or
+</p><!--l. 1844--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\printglossaries </span></div><hr>
+</p><!--l. 1845--><p class="noindent" >
+(Options&#x00A0;<a
+href="#option2">2</a> and&#x00A0;<a
+href="#option3">3</a>) or (<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7014"></a> only)
+</p><!--l. 1848--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\printunsrtglossaries </span></div><hr>
+</p><!--l. 1849--><p class="noindent" >
+</p><!--l. 1851--><p class="indent" > If you use <a
+href="#option1">Option&#x00A0;1</a>, you don&#8217;t need to do anything else. If you use Options&#x00A0;<a
+href="#option2">2</a>
+or&#x00A0;<a
+href="#option3">3</a> with the <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-7015"></a> Perl script or the <span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-7016"></a> Lua script,
+you similarly don&#8217;t need to do anything else. If you use Options&#x00A0;<a
+href="#option2">2</a> or&#x00A0;<a
+href="#option3">3</a> without the
+<span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-7017"></a> Perl script then you need to make sure you run <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7018"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-7019"></a>
+<span
+class="cmti-10">for each defined glossary</span>. The &#x27E8;<span
+class="cmti-10">gls</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">glo</span>&#x27E9; arguments of <span
+class="cmtt-10">\newglossary </span>specify the file
+extensions to use instead of <span
+class="cmtt-10">.gls </span>and <span
+class="cmtt-10">.glo</span>. The optional argument &#x27E8;<span
+class="cmti-10">glg</span>&#x27E9; is the file
+extension for the transcript file. This should be different for each glossary in
+case you need to check for <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7020"></a>/<span
+class="cmtt-10">xindy</span><a
+ id="dx1-7021"></a> errors or warnings if things go
+wrong.
+</p><!--l. 1865--><p class="indent" > For example, suppose you have three glossaries in your document (<span
+class="cmtt-10">main</span>, <span
+class="cmtt-10">acronym</span>
+and <span
+class="cmtt-10">notation</span>), specified using:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-94">
+\usepackage[acronyms]{glossaries}
+&#x00A0;<br />\newglossary[nlg]{notation}{not}{ntn}{Notation}
+</div>
+<!--l. 1871--><p class="nopar" > Then (assuming your <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;document is in a&#x00A0;file called <span
+class="cmtt-10">myDoc.tex</span>):
+</p><!--l. 1875--><p class="indent" >
+ </p><dl class="description"><dt class="description">
+ </dt><dd
+class="description"><a
+href="#option2">Option&#x00A0;2</a> Either use one <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-7022"></a> or <span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-7023"></a> call:
+
+
+
+ <div class="verbatim" id="verbatim-95">
+ makeglossaries&#x00A0;myDoc
+</div>
+ <!--l. 1881--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-96">
+ makeglossaries-lite&#x00A0;myDoc
+</div>
+ <!--l. 1885--><p class="nopar" > Or you need to run <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7024"></a> three times:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-97">
+ makeindex&#x00A0;-t&#x00A0;myDoc.glg&#x00A0;-s&#x00A0;myDoc.ist&#x00A0;-o&#x00A0;myDoc.gls&#x00A0;myDoc.glo
+ &#x00A0;<br />makeindex&#x00A0;-t&#x00A0;myDoc.alg&#x00A0;-s&#x00A0;myDoc.ist&#x00A0;-o&#x00A0;myDoc.acr&#x00A0;myDoc.acn
+ &#x00A0;<br />makeindex&#x00A0;-t&#x00A0;myDoc.nlg&#x00A0;-s&#x00A0;myDoc.ist&#x00A0;-o&#x00A0;myDoc.not&#x00A0;myDoc.ntn
+</div>
+ <!--l. 1891--><p class="nopar" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><a
+href="#option3">Option&#x00A0;3</a> Either use one <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-7025"></a> call:
+
+
+
+ <div class="verbatim" id="verbatim-98">
+ makeglossaries&#x00A0;myDoc
+</div>
+ <!--l. 1897--><p class="nopar" > Or you need to run <span
+class="cmtt-10">xindy</span><a
+ id="dx1-7026"></a> three times (be careful not to insert line breaks
+ where the line has wrapped.)
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-99">
+ xindy&#x00A0;&#x00A0;-L&#x00A0;english&#x00A0;-C&#x00A0;utf8&#x00A0;-I&#x00A0;xindy&#x00A0;-M&#x00A0;myDoc&#x00A0;-t&#x00A0;myDoc.glg
+ &#x00A0;<br />-o&#x00A0;myDoc.gls&#x00A0;myDoc.glo
+ &#x00A0;<br />xindy&#x00A0;&#x00A0;-L&#x00A0;english&#x00A0;-C&#x00A0;utf8&#x00A0;-I&#x00A0;xindy&#x00A0;-M&#x00A0;myDoc&#x00A0;-t&#x00A0;myDoc.alg
+ &#x00A0;<br />-o&#x00A0;myDoc.acr&#x00A0;myDoc.acn
+ &#x00A0;<br />xindy&#x00A0;&#x00A0;-L&#x00A0;english&#x00A0;-C&#x00A0;utf8&#x00A0;-I&#x00A0;xindy&#x00A0;-M&#x00A0;myDoc&#x00A0;-t&#x00A0;myDoc.nlg
+ &#x00A0;<br />-o&#x00A0;myDoc.not&#x00A0;myDoc.ntn
+</div>
+ <!--l. 1907--><p class="nopar" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><a
+href="#option4">Option&#x00A0;4</a> With <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-7027"></a> only one call is required:
+
+
+
+ <div class="verbatim" id="verbatim-100">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />bib2gls&#x00A0;--group&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 1915--><p class="nopar" > (Omit <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--group</span></span></span> if you don&#8217;t need letter groups.)</p></dd></dl>
+<!--l. 1920--><p class="noindent" >
+</p>
+<!--l. 1920--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">7 </span> <a
+ id="sec:hyperref"></a><span
+class="cmss-10">glossaries </span>and <span
+class="cmss-10">hyperref</span></h3>
+<!--l. 1923--><p class="noindent" >Take care if you use the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-8001"></a> package with <span
+class="cmss-10">hyperref</span><a
+ id="dx1-8002"></a>. Contrary to the usual advice
+that <span
+class="cmss-10">hyperref</span><a
+ id="dx1-8003"></a> should be loaded last, <span
+class="cmss-10">glossaries</span><a
+ id="dx1-8004"></a> (and <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-8005"></a>) must be loaded
+<span
+class="cmti-10">after </span><span
+class="cmss-10">hyperref</span><a
+ id="dx1-8006"></a>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-101">
+\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage{glossaries}
+</div>
+<!--l. 1930--><p class="nopar" > If you use <span
+class="cmss-10">hyperref</span><a
+ id="dx1-8007"></a> make sure you use PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;rather than the <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;to DVI
+engine. The DVI format can&#8217;t break hyperlinks across a&#x00A0;line so long glossary entries
+(such as the full form of acronyms) won&#8217;t line wrap with the DVI engine.
+Also, hyperlinks in sub- or superscripts aren&#8217;t correctly sized with the DVI
+format.
+</p><!--l. 1937--><p class="indent" > By default, if the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-8008"></a> package has been loaded, commands like <span
+class="cmtt-10">\gls </span>will form
+a&#x00A0;hyperlink to the relevant entry in the glossary. If you to disable this for <span
+class="cmti-10">all </span>your
+glossaries, then use
+</p><!--l. 1942--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsdisablehyper </span></div><hr>
+</p><!--l. 1943--><p class="noindent" >
+If you want hyperlinks suppressed for entries in specific glossaries, then use the
+<span
+class="cmss-10">nohypertypes</span><a
+ id="dx1-8009"></a> package option. For example, if you don&#8217;t want hyperlinks for entries in
+the <span
+class="cmtt-10">acronym </span>and <span
+class="cmtt-10">notation </span>glossaries but you do want them for entries in the <span
+class="cmtt-10">main</span>
+glossary, then do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-102">
+\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage[acronym,nohypertypes={acronym,notation}]{glossaries}
+&#x00A0;<br />\newglossary[nlg]{notation}{not}{ntn}{Notation}
+</div>
+<!--l. 1953--><p class="nopar" >
+</p><!--l. 1955--><p class="indent" > If you want the hyperlinks suppressed the first time an entry is used, but you
+want hyperlinks for subsequence references then use the <span
+class="cmss-10">hyperfirst=false</span><a
+ id="dx1-8010"></a> package
+option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-103">
+\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage[hyperfirst=false]{glossaries}
+</div>
+<!--l. 1961--><p class="nopar" >
+</p><!--l. 1963--><p class="indent" > Take care not to use non-expandable commands in PDF bookmarks. This isn&#8217;t
+specific to the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-8011"></a> package but is a&#x00A0;limitation of PDF bookmarks.
+Non-expandable commands include commands like <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glspl</span>, <span
+class="cmtt-10">\Gls </span>and <span
+class="cmtt-10">\Glspl</span>.
+The <span
+class="cmss-10">hyperref</span><a
+ id="dx1-8012"></a> package provides a&#x00A0;way of specifying alternative text for the PDF
+bookmarks via <span
+class="cmtt-10">\texorpdfstring</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-104">
+\section{The&#x00A0;\texorpdfstring{\gls{fishage}}{Fish&#x00A0;Age}}
+</div>
+<!--l. 1971--><p class="nopar" > However, it&#8217;s not a&#x00A0;good idea to use commands like <span
+class="cmtt-10">\gls </span>in a&#x00A0;section heading as
+you&#8217;ll end up with the table of contents in your location list. Instead you can
+use
+</p><!--l. 1976--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsentrytext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1977--><p class="noindent" >
+This is expandable provided that the <span
+class="cmtt-10">text </span>key doesn&#8217;t contain non-expandable code.
+For example, the following works:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-105">
+\section{The&#x00A0;\glsentrytext{fishage}}
+</div>
+<!--l. 1982--><p class="nopar" > and it doesn&#8217;t put the table of contents in the location list.
+</p><!--l. 1985--><p class="indent" > If you use <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-8013"></a> then use the commands that are provided specifically for
+use in section headers. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-106">
+\section{The&#x00A0;\glsfmttext{fishage}}
+</div>
+<!--l. 1989--><p class="nopar" >
+</p><!--l. 1991--><p class="noindent" >
+</p>
+<!--l. 1991--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">8 </span> <a
+ id="sec:xr"></a>Cross-References</h3>
+<!--l. 1994--><p class="noindent" >You can add a&#x00A0;reference to another entry in a&#x00A0;location list using the <span
+class="cmtt-10">see={</span>&#x27E8;<span
+class="cmti-10">label list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+key when you define an entry. The referenced entry (or entries) must also be
+defined.
+</p><!--l. 1998--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-107">
+\longnewglossaryentry{devonian}{name={Devonian}}%
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;The&#x00A0;geologic&#x00A0;period&#x00A0;spanning&#x00A0;from&#x00A0;the&#x00A0;end&#x00A0;of&#x00A0;the
+&#x00A0;<br />&#x00A0;&#x00A0;Silurian&#x00A0;Period&#x00A0;to&#x00A0;the&#x00A0;beginning&#x00A0;of&#x00A0;the&#x00A0;Carboniferous&#x00A0;Period.
+&#x00A0;<br />&#x00A0;&#x00A0;This&#x00A0;age&#x00A0;was&#x00A0;known&#x00A0;for&#x00A0;its&#x00A0;remarkable&#x00A0;variety&#x00A0;of
+&#x00A0;<br />&#x00A0;&#x00A0;fish&#x00A0;species.
+&#x00A0;<br />}
+&#x00A0;<br />\newglossaryentry{fishage}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={Fish&#x00A0;Age},
+&#x00A0;<br />&#x00A0;&#x00A0;description={Common&#x00A0;name&#x00A0;for&#x00A0;the&#x00A0;Devonian&#x00A0;period},
+&#x00A0;<br />&#x00A0;&#x00A0;see={devonian}
+&#x00A0;<br />}
+</div>
+<!--l. 2015--><p class="nopar" > The cross-reference will appear as &#8220;<span
+class="cmti-10">see </span>Devonian&#8221;. You can change the &#8220;see&#8221; tag
+using the format <span
+class="cmtt-10">see=[</span>&#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;<span
+class="cmtt-10">]</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-108">
+\newglossaryentry{latinalph}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;name={Latin&#x00A0;alphabet},
+&#x00A0;<br />&#x00A0;&#x00A0;description={alphabet&#x00A0;consisting&#x00A0;of&#x00A0;the&#x00A0;letters
+&#x00A0;<br />&#x00A0;&#x00A0;a,&#x00A0;\ldots,&#x00A0;z,&#x00A0;A,&#x00A0;\ldots,&#x00A0;Z},
+&#x00A0;<br />&#x00A0;&#x00A0;see=[see&#x00A0;also]{exlatinalph}
+&#x00A0;<br />}
+&#x00A0;<br />\newglossaryentry{exlatinalph}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;name={extended&#x00A0;Latin&#x00A0;alphabet},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;description={The&#x00A0;Latin&#x00A0;alphabet&#x00A0;extended&#x00A0;to&#x00A0;include
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;other&#x00A0;letters&#x00A0;such&#x00A0;as&#x00A0;ligatures&#x00A0;or&#x00A0;diacritics.}
+&#x00A0;<br />}
+</div>
+<!--l. 2033--><p class="nopar" > If you use the <span
+class="cmtt-10">see </span>key in the optional argument of <span
+class="cmtt-10">\newacronym</span>, make sure you
+enclose the value in braces. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-109">
+\newacronym{ksvm}{ksvm}{kernel&#x00A0;support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />\newacronym
+&#x00A0;<br />&#x00A0;[see={[see&#x00A0;also]{ksvm}}]
+&#x00A0;<br />&#x00A0;{svm}{svm}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 2042--><p class="nopar" > The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-9001"></a> package provides a <span
+class="cmtt-10">seealso </span>key. This doesn&#8217;t allow a tag but
+behaves much like <span
+class="cmtt-10">see=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">[\seealsoname]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">}</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-110">
+\newabbreviation{ksvm}{ksvm}{kernel&#x00A0;support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />\newabbreviation
+&#x00A0;<br />&#x00A0;[seealso={ksvm}]
+&#x00A0;<br />&#x00A0;{svm}{svm}{support&#x00A0;vector&#x00A0;machine}
+</div>
+<!--l. 2051--><p class="nopar" >
+</p><!--l. 2053--><p class="indent" > Since the cross-reference appears in the location list, if you suppress the
+location list using the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-9002"></a> package option, then the cross-reference
+will also be suppressed. With <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-9003"></a>, don&#8217;t use the <span
+class="cmss-10">nonumberlist</span><a
+ id="dx1-9004"></a> package
+option. Instead use the <span
+class="cmtt-10">save-locations=false </span>in the resource options. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-111">
+\usepackage[record,abbreviations,symbols]{glossaries-extra}
+&#x00A0;<br />\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;src={terms},&#x00A0;%&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;terms.bib
+&#x00A0;<br />&#x00A0;type={main}%&#x00A0;put&#x00A0;in&#x00A0;main&#x00A0;glossary
+&#x00A0;<br />]
+&#x00A0;<br />\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;src={abbrvs},&#x00A0;%&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;abbrvs.bib
+&#x00A0;<br />&#x00A0;type={abbreviations},%&#x00A0;put&#x00A0;in&#x00A0;abbreviations&#x00A0;glossary
+&#x00A0;<br />&#x00A0;save-locations=false%&#x00A0;no&#x00A0;number&#x00A0;list&#x00A0;for&#x00A0;these&#x00A0;entries
+&#x00A0;<br />]
+&#x00A0;<br />\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;src={syms},&#x00A0;%&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;syms.bib
+&#x00A0;<br />&#x00A0;type={symbols}%&#x00A0;put&#x00A0;in&#x00A0;symbols&#x00A0;glossary
+&#x00A0;<br />]
+</div>
+<!--l. 2075--><p class="nopar" >
+</p><!--l. 2077--><p class="noindent" >
+</p>
+<!--l. 2077--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9 </span> <a
+ id="sec:moreinfo"></a>Further Information</h3>
+ <ul class="itemize1">
+ <li class="itemize"><a
+href="http://mirrors.ctan.org/support/bib2gls/bib2gls-begin.pdf" ><span
+class="cmss-10">glossaries-extra </span>and <span
+class="cmtt-10">bib2gls</span>: an introductory guide</a>.
+ </li>
+ <li class="itemize">The main <span
+class="cmss-10">glossaries</span><a
+ id="dx1-10001"></a> <a
+href="glossaries-user.html" >user manual</a>.
+ </li>
+ <li class="itemize">The <a
+href="http://www.dickimaw-books.com/faqs/glossariesfaq.html" >glossaries FAQ</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="https://ctan.org/pkg/glossaries-extra" ><span
+class="cmss-10">glossaries-extra</span></a> package.
+ </li>
+ <li class="itemize">The <a
+href="https://ctan.org/pkg/bib2gls" ><span
+class="cmtt-10">bib2gls</span></a> application.</li></ul>
+ <div class="footnotes"><!--l. 1038--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn1x0-bk" id="fn1x0"><sup class="textsuperscript">1</sup></a></span><span
+class="cmr-8">deprecated, use </span><span
+class="cmss-8">babel</span><a
+ id="dx1-5021"></a> <span
+class="cmr-8">instead</span></p> </div>
+
+</body></html>
+
+
+
+
diff --git a/macros/latex/contrib/glossaries/glossariesbegin.pdf b/macros/latex/contrib/glossaries/glossariesbegin.pdf
new file mode 100644
index 0000000000..456669e405
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossariesbegin.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/glossariesbegin.tex b/macros/latex/contrib/glossaries/glossariesbegin.tex
new file mode 100644
index 0000000000..d630031205
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossariesbegin.tex
@@ -0,0 +1,2092 @@
+\documentclass{nlctdoc}
+
+\usepackage[utf8]{inputenc}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage{mathpazo}
+\usepackage[scaled=.88]{helvet}
+\usepackage{courier}
+\usepackage{xr-hyper}
+\fi
+
+\usepackage{alltt}
+\usepackage{pifont}
+\usepackage{array}
+\usepackage{color}
+
+\usepackage[colorlinks,linkcolor=blue,pdfauthor={Nicola L.C. Talbot},
+ pdftitle={The glossaries package: a guide for beginners}]{hyperref}
+\usepackage[nomain]{glossaries}
+
+\newcommand*{\yes}{\ding{52}}
+\newcommand*{\no}{\ding{56}}
+
+\newcommand*{\proyes}{\textcolor{green}{\yes}}
+\newcommand*{\prono}{\textcolor{red}{\no}}
+
+\newcommand*{\conyes}{\textcolor{red}{\yes}}
+\newcommand*{\conno}{\textcolor{green}{\no}}
+
+\newcommand*{\code}[1]{%
+ \texorpdfstring{{\frenchspacing\obeyspaces\ttfamily#1}}{#1}}
+\newcommand*{\file}[1]{\texorpdfstring{\texttt{#1}}{#1}}
+
+\title{The glossaries package v4.42:
+a guide for beginners}
+\author{Nicola L.C. Talbot}
+\date{2019-01-06}
+
+\ifpdf
+ \externaldocument{glossaries-user}
+\fi
+
+\makeatletter
+\newcommand*{\optionlabel}[1]{%
+ \@glstarget{option#1}{}\textbf{Option~#1}}
+\makeatother
+
+\newcommand*{\opt}[1]{\hyperlink{option#1}{Option~#1}}
+\newcommand*{\optsor}[2]{Options~\hyperlink{option#1}{#1}
+or~\hyperlink{option#2}{#2}}
+\newcommand*{\optsand}[2]{Options~\hyperlink{option#1}{#1}
+and~\hyperlink{option#2}{#2}}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+The \styfmt{glossaries} package is very flexible, but this means
+that it has a~lot of options, and since a user guide is supposed to
+provide a complete list of all the high-level user commands, the main
+user manual is quite big. This can be rather
+daunting for beginners, so this document is a brief introduction
+just to help get you started. If you find yourself saying, \qt{Yeah,
+but how can I do\ldots?} then it's time to move on to the
+\docref{main user manual}{glossaries-user}.
+
+I've made some statements in this document that don't actually tell
+you the full truth, but it would clutter the document and cause
+confusion if I keep writing \qt{except when \ldots} or \qt{but you can
+also do this, that or the other} or \qt{you can do it this way but
+you can also do it that way, but that way may cause complications
+under certain circumstances}.
+\end{abstract}
+
+\tableofcontents
+
+\section{Getting Started}
+\label{sec:start}
+
+As with all packages, you need to load \styfmt{glossaries} with
+\cs{usepackage}, but there are certain packages that must be loaded
+before \styfmt{glossaries}, \emph{if} they are required: \sty{hyperref},
+\sty{babel}, \sty{polyglossia}, \sty{inputenc} and \sty{fontenc}.
+(You don't have to load these packages, but if you want them, you
+must load them before \styfmt{glossaries}.)
+
+\begin{important}
+If you require multilingual support you must also install
+the relevant language module. Each language module is called
+\file{glossaries-}\meta{language}, where \meta{language} is the
+root language name. For example, \file{glossaries-french}
+or \file{glossaries-german}. If a language module is required,
+the \styfmt{glossaries} package will automatically try to load it
+and will give a warning if the module isn't found.
+\end{important}
+
+Once you have loaded \styfmt{glossaries}, you need to define
+your terms in the preamble and then you can use them throughout the
+document. Here's a simple example:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries}
+
+ \newglossaryentry{ex}{name={sample},description={an example}}
+
+ \begin{document}
+ Here's my \gls{ex} term.
+ \end{document}
+\end{verbatim}
+This produces:
+\begin{quote}
+Here's my sample term.
+\end{quote}
+Here's another example:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries}
+
+ \setacronymstyle{long-short}
+
+ \newacronym{svm}{SVM}{support vector machine}
+
+ \begin{document}
+ First use: \gls{svm}. Second use: \gls{svm}.
+ \end{document}
+\end{verbatim}
+This produces:
+\begin{quote}
+First use: support vector machine (SVM). Second use: SVM.
+\end{quote}
+In this case, the text produced by \verb|\gls{svm}| changed after the first
+use. The first use produced the long form followed by the short form
+in parentheses because I set the acronym style to
+\code{long-short}. I suggest you try the above two examples to
+make sure you have the package correctly installed.
+If you get an \code{undefined control sequence} error, check that
+the version number at the top of this document matches the version
+you have installed. (Open the \file{.log} file and search for the
+line that starts with \code{Package: glossaries} followed by a
+date and version.)
+
+\begin{important}
+Be careful of fragile commands. If a command causes a problem when
+used in one of the \cs{newglossaryentry} fields, consider adding
+\cs{glsnoexpandfields} before you start defining your entries.
+\end{important}
+
+Abbreviations are slightly different if you use the extension package
+\sty{glossaries-extra} (which needs to be installed separately):
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries-extra}
+
+ \setabbreviationstyle{long-short}% glossaries-extra.sty
+
+ \newabbreviation{svm}{SVM}{support vector machine}% glossaries-extra.sty
+
+ \begin{document}
+ First use: \gls{svm}. Second use: \gls{svm}.
+ \end{document}
+\end{verbatim}
+If you still want to use \cs{newacronym} (rather than
+\cs{newabbreviation}) then you need the optional
+argument of \cs{setabbreviationstyle}:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries-extra}
+
+ \setabbreviationstyle[acronym]{long-short}% glossaries-extra.sty only
+
+ \newacronym{svm}{SVM}{support vector machine}
+
+ \begin{document}
+ First use: \gls{svm}. Second use: \gls{svm}.
+ \end{document}
+\end{verbatim}
+\begin{important}
+You can't use \cs{setacronymstyle} with \sty{glossaries-extra}.
+\end{important}
+
+If you like, you can put all your definitions in another file (for
+example, \file{defns.tex}) and load that file in the preamble using
+\cs{loadglsentries} with the filename as the argument. For example:
+\begin{verbatim}
+\loadglsentries{defns}
+\end{verbatim}
+If you find you have a really large number of definitions that are
+hard to manage in a \file{.tex} file, you might want to have a
+look at \app{bib2gls} (installed separately) which requires
+a \file{.bib} format instead that can be managed by an application
+such as JabRef.
+
+Don't try inserting formatting commands into the definitions as they
+can interfere with the underlying mechanism. Instead, the
+formatting should be done by the style. For example, suppose I~want
+to replace \code{SVM} with \verb|\textsc{svm}|, then
+I~need to select a style that uses \cs{textsc}, like this (for the
+base \styfmt{glossaries} style):
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries}
+
+ \setacronymstyle{long-sc-short}
+
+ \newacronym{svm}{svm}{support vector machine}
+
+ \begin{document}
+ First use: \gls{svm}. Second use: \gls{svm}.
+ \end{document}
+\end{verbatim}
+The abbreviation styles have a different naming scheme with
+\sty{glossaries-extra}:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries-extra}
+
+ \setabbreviationstyle{long-short-sc}% glossaries-extra.sty
+
+ \newabbreviation{svm}{svm}{support vector machine}% glossaries-extra.sty
+
+ \begin{document}
+ First use: \gls{svm}. Second use: \gls{svm}.
+ \end{document}
+\end{verbatim}
+With \sty{glossaries-extra} you can have multiple abbreviation
+styles for different categories. Many of these styles have their
+own associated formatting commands that can be redefined
+for minor adjustments. For example:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries-extra}
+
+ \setabbreviationstyle[statistical]{long-short-sc}
+ \setabbreviationstyle[bacteria]{long-only-short-only}
+
+ % Formatting commands used by 'long-only-short-only' style:
+ \renewcommand*{\glsabbrvonlyfont}[1]{\emph{#1}}
+ \renewcommand*{\glslongonlyfont}[1]{\emph{#1}}
+
+ % Formatting command used by 'long-short-sc' style:
+ % (make sure abbreviation is converted to lower case)
+ \renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}}
+
+ \newabbreviation
+ [
+ category={statistical}% glossaries-extra.sty key
+ ]
+ {svm}{SVM}{support vector machine}
+
+ \newabbreviation
+ [
+ category={bacteria}% glossaries-extra.sty key
+ ]
+ {cbot}{C.~botulinum}{Clostridium botulinum}
+
+ \begin{document}
+ First use: \gls{svm}, \gls{cbot}.
+
+ Next use: \gls{svm}, \gls{cbot}.
+ \end{document}
+\end{verbatim}
+This produces:
+\begin{quote}
+First use: support vector machine (\textsc{svm}), \emph{Clostridium
+botulinum}.
+
+Next use: \textsc{svm}, \emph{C.~botulinum}.
+\end{quote}
+
+As you can hopefully see from the above examples, there are two main ways of
+defining a term: as a general entry (\cs{newglossaryentry}) or as an
+abbreviation (\cs{newacronym} or, with \sty{glossaries-extra},
+\cs{newabbreviation}).
+
+Regardless of the method of defining a term, the term is always
+given a label. In the first example, the label was
+\code{ex} and in the other examples the label was \code{svm}
+(and \code{cbot} in the last example). The
+label is used to uniquely identify the term (like the standard
+\cs{label}\slash\cs{ref} or \cs{cite} mechanism). It's best to just use the
+following alphanumerics in the labels: \code{a}, \ldots,
+\code{z}, \code{A}, \ldots, \code{Z}, \code{0}, \ldots,
+\code{9}. Sometimes you can also use punctuation characters but
+not if another package (such as \sty{babel}) meddles with them.
+Don't try using any characters outside of the basic Latin set with
+\sty{inputenc} (for example, \'e or \ss) or things will go horribly
+wrong. This warning only applies to the label. It doesn't apply to
+the text that appears in the document.
+
+\begin{important}
+Don't use \cs{gls} in chapter or section headings as it can have
+some unpleasant side-effects. Instead use \cs{glsentrytext} for
+regular entries and one of \cs{glsentryshort}, \cs{glsentrylong}
+or \cs{glsentryfull} for acronyms. Alternatively use
+\sty{glossaries-extra} which provides special commands for use in
+section headings, such as \cs{glsfmtshort}\marg{label}.
+\end{important}
+
+The above examples are reasonably straightforward. The difficulty
+comes if you want to display a \emph{sorted} list of all the entries you
+have used in the document. The \sty{glossaries-extra} package
+provides a really easy way of listing all the defined entries:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage[sort=none]{glossaries-extra}
+
+ \newglossaryentry{potato}{name={potato},plural={potatoes},
+ description={starchy tuber}}
+
+ \newglossaryentry{cabbage}{name={cabbage},
+ description={vegetable with thick green or purple leaves}}
+
+ \newglossaryentry{turnip}{name={turnip},
+ description={round pale root vegetable}}
+
+ \newglossaryentry{carrot}{name={carrot},
+ description={orange root}}
+
+ \begin{document}
+ Chop the \gls{cabbage}, \glspl{potato} and \glspl{carrot}.
+
+ \printunsrtglossaries % list all entries
+ \end{document}
+\end{verbatim}
+However this method doesn't sort the entries (they're listed in
+order of definition) and it will display all the defined entries,
+regardless of whether or not you've used them all in the document,
+so \qt{turnip} appears in the glossary even though there's
+no \verb|\gls{turnip}| (or similar) in the document.
+
+The \pkgopt[none]{sort} option isn't essential in this case (there's
+no other sort option available for this document), but it prevents
+the automatic construction of the sort value and so slightly
+improves the document build time.
+
+Note that this example document uses the same command
+(\cs{printunsrtglossaries}) that's used with \app{bib2gls} (\opt4)
+but with \app{bib2gls} you instead need to use the
+\pkgopt{record} package option and one or more instances of
+\cs{GlsXtrLoadResources} in the preamble (see below).
+
+Most users prefer to have an automatically sorted list that only
+contains entries that have been used in the document.
+The \styfmt{glossaries} package provides
+three options: use \TeX\ to perform the sorting (\opt1); use
+\app{makeindex} to perform the sorting (\opt2); use \app{xindy} to
+perform the sorting (\opt3). The extension package \sty{glossaries-extra}
+provides a fourth method: use \app{bib2gls} (\opt4).
+
+The first option (using \TeX) is the simplest method, as it doesn't
+require an external tool, but it's very inefficient and the sorting
+is done according to the English alphabet. To use this method, add
+\cs{makenoidxglossaries} to the preamble and put
+\cs{printnoidxglossaries} at the place where you want your glossary.
+For example:
+\begin{verbatim}
+ \documentclass{article}
+
+ \usepackage{glossaries}
+
+ \makenoidxglossaries % use TeX to sort
+
+ \newglossaryentry{potato}{name={potato},plural={potatoes},
+ description={starchy tuber}}
+
+ \newglossaryentry{cabbage}{name={cabbage},
+ description={vegetable with thick green or purple leaves}}
+
+ \newglossaryentry{turnip}{name={turnip},
+ description={round pale root vegetable}}
+
+ \newglossaryentry{carrot}{name={carrot},
+ description={orange root}}
+
+ \begin{document}
+ Chop the \gls{cabbage}, \glspl{potato} and \glspl{carrot}.
+
+ \printnoidxglossaries
+ \end{document}
+\end{verbatim}
+
+\begin{important}
+The \cs{makenoidxglossaries} method is very slow, uses an ASCII
+comparator and often breaks if there are commands in the
+\code{name} key.
+\end{important}
+
+Try this out and run \LaTeX\ (or pdf\LaTeX) \emph{twice}. The first
+run won't show the glossary. It will only appear on the second run.
+This doesn't include \qt{turnip} in the glossary because that term
+hasn't been used (with commands like \verb|\gls{turnip}|) in the document.
+
+The glossary has a vertical gap between the \qt{carrot} term and the
+\qt{potato} term. This is because the entries in the glossaries are
+grouped according to their first letter. If you don't want this gap,
+just add \pkgopt{nogroupskip} to the package options:
+\begin{verbatim}
+\usepackage[nogroupskip]{glossaries}
+\end{verbatim}
+or you may want to try out a style that shows the group headings:
+\begin{verbatim}
+\usepackage[style=indexgroup]{glossaries}
+\end{verbatim}
+If you try out this example you may also notice that the description
+is followed by a full stop (period) and a number. The number is the
+location in the document where the entry was used (page~1 in this
+case), so you can lookup the term in the glossary and be directed to
+the relevant pages. It may be that you don't want this
+back-reference, in which case you can suppress it using the
+\pkgopt{nonumberlist} package option:
+\begin{verbatim}
+\usepackage[nonumberlist]{glossaries}
+\end{verbatim}
+If you don't like the terminating full stop, you can suppress that
+with the \pkgopt{nopostdot} package option:
+\begin{verbatim}
+\usepackage[nopostdot]{glossaries}
+\end{verbatim}
+
+If you tried out the previous example with \sty{glossaries-extra}
+and \cs{printunsrtglossaries} the terminating full stop is missing
+and there are no number lists. You can add the full stop back with
+\begin{verbatim}
+\usepackage[nopostdot=false]{glossaries-extra}
+\end{verbatim}
+or
+\begin{verbatim}
+\usepackage[postdot]{glossaries-extra}
+\end{verbatim}
+If you want the number lists then you need to use an indexing option.
+
+
+You may have noticed that I've used another command in the above example:
+\cs{glspl}. This displays the plural form. By default, this is just
+the singular form with the letter \qt{s} appended, but in the case of
+\qt{potato} I had to specify the correct plural using the
+\code{plural} key.
+
+As I mentioned earlier, using \TeX\ to sort the entries is the
+simplest but least efficient method. If you have a large glossary or
+if your terms contain non-Latin or extended Latin characters, then
+you will have a much faster build time if you use \app{makeindex}
+(\opt2) or \app{xindy} (\opt3) or \app{bib2gls} (\opt4). If
+you are using extended Latin or non-Latin characters, then
+\app{xindy} or \app{bib2gls} are the recommended methods.
+These methods are described in more detail in
+\sectionref{sec:printglossaries}.
+
+The rest of this document briefly describes the main commands
+provided by the \styfmt{glossaries} package. (Most of these are also
+available with \sty{glossaries-extra} but may behave slightly
+differently.)
+
+\section{Defining Terms}
+\label{sec:defterm}
+
+When you use the \sty{glossaries} package, you need to define
+glossary entries in the document preamble. These entries could be
+a~word, phrase, abbreviation or symbol. They're usually accompanied by
+a~description, which could be a short sentence or an in-depth
+explanation that spans multiple paragraphs. The simplest method of
+defining an entry is to use:
+\begin{definition}
+\begin{alltt}
+\cs{newglossaryentry}\marg{label}
+\verb|{|
+ name=\marg{name},
+ description=\marg{description},
+ \meta{other options}
+\verb|}|
+\end{alltt}
+\end{definition}
+where \meta{label} is a unique label that identifies this entry.
+(Don't include the angle brackets \meta{ }. They just indicate the parts of
+the code you need to change when you use this command in your document.)
+The \meta{name} is the word, phrase or symbol you are defining,
+and \meta{description} is the description to be displayed in the
+glossary.
+
+This command is a \qt{short} command, which means that
+\meta{description} can't contain a~paragraph break. If you have
+a~long description, you can instead use:
+\begin{definition}
+\begin{alltt}
+\cs{longnewglossaryentry}\marg{label}
+\verb|{|
+ name=\marg{name},
+ \meta{other options}
+\verb|}|
+\marg{description}
+\end{alltt}
+\end{definition}
+
+Examples:
+\begin{enumerate}
+\item Define the term \qt{set} with the label \code{set}:
+\begin{verbatim}
+\newglossaryentry{set}
+{
+ name={set},
+ description={a collection of objects}
+}
+\end{verbatim}
+
+\item Define the symbol $\emptyset$ with the label
+\code{emptyset}:
+\begin{verbatim}
+\newglossaryentry{emptyset}
+{
+ name={\ensuremath{\emptyset}},
+ description={the empty set}
+}
+\end{verbatim}
+(This will also need a \code{sort} key if you use \optsor13, see
+below.)
+
+\item Define the phrase \qt{Fish Age} with the label
+\code{fishage}:
+\begin{verbatim}
+\longnewglossaryentry{fishage}
+{name={Fish Age}}
+{%
+ A common name for the Devonian geologic period
+ spanning from the end of the Silurian Period to
+ the beginning of the Carboniferous Period.
+
+ This age was known for its remarkable variety of
+ fish species.
+}
+\end{verbatim}
+(The percent character discards the end of line character that would
+otherwise cause an unwanted space to appear at the start of the
+description.)
+
+\item Take care if the first letter is an extended Latin or
+non-Latin character (either specified via a~command such as
+\verb|\'e| or explicitly via the \sty{inputenc} package such
+as \code{\'e}). This first letter must be placed in a~group:
+
+\begin{verbatim}
+\newglossaryentry{elite}
+{
+ name={{\'e}lite},
+ description={select group or class}
+}
+\end{verbatim}
+or
+\begin{alltt}
+\verb|\newglossaryentry{elite}|
+\verb|{|
+ name=\verb|{{|\'e\verb|}lite}|,
+ description=\verb|{select group or class}|
+\verb|}|
+\end{alltt}
+\end{enumerate}
+(For further details, see the section \qt{UTF-8} of the
+\href{https://ctan.org/pkg/mfirstuc}{\styfmt{mfirstuc}} user manual.)
+
+If you use \app{bib2gls} with \sty{glossaries-extra} then the
+terms must be defined in a \file{.bib} file. For example:
+\begin{alltt}
+\% Encoding: UTF-8
+
+@entry\{set,
+ name=\{set\},
+ description=\{a collection of objects\}
+\}
+
+@entry\{emptyset,
+ name=\verb|{\ensuremath{\emptyset}}|,
+ description=\{the empty set\}
+\}
+
+@entry\{fishage,
+ name=\{Fish Age\},
+ description=\{A common name for the Devonian geologic period
+ spanning from the end of the Silurian Period to
+ the beginning of the Carboniferous Period.
+
+ This age was known for its remarkable variety of
+ fish species.\}
+\}
+
+@entry\{elite,
+ name=\verb|{{|\'e\verb|}lite}|,
+ description=\verb|{select group or class}|
+\}
+\end{alltt}
+(The \file{.bib} format doesn't allow spaces in labels so you can't
+have \code{fish age} as the label, but you can have
+\code{fish-age}.)
+This method requires the \sty{glossaries-extra}'s \pkgopt{record}
+package option:
+\begin{verbatim}
+\usepackage[record]{glossaries-extra}
+\end{verbatim}
+and the \file{.bib} file is specified in the resource command. For
+example, if the \file{.bib} file is called \file{entries.bib}
+then put the following line in the document preamble:
+\begin{verbatim}
+\GlsXtrLoadResources[src={entries}]
+\end{verbatim}
+You can have a comma-separated list. For example, if you also
+have entries defined in the file \file{entries2.bib}:
+\begin{verbatim}
+\GlsXtrLoadResources[src={entries,entries2.bib}]
+\end{verbatim}
+
+There are other keys you can use when you define an entry. For
+example, the \code{name} key indicates how the term
+should appear in the list of entries (glossary), but if the term should
+appear differently when you reference it with \cs{gls}\marg{label} in
+the document, you need to use the \code{text} key as well.
+
+For example:
+\begin{verbatim}
+\newglossaryentry{latinalph}
+{
+ name={Latin Alphabet},
+ text={Latin alphabet},
+ description={alphabet consisting of the letters
+ a, \ldots, z, A, \ldots, Z}
+}
+\end{verbatim}
+This will appear in the text as \qt{Latin alphabet} but will be listed in
+the glossary as \qt{Latin Alphabet}.
+With \app{bib2gls} this entry is defined in the \file{.bib}
+file as:
+\begin{verbatim}
+@entry{latinalph,
+ name={Latin Alphabet},
+ text={Latin alphabet},
+ description={alphabet consisting of the letters
+ a, \ldots, z, A, \ldots, Z}
+}
+\end{verbatim}
+
+Another commonly used key is \code{plural} for specifying the
+plural of the term. This defaults to the value of the \code{text}
+key with an \qt{s} appended, but if this is incorrect, just use the
+\code{plural} key to override it:
+\begin{verbatim}
+\newglossaryentry{oesophagus}
+{
+ name={{\oe}sophagus},
+ plural={{\oe}sophagi},
+ description={canal from mouth to stomach}
+}
+\end{verbatim}
+(Remember from earlier that the initial ligature \cs{oe} needs to
+be grouped.)
+
+Abbreviations can be defined using
+\begin{definition}
+\cs{newacronym}\oarg{options}\marg{label}\marg{short}\marg{long}
+\end{definition}
+where \meta{label} is the label (as per \cs{newglossaryentry}),
+\meta{short} is the short form and \meta{long} is the long form.
+For example, the
+following defines an abbreviation:
+\begin{verbatim}
+\newacronym{svm}{SVM}{support vector machine}
+\end{verbatim}
+This internally uses \cs{newglossaryentry} to define an entry with
+the label \code{svm}. By default, the \code{name} key is set to
+\meta{short} (\qt{SVM} in the above example) and the
+\code{description} key is set to \meta{long} (\qt{support vector
+machine} in the above example). If, instead, you want to be able to
+specify your own description you can do this using the optional
+argument:
+\begin{verbatim}
+\newacronym
+ [description={statistical pattern recognition technique}]
+ {svm}{SVM}{support vector machine}
+\end{verbatim}
+
+Before you define your acronyms (or other types of abbreviations), you
+need to specify which style to use with
+\begin{definition}
+\cs{setacronymstyle}\marg{style name}
+\end{definition}
+where \meta{style name} is the name of the style. There are a number
+of predefined styles, such as: \code{long-short} (on first use
+display the long form with the short form in parentheses);
+\code{short-long} (on first use display the short form with the
+long form in parentheses); \code{long-short-desc} (like
+\code{long-short} but you need to specify the description); or
+\code{short-long-desc} (like \code{short-long} but you need to
+specify the description). There are some other styles as well that
+use \cs{textsc} to typeset the acronym or that use a footnote on
+first use. See the main user guide for further details.
+
+The \sty{glossaries-extra} package provides improved abbreviation
+handling with \href{http://www.dickimaw-books.com/gallery/sample-abbr-styles.shtml}{a lot more predefined styles}.
+With this extension package, abbreviations are defined using:
+\begin{definition}
+\cs{newabbreviation}\oarg{options}\marg{label}\marg{short}\marg{long}
+\end{definition}
+You can still use \cs{newacronym} but it's redefined to
+use the new abbreviation interface. The style must now be set using:
+\begin{definition}
+\cs{setabbreviationstyle}\oarg{category}\marg{style name}
+\end{definition}
+The default \meta{category} is \code{abbreviation}. If you use
+\cs{newacronym} the category is \code{acronym}, which is why you
+need to use the optional argument if you define abbreviations with
+\cs{newacronym} when \sty{glossaries-extra} has been loaded:
+\begin{alltt}
+\cs{setabbreviationstyle}[acronym]\marg{style name}
+\end{alltt}
+If you use \app{bib2gls} then abbreviations are defined in the
+\file{.bib} file in the format:
+\begin{alltt}
+@abbreviation\{\meta{label},
+ long=\marg{long form},
+ short=\marg{short form}
+\}
+\end{alltt}
+
+The plural forms for abbreviations can be specified using the
+\code{longplural} and \code{shortplural} keys. For example:
+\begin{verbatim}
+\newacronym
+ [longplural={diagonal matrices}]
+ {dm}{DM}{diagonal matrix}
+\end{verbatim}
+or (with \sty{glossaries-extra}):
+\begin{verbatim}
+\newabbreviation % glossaries-extra.sty
+ [longplural={diagonal matrices}]
+ {dm}{DM}{diagonal matrix}
+\end{verbatim}
+If omitted, the defaults are again obtained by appending an \qt{s} to
+the singular versions. With \app{bib2gls}, the definition in the
+\file{.bib} file is:
+\begin{verbatim}
+@abbreviation{dm,
+ short={DM},
+ long={diagonal matrix},
+ longplural={diagonal matrices}
+}
+\end{verbatim}
+
+It's also possible to have both a~name and a~corresponding symbol.
+Just use the \code{name} key for the name and the \code{symbol} key
+for the symbol. For example:
+\begin{verbatim}
+\newglossaryentry{emptyset}
+{
+ name={empty set},
+ symbol={\ensuremath{\emptyset}},
+ description={the set containing no elements}
+}
+\end{verbatim}
+or with \app{bib2gls} the definition in the \file{.bib} file is:
+\begin{verbatim}
+@entry{emptyset,
+ name={empty set},
+ symbol={\ensuremath{\emptyset}},
+ description={the set containing no elements}
+}
+\end{verbatim}
+
+If you want the symbol in the \code{name} field then you must
+supply a \code{sort} value with \optsand13 otherwise you'll end up
+with errors from \TeX\ or \app{xindy}. With \opt2
+(\app{makeindex}) it's not quite so important but you may find
+the resulting order is a little odd. For example:
+\begin{verbatim}
+\newglossaryentry{emptyset}
+{
+ name={\ensuremath{\emptyset}},
+ sort={empty set},
+ description={the set containing no elements}
+}
+\end{verbatim}
+This displays the symbol as $\emptyset$ but sorts according to
+\qt{empty set}. You may want to consider using
+\sty{glossaries-extra}'s \pkgopt{symbols} package option which
+provides
+\begin{definition}
+\cs{glsxtrnewsymbol}\oarg{options}\marg{label}\marg{symbol}
+\end{definition}
+This internally uses \cs{newglossaryentry} but automatically sets
+the \code{sort} key to the \meta{label}. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[symbols]{glossaries-extra}
+
+\makeglossaries
+
+\glsxtrnewsymbol % requires glossaries-extra.sty 'symbols' option
+ [description={the set containing no elements}]
+ {emptyset}% label (and sort value)
+ {\ensuremath{\emptyset}}% symbol
+
+\begin{document}
+\gls{emptyset}
+
+\printglossaries
+\end{document}
+\end{verbatim}
+Now the sort value is \qt{emptyset} rather than the previous
+\qt{empty set}.
+
+With \app{bib2gls} you can define this in the \file{.bib} file
+as
+\begin{verbatim}
+@entry{emptyset,
+ name={\ensuremath{\emptyset}},
+ description={the set containing no elements}
+}
+\end{verbatim}
+in which case \app{bib2gls} will try to interpret the \code{name}
+field to determine the sort value. Alternatively you can use:
+\begin{verbatim}
+@symbol{emptyset,
+ name={\ensuremath{\emptyset}},
+ description={the set containing no elements}
+}
+\end{verbatim}
+which will use the label (\code{emptyset}) as the sort value.
+(You don't need the \pkgopt{symbols} package option in this case,
+unless you want a separate symbols list.) The corresponding document
+(where the definition is in the file \file{entries.bib}) is now:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record]{glossaries-extra}
+
+\GlsXtrLoadResources[src=entries]
+
+\begin{document}
+\gls{emptyset}
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+
+\section{Using Entries}
+\label{sec:useterm}
+
+Once you have defined your entries, as described above, you can
+reference them in your document. There are a~number of commands to
+do this, but the most common one is:
+\begin{definition}
+\cs{gls}\marg{label}
+\end{definition}
+where \meta{label} is the label you assigned to the entry when you
+defined it. For example, \verb|\gls{fishage}| will display \qt{Fish
+Age} in the text (given the definition from the previous section).
+If you are using \app{bib2gls} then this will display ?? (like
+\cs{ref} and \cs{cite}) until \app{bib2gls} has created the
+relevant files and \LaTeX\ is rerun.
+
+If you are using the \sty{hyperref} package (remember to load it
+before \styfmt{glossaries}) \cs{gls} will create a hyperlink to the
+corresponding entry in the glossary. If you want to suppress the
+hyperlink for a particular instance, use the starred form \cs{gls*}
+for example, \verb|\gls*{fishage}|. The other commands described in
+this section all have a similar starred form.
+
+If the entry was defined as an acronym (using \cs{newacronym} with
+\styfmt{glossaries} described above) or an abbreviation (using
+\cs{newabbreviation} with \sty{glossaries-extra}), then \cs{gls}
+will display the full form the first time it's used and just the
+short form on subsequent use. For example, if the style is
+set to \code{long-short}, then \verb|\gls{svm}| will display
+\qt{support vector machine (SVM)} the first time it's used, but the
+next occurrence of \verb|\gls{svm}| will just display \qt{SVM}.
+(If you use \cs{newacronym} with \sty{glossaries-extra} the default
+doesn't show the long form on first use. You'll need to change the
+style first, as described earlier.)
+
+If you want the plural form, you can use:
+\begin{definition}
+\cs{glspl}\marg{label}
+\end{definition}
+instead of \cs{gls}\marg{label}. For example, \verb|\glspl{set}|
+displays \qt{sets}.
+
+If the term appears at the start of a~sentence, you can convert the
+first letter to upper case using:
+\begin{definition}
+\cs{Gls}\marg{label}
+\end{definition}
+for the singular form or
+\begin{definition}
+\cs{Glspl}\marg{label}
+\end{definition}
+for the plural form. For example:
+\begin{verbatim}
+\Glspl{set} are collections.
+\end{verbatim}
+produces \qt{Sets are collections}.
+
+If you've specified a symbol using the \code{symbol} key, you can
+display it using:
+\begin{definition}
+\cs{glssymbol}\marg{label}
+\end{definition}
+
+\section{Displaying a List of Entries}
+\label{sec:printglossaries}
+
+In \sectionref{sec:start}, I mentioned that there are three options
+you can choose from to create an automatically sorted glossary with the base
+\styfmt{glossaries} package. These are also available with the
+extension package \styfmt{glossaries-extra} along with a fourth
+option. These four options are listed below in a little more detail.
+\Tableref{tab:optionsp+c} summarises the main advantages and
+disadvantages. (There's a more detailed summary in the main
+\styfmt{glossaries} user manual.) See also
+\href{https://www.dickimaw-books.com/latex/buildglossaries/}{Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build}.
+
+\begin{table}[htbp]
+ \caption{Comparison of Glossary Options}
+ \label{tab:optionsp+c}
+ {%
+ \centering
+ \begin{tabular}{>{\raggedright}p{0.3\textwidth}cccc}
+ & \bfseries \opt1 & \bfseries \opt2 & \bfseries \opt3 & \bfseries
+\opt4\\
+ Requires \sty{glossaries-extra}? &
+ \conno & \conno & \conno & \conyes\\
+ Requires an external application? &
+ \conno & \conyes & \conyes & \conyes\\
+ Requires Perl? &
+ \conno & \conno & \conyes & \conno\\
+ Requires Java? &
+ \conno & \conno & \conno & \conyes\\
+ Can sort extended Latin
+ or non-Latin alphabets? &
+ \prono & \prono & \proyes & \proyes\\
+ Efficient sort algorithm? &
+ \prono & \proyes & \proyes & \proyes\\
+ Can use different sort methods for each glossary? &
+ \proyes & \prono & \prono & \proyes\\
+ Any problematic sort values? &
+ \conyes & \conyes & \conyes & \conno\\
+ Can form ranges in the location lists? &
+ \prono & \proyes & \proyes & \proyes\\
+ Can have non-standard locations? &
+ \proyes & \prono & \proyes\textsuperscript{\textdagger} & \proyes
+ \end{tabular}
+ \par}\medskip\footnotesize\textsuperscript{\textdagger} Requires some setting up.
+\end{table}
+
+
+\begin{description}
+\item[]\optionlabel1:
+
+ This is the simplest option but it's slow and if
+ you want a sorted list, it doesn't work for non-Latin alphabets.
+ The \code{name} mustn't contain commands (or, if it does, the
+ \code{sort} value must be supplied) unless you
+ have the package option \pkgopt{sanitizesort} or \pkgopt[def]{sort}
+ or \pkgopt[use]{sort}.
+
+ \begin{enumerate}
+ \item Add \cs{makenoidxglossaries} to your preamble (before you
+ start defining your entries, as described in
+ \sectionref{sec:defterm}).
+
+ \item Put
+\begin{definition}
+\cs{printnoidxglossary}[sort=\meta{order},\meta{other options}]
+\end{definition}
+ where you want your list of entries to appear. The sort
+ \meta{order} may be one of: \code{word} (word ordering),
+ \code{letter} (letter ordering), \code{case} (case-sensitive
+ letter ordering), \code{def} (in order of definition) or
+ \code{use} (in order of use). Alternatively, use
+\begin{definition}
+\cs{printnoidxglossaries}
+\end{definition}
+ to display all your glossaries (if you have more than one). This
+ command doesn't have any arguments.
+
+ This option allows you to have different sort methods. For
+ example:
+\begin{verbatim}
+\printnoidxglossary[sort=word]% main glossary
+\printnoidxglossary[type=symbols,sort=use]% symbols glossary
+\end{verbatim}
+
+ \item Run \LaTeX\ twice on your document. (As you would do to
+ make a~table of contents appear.) For example, click twice on
+ the \qt{typeset} or \qt{build} or \qt{PDF\LaTeX} button in your editor.
+ \end{enumerate}
+Here's a complete document (\file{myDoc.tex}):
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makenoidxglossaries % use TeX to sort
+
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+
+\begin{document}
+A \gls{sample}.
+
+\printnoidxglossaries % iterate over all indexed entries
+\end{document}
+\end{verbatim}
+Document build:
+\begin{verbatim}
+pdflatex myDoc
+pdflatex myDoc
+\end{verbatim}
+
+\item[]\optionlabel2:
+
+ This option uses an application called \app{makeindex} to sort
+ the entries. This application comes with all modern \TeX\ distributions,
+ but it's hard-coded for the non-extended Latin alphabet. This process
+ involves making \LaTeX\ write the glossary information to a temporary
+ file which \app{makeindex} reads. Then \app{makeindex} writes
+ a~new file containing the code to typeset the glossary. \LaTeX\ then
+ reads this file on the next run. The \app{makeindex}
+ application is automatically invoked by the helper
+ \app{makeglossaries} script, which works out all the
+ appropriate settings from the \file{.aux} file.
+
+ \begin{enumerate}
+ \item If you are using \sty{ngerman}\footnote{deprecated, use
+\sty{babel} instead} or some other package that
+makes the double-quote character \verb|"| a shorthand, then use
+\cs{GlsSetQuote} to change this to some other character. For
+example:
+\begin{verbatim}
+\GlsSetQuote{+}
+\end{verbatim}
+ Use this as soon as possible after you've loaded the
+\styfmt{glossaries} package.
+
+ \item Add \cs{makeglossaries} to your preamble (before you start
+ defining your entries).
+
+ \item Put
+\begin{definition}
+\cs{printglossary}\oarg{options}
+\end{definition}
+ where you want your list of entries (glossary) to appear. (The
+ \code{sort} key isn't available in \meta{options}.)
+ Alternatively, use
+\begin{definition}
+\cs{printglossaries}
+\end{definition}
+ which will display all glossaries (if you have more than one).
+ This command doesn't have any arguments.
+
+\begin{important}
+All glossaries are sorted using the same method
+which may be identified with one of the package options:
+\pkgopt[standard]{sort} (default), \pkgopt[use]{sort}
+or \pkgopt[def]{sort}.
+\end{important}
+
+ \item Run \LaTeX\ on your document. This creates files with the
+ extensions \file{.glo} and \file{.ist} (for example, if your
+ \LaTeX\ document is called \file{myDoc.tex}, then you'll have
+ two extra files called \file{myDoc.glo} and \file{myDoc.ist}).
+ If you look at your document at this point, you won't see the
+ glossary as it hasn't been created yet.
+
+ \item Run \app{makeglossaries} with the base name of your
+ document (without the \file{.tex}) extension. If
+ you have access to a terminal or a command prompt (for example, the
+ MSDOS command prompt for Windows users or the bash console for
+ Unix-like users) then you need to run the command:
+\begin{verbatim}
+makeglossaries myDoc
+\end{verbatim}
+ (Replace \file{myDoc} with the base name of your \LaTeX\
+ document file without the \file{.tex} extension.
+ Avoid spaces in the file name.) If you don't have Perl installed
+ use \app{makeglossaries-lite} instead:
+\begin{verbatim}
+makeglossaries-lite myDoc
+\end{verbatim}
+
+\begin{important}
+Some beginners get confused by \app{makeglossaries} the
+application (run as a system command) and \cs{makeglossaries}
+the \LaTeX\ command which should be typed in the document
+preamble. These are two different concepts that happen to have
+similar looking names.
+\end{important}
+
+ If you don't know how to use the command prompt, then you can
+ probably configure your text editor to add
+ \app{makeglossaries} (or \app{makeglossaries-lite})
+ as a build tool, but each editor has a
+ different method of doing this, so I~can't give a~general
+ description. You will have to check your editor's manual.
+ If you still have problems, try adding the \pkgopt{automake}
+ package option:
+\begin{verbatim}
+\usepackage[automake]{glossaries}
+\end{verbatim}
+
+ The default sort is word order (\qt{sea lion} comes before \qt{seal}).
+ If you want letter ordering you need to add the
+ \pkgopt[letter]{order} package option
+\begin{verbatim}
+\usepackage[order=letter]{glossaries}
+\end{verbatim}
+
+ \item Once you have successfully completed the previous step,
+ you can now run \LaTeX\ on your document again.
+ \end{enumerate}
+Here's a complete document (\file{myDoc.tex}):
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries % create makeindex files
+
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+
+\begin{document}
+A \gls{sample}.
+
+\printglossaries % input files created by makeindex
+\end{document}
+\end{verbatim}
+Document build:
+\begin{verbatim}
+pdflatex myDoc
+makeglossaries myDoc
+pdflatex myDoc
+\end{verbatim}
+or
+\begin{verbatim}
+pdflatex myDoc
+makeglossaries-lite myDoc
+pdflatex myDoc
+\end{verbatim}
+
+
+\item[]\optionlabel3:
+
+ This option uses an application called
+ \app{xindy} to sort the entries. This application is more
+ flexible than \app{makeindex} and is able to sort extended
+ Latin or non-Latin alphabets. It comes with both \TeX~Live and
+ MiK\TeX. Since \app{xindy} is a Perl script, you will also
+ need to ensure that Perl is installed. In a~similar way to \opt2, this
+ option involves making \LaTeX\ write the glossary information to
+ a~temporary file which \app{xindy} reads. Then \app{xindy}
+ writes a~new file containing the code to typeset the glossary.
+ \LaTeX\ then reads this file on the next run. The \app{xindy}
+ application is automatically invoked by the helper
+ \app{makeglossaries} script, which works out all the
+ appropriate settings from the \file{.aux} file.
+
+ \begin{enumerate}
+ \item Add the \pkgopt{xindy} option to the \sty{glossaries}
+package option list:
+\begin{verbatim}
+\usepackage[xindy]{glossaries}
+\end{verbatim}
+
+ \item Add \cs{makeglossaries} to your preamble (before you start
+ defining your entries).
+
+ \item Put
+\begin{definition}
+\cs{printglossary}\oarg{options}
+\end{definition}
+ where you want your list of entries (glossary) to appear. (The
+ \code{sort} key isn't available in \meta{options}.)
+ Alternatively, use
+\begin{definition}
+\cs{printglossaries}
+\end{definition}
+
+\begin{important}
+All glossaries are sorted using the same method
+which may be identified with one of the package options:
+\pkgopt[standard]{sort} (default), \pkgopt[use]{sort}
+or \pkgopt[def]{sort}.
+\end{important}
+
+ \item Run \LaTeX\ on your document. This creates files with the
+ extensions \file{.glo} and \file{.xdy} (for example, if your
+ \LaTeX\ document is called \file{myDoc.tex}, then you'll have
+ two extra files called \file{myDoc.glo} and \file{myDoc.xdy}).
+ If you look at your document at this point, you won't see the
+ glossary as it hasn't been created yet.
+
+ \item Run \app{makeglossaries} with the base name of the
+ document (omitting the \file{.tex} extension).
+ If you have access to a terminal or a command prompt (for example, the
+ MSDOS command prompt for Windows users or the bash console for
+ Unix-like users) then you need to run the command:
+\begin{verbatim}
+makeglossaries myDoc
+\end{verbatim}
+ (Replace \file{myDoc} with the base name of your \LaTeX\
+ document file without the \file{.tex} extension.
+ Avoid spaces in the file name. If you don't know
+ how to use the command prompt, then as mentioned above, you may
+ be able to configure your text editor to add
+ \app{makeglossaries} as a build tool.
+
+ The default sort is word order (\qt{sea lion} comes before
+\qt{seal}).
+ If you want letter ordering you need to add the
+ \code{order=letter} package option:
+\begin{verbatim}
+\usepackage[xindy,order=letter]{glossaries}
+\end{verbatim}
+
+ \item Once you have successfully completed the previous step,
+ you can now run \LaTeX\ on your document again.
+
+ \end{enumerate}
+Here's a complete document (\file{myDoc.tex}):
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[xindy]{glossaries}
+
+\makeglossaries % create xindy files
+
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+
+\begin{document}
+A \gls{sample}.
+
+\printglossaries % input files created by xindy
+\end{document}
+\end{verbatim}
+Document build:
+\begin{verbatim}
+pdflatex myDoc
+makeglossaries myDoc
+pdflatex myDoc
+\end{verbatim}
+
+\item[]\optionlabel4:
+
+ This requires the extension package \sty{glossaries-extra} and
+ an application called \app{bib2gls}. This application is able
+ to sort extended Latin or non-Latin alphabets. It comes with both
+ \TeX~Live and MiK\TeX\ but requires at least Java~7. This method
+ works differently to \optsand23. Instead of creating a file
+ containing the code to typeset the glossary it creates a
+ \file{.glstex} file containing the entry definitions fetched
+ from the \file{.bib} file (or files), but only those entries
+ that are required in the document are defined and they are
+ defined in the order obtained from the chosen sort method.
+ This means that you can just use
+ \cs{printunsrtglossary} to display each glossary (or
+ \cs{printunsrtglossaries} to display them all).
+
+ \begin{enumerate}
+ \item Add the \pkgopt{record} option to the \sty{glossaries-extra}
+ package option list:
+\begin{verbatim}
+\usepackage[record]{glossaries-extra}
+\end{verbatim}
+
+ \item Add one or more
+\begin{definition}
+\cs{GlsXtrLoadResources}[src=\marg{bib list},\meta{options}]
+\end{definition}
+ to your preamble where \meta{bib list} is the
+ list of \file{.bib} files containing the entries. You may
+ use different sort methods for each resource set. For example:
+\begin{verbatim}
+\usepackage[record,% using bib2gls
+ abbreviations,
+ symbols,
+ numbers
+]{glossaries-extra}
+
+\GlsXtrLoadResources[
+ src={terms},% entries in terms.bib
+ type=main,% put these entries in the 'main' (default) list
+ sort={de-CH-1996}% sort according to this locale
+]
+\GlsXtrLoadResources[
+ src={abbrvs},% entries in abbrvs.bib
+ type=abbreviations,% put these entries in the 'abbreviations' list
+ sort={letter-case}% case-sensitive letter (non-locale) sort
+]
+\GlsXtrLoadResources[
+ src={syms},% entries in syms.bib
+ type=symbols,% put these entries in the 'symbols' list
+ sort={use}% sort according to first use in the document
+]
+\GlsXtrLoadResources[
+ src={constants},% entries in constants.bib
+ type=numbers,% put these entries in the 'numbers' list
+ sort-field={user1},% sort according to this field
+ sort={double}% double-precision sort
+]
+\end{verbatim}
+The last resource set assumes that the entries defined in the
+file \file{constants.bib} have a number stored in the \code{user1}
+field. For example:
+\begin{verbatim}
+@number{pi,
+ name={\ensuremath{\pi}},
+ description={pi},
+ user1={3.141592654}
+}
+\end{verbatim}
+
+ \item Put
+\begin{definition}
+\cs{printunsrtglossary}[type=\marg{type},\meta{options}]
+\end{definition}
+ where you want your list of entries (glossary) to appear. (The
+ \code{sort} key isn't available in \meta{options}. It needs to be
+ used in \cs{GlsXtrLoadResources} instead.)
+ Alternatively, use
+\begin{definition}
+\cs{printunsrtglossaries}
+\end{definition}
+
+ \item Run \LaTeX\ on your document. The \pkgopt{record} option
+ adds information to the \file{.aux} file that provides
+ \app{bib2gls} with all required details for each resource set.
+ For example, if the file is called \file{myDoc.tex}:
+\begin{verbatim}
+pdflatex myDoc
+\end{verbatim}
+
+ \item Run \app{bib2gls}
+\begin{verbatim}
+bib2gls myDoc
+\end{verbatim}
+or (if you need letter groups)
+\begin{verbatim}
+bib2gls --group myDoc
+\end{verbatim}
+
+ \item Run \LaTeX\ again.
+ \end{enumerate}
+Here's a complete document (\file{myDoc.tex}):
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record]{glossaries-extra}
+
+\GlsXtrLoadResources % input file created by bib2gls
+ [% instructions to bib2gls:
+ src={entries}, % terms defined in entries.bib
+ sort={en-GB}% sort according to this locale
+ ]
+
+\newglossaryentry{sample}{name={sample},
+ description={an example}}
+
+\begin{document}
+A \gls{sample}.
+
+\printunsrtglossaries % iterate over all defined entries
+\end{document}
+\end{verbatim}
+The accompanying \file{entries.bib} file:
+\begin{verbatim}
+@entry{sample,
+ name = {sample},
+ description = {an example}
+}
+\end{verbatim}
+Document build:
+\begin{verbatim}
+pdflatex myDoc
+bib2gls myDoc
+pdflatex myDoc
+\end{verbatim}
+
+\end{description}
+
+If you are having difficulty integrating \app{makeglossaries}
+into your document build process, you may want to consider using
+\app{arara}, which is a Java application that searches the
+document for special comment lines that tell \app{arara} which
+applications to run. For example, the file \file{myDoc.tex} might
+start with:
+\begin{verbatim}
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+ \documentclass{article}
+ \usepackage{glossaries}
+ \makeglossaries
+\end{verbatim}
+then to build the document you just need the single system call:
+\begin{verbatim}
+ arara myDoc
+\end{verbatim}
+(The currently pending version 4.0 of \app{arara} has
+directives for \app{makeglossaries-lite} and \app{bib2gls}.
+These aren't available in earlier versions, but you could try
+copying and adapting the \file{makeglossaries.yaml} file and
+replace \app{makeglossaries} as appropriate.)
+
+When sorting the entries, the string comparisons are made according
+to each entry's \code{sort} key. If this is omitted, the
+\code{name} key is used. For example, recall the earlier
+definition:
+\begin{verbatim}
+ \newglossaryentry{elite}
+ {
+ name={{\'e}lite},
+ description={select group or class}
+ }
+\end{verbatim}
+No \code{sort} key was used, so it's set to the same as the
+\code{name} key: \verb|{\'e}lite|. How this is interpreted depends
+on which option you have used:
+\begin{description}
+\item[\opt1:] By default, the accent command will be stripped so the
+sort value will be \code{elite}. This will put the entry in the
+\qt{E} letter group. However if you use the
+\pkgopt[true]{sanitizesort} package option, the sort value will be
+interpreted as the sequence of characters: \verb|{| \verb|\| \code{'} \code{e}
+\verb|}| \code{l} \code{i} \code{t} and \code{e}. This will place
+this entry in the \qt{symbols} group since it starts with a symbol.
+
+\item[\opt2:] The sort key will be interpreted the sequence of characters:
+\verb|{| \verb|\| \verb|'| \code{e} \verb|}| \code{l} \code{i} \code{t}
+and \code{e}. The first character is an opening curly brace
+\verb|{| so \app{makeindex} will put this entry in the
+\qt{symbols} group.
+
+\item[\opt3:]
+\app{xindy} disregards \LaTeX\ commands so it sorts on
+\code{elite}, which puts this entry in the \qt{E} group.
+If stripping all commands leads to an empty string (such as
+\verb|\ensuremath{\emptyset}|) then \app{xindy} will fail, so in
+these situations you need to provide an appropriate \code{sort}
+value that \app{xindy} will accept.
+\begin{important}
+\app{xindy} merges entries with duplicate sort values.
+\app{xindy} forbids empty sort values.
+A sort value may degrade into an empty or duplicate value once
+\app{xindy} has stripped all commands and braces.
+\end{important}
+
+\item[\opt4:]
+\app{bib2gls} has a primitive \LaTeX\ parser that recognises a
+limited set of commands, which includes the standard accent commands
+and some maths commands, so it can convert \verb|{\'e}lite| to
+\code{\'elite}. It disregards unknown commands. This may lead to
+an empty sort value, but \app{bib2gls} doesn't mind that.
+
+Note that even if the name is given as \verb|{\'e}lite|, the letter
+group heading (if the \verb|--group| switch is used) may end up with
+the character \'E depending on the locale used by the sort
+comparator. In this case you will need to ensure the document can
+support this character either with \sty{inputenc} or by switching to
+a \LaTeX\ engine with native UTF-8 support.
+
+\end{description}
+
+
+If the \sty{inputenc} package is used:
+\begin{verbatim}
+ \usepackage[utf8]{inputenc}
+\end{verbatim}
+and the entry is defined as:
+\begin{alltt}
+ \verb|\newglossaryentry{elite}|
+ \verb|{|
+ name=\verb|{{|\'e\verb|}lite},|
+ description=\verb|{select group or class}|
+ \verb|}|
+\end{alltt}
+then:
+\begin{description}
+\item[\opt1:] By default the sort value will be interpreted as
+\code{elite} so the entry will be put in the \qt{E} letter group.
+If you use the \pkgopt[true]{sanitizesort} package option, the
+sort value will be interpreted as \code{\'elite} where \'e has
+been sanitized (so it's no longer an active character and is in fact
+seen as two octets 0xC3 0xA9) which will
+put this entry before the \qt{A} letter group. (The group is
+determined by the first octet 0xC3.)
+
+\item[\opt2:] \app{makeindex} sees \code{\'e} as two octets
+(0xC3 0xA9) rather than a single character so it tries to put
+\code{\'elite} in the 0xC3 (\qt{\~A}) letter group (which, in this
+case, comes after \qt{Z}).
+
+\item[\opt3:] \app{xindy} will correctly recognise the sort value
+\code{\'elite} and will place it in whatever letter group is
+appropriate for the given language setting. (In English, this would
+just be the \qt{E} letter group, but another language
+might put it in the \qt{\'E} letter group.)
+
+\item[\opt4:] The \sty{inputenc} package doesn't affect the
+encoding used with \file{.bib} entry definitions, since these are dependent
+on the encoding used to save the \file{.bib} file (although the
+labels must still be ASCII). You can help \app{bib2gls} (and
+JabRef) by putting an encoding comment at the start of the \file{.bib} file:
+\begin{alltt}
+\% Encoding: UTF-8
+\end{alltt}
+
+With the correct encoding set up, \app{bib2gls} will determine
+that the sort value is \code{\'elite} and will place it in
+whatever letter group is appropriate for the given sort rule.
+For example, \verb|sort=en-GB| (or just \verb|sort=en|) will put
+\code{\'elite} in the \qt{E} letter group, but another language
+might put it in the \qt{\'E} letter group.
+
+\end{description}
+
+Therefore if you have extended Latin or non-Latin characters, your
+best option is to use either \app{xindy} (\opt3) or
+\app{bib2gls} (\opt4) with the \sty{inputenc} or \sty{fontspec} package.
+If you use \app{makeindex} (\opt2) you need to specify the
+\code{sort} key like this:
+\begin{verbatim}
+\newglossaryentry{elite}
+{
+ name={{\'e}lite},
+ sort={elite},
+ description={select group or class}
+}
+\end{verbatim}
+or
+\begin{alltt}
+\cs{newglossaryentry}\{elite\}
+\{
+ name=\{\{\'e\}lite\},
+ sort=\{elite\},
+ description=\{select group or class\}
+\}
+\end{alltt}
+If you use \opt1, you may or may not need to use the \code{sort}
+key, but you will need to be careful about fragile commands in the
+\code{name} key if you don't set the \code{sort} key.
+
+If you use \opt3 and the \code{name} only contains a command or
+commands (such as \cs{P} or \verb|\ensuremath{\pi}|) you must add the
+\code{sort} key. This is also advisable for the other options
+(except \opt4), but is essential for \opt3. For example:
+\begin{verbatim}
+ \newglossaryentry{P}{name={\P},sort={P},
+ description={paragraph symbol}}
+\end{verbatim}
+
+\section{Customising the Glossary}
+\label{sec:glosstyle}
+
+The default glossary style uses the \env{description} environment
+to display the entry list. Each entry name is set in the optional
+argument of \cs{item} which means that it will typically be
+displayed in bold. You can switch to medium weight by redefining
+\cs{glsnamefont}:
+\begin{verbatim}
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+\end{verbatim}
+Some classes and packages redefine the \env{description} environment
+in such as way that's incompatible with the \styfmt{glossaries}
+package. In which case you'll need to select a different glossary
+style (see below).
+
+By default, a~full stop is appended to the description (unless you
+use \sty{glossaries-extra}). To prevent
+this from happening use the \pkgopt{nopostdot} package option:
+\begin{verbatim}
+\usepackage[nopostdot]{glossaries}
+\end{verbatim}
+or to add it with \styfmt{glossaries-extra}:
+\begin{verbatim}
+\usepackage[postdot]{glossaries-extra}
+\end{verbatim}
+
+By default, a~location list is displayed for each entry (unless you
+use \cs{printunsrtglossary} without \app{bib2gls}). This refers
+to the document locations (for example, the page number) where the
+entry has been referenced. If you use \optsor23 described in
+\sectionref{sec:printglossaries} or \opt4 (with \app{bib2gls} and
+\sty{glossaries-extra}) then location ranges will be compressed.
+For example, if an entry was used on pages~1, 2 and~3, with
+\optsor23 or \opt4 the location list will appear as 1--3, but with \opt1 it
+will appear as 1, 2, 3. If you don't want the locations displayed
+you can hide them using the \pkgopt{nonumberlist} package option:
+\begin{verbatim}
+\usepackage[nonumberlist]{glossaries}
+\end{verbatim}
+or with \app{bib2gls} use \code{save-locations=false} in the
+optional argument of the appropriate \cs{GlsXtrLoadResources}
+(it's possible to have some resource sets with locations and some
+without).
+
+Entries are grouped according to the first letter of
+each entry's \code{sort} key. By default a~vertical gap is placed
+between letter groups. You can suppress this with the
+\pkgopt{nogroupskip} package option:
+\begin{verbatim}
+\usepackage[nogroupskip]{glossaries}
+\end{verbatim}
+
+If the default style doesn't suit your document, you can change the
+style using:
+\begin{definition}
+\cs{setglossarystyle}\marg{style name}
+\end{definition}
+\href{http://www.dickimaw-books.com/gallery/glossaries-styles/}{There are a~number of predefined styles.} Glossaries can vary from
+a~list of symbols with a~terse description to a~list of words or
+phrases with descriptions that span multiple paragraphs, so there's
+no \qt{one style fits all} solution. You need to choose a~style that
+suits your document. For example:
+\begin{verbatim}
+\setglossarystyle{index}
+\end{verbatim}
+You can also use the \pkgopt{style} package option for the preloaded
+styles. For example:
+\begin{verbatim}
+\usepackage[style=index]{glossaries}
+\end{verbatim}
+
+Examples:
+\begin{enumerate}
+ \item You have entries where the name is a~symbol and the
+ description is a~brief phrase or short sentence. Try one of the
+ \qt{mcol} styles defined in the \sty{glossary-mcols} package. For example:
+\begin{verbatim}
+\usepackage[nopostdot]{glossaries}
+\usepackage{glossary-mcols}
+\setglossarystyle{mcolindex}
+\end{verbatim}
+or
+\begin{verbatim}
+\usepackage[stylemods={mcols},style=mcolindex]{glossaries-extra}
+\end{verbatim}
+
+ \item You have entries where the name is a~word or phrase and the
+description spans multiple paragraphs. Try one of the \qt{altlist} styles. For
+example:
+\begin{verbatim}
+\usepackage[nopostdot]{glossaries}
+\setglossarystyle{altlist}
+\end{verbatim}
+or
+\begin{verbatim}
+\usepackage[stylemods,style=altlist]{glossaries-extra}
+\end{verbatim}
+
+ \item You have entries where the name is a~single word, the
+ description is brief, and an associated symbol has been set.
+ Use one of the styles that display the symbol (not all of them do).
+ For example, one of the tabular styles:
+\begin{verbatim}
+\usepackage[nopostdot,nonumberlist]{glossaries}
+\setglossarystyle{long4col}
+\end{verbatim}
+or one of the \qt{tree} styles:
+\begin{verbatim}
+\usepackage[nopostdot,nonumberlist]{glossaries}
+\setglossarystyle{tree}
+\end{verbatim}
+\end{enumerate}
+
+If your glossary consists of a~list of abbreviations and you also want to
+specify a~description as well as the long form, then you need to use
+an abbreviation style that will suit the glossary style. For example,
+use the \code{long-short-desc} acronym style:
+\begin{verbatim}
+\setacronymstyle{long-short-desc}
+\end{verbatim}
+Define the acronyms with a~description:
+\begin{verbatim}
+\newacronym
+ [description={statistical pattern recognition technique}]
+ {svm}{SVM}{support vector machine}
+\end{verbatim}
+Alternatively with \sty{glossaries-extra}:
+\begin{verbatim}
+\setabbreviationstyle{long-short-desc}
+
+\newabbreviation
+ [description={statistical pattern recognition technique}]
+ {svm}{SVM}{support vector machine}
+\end{verbatim}
+
+Choose a~glossary style that suits wide entry names. For example:
+\begin{verbatim}
+\setglossarystyle{altlist}
+\end{verbatim}
+
+\section{Multiple Glossaries}
+\label{sec:multigloss}
+
+The \sty{glossaries} package predefines a~default \code{main}
+glossary. When you define an entry (using one of the commands
+described in \sectionref{sec:defterm}), that entry is automatically
+assigned to the default glossary, unless you indicate otherwise
+using the \code{type} key. However you first need to
+make sure the desired glossary has been defined. This is done using:
+\begin{definition}
+\cs{newglossary}\oarg{glg}\marg{label}\marg{gls}\marg{glo}\marg{title}
+\end{definition}
+The \meta{label} is a~label that uniquely identifies this new
+glossary. As with other types of identifying labels, be careful not
+to use active characters in \meta{label}. The final argument
+\meta{title} is the section or chapter heading used by
+\cs{printglossary} or \cs{printnoidxglossary}. The other arguments
+indicate the file extensions used by
+\app{makeindex}\slash\app{xindy} (described in
+\sectionref{sec:printglossaries}). If you use \opt1 described
+above (or \app{bib2gls} and \cs{printunsrtglossaries}),
+then the \meta{glg}, \meta{gls} and \meta{glo} arguments are
+ignored, in which case you may prefer to use the starred version
+where you don't specify the extensions:
+\begin{definition}
+\cs{newglossary*}\marg{label}\marg{title}
+\end{definition}
+
+In the case of \optsor23, all glossary definitions must come before
+\cs{makeglossaries}. (Entries definitions should come after
+\cs{makeglossaries}.) In the case of \opt4, all glossary definitions
+must come before any \cs{GlsXtrLoadResources} that requires them.
+
+Since it's quite common for documents to have both a~list of terms
+and a~list of abbreviations, the \sty{glossaries} package provides the
+package option \pkgopt{acronym} (or \pkgopt{acronyms}), which
+is a~convenient shortcut for
+\begin{verbatim}
+\newglossary[alg]{acronym}{acr}{acn}{\acronymname}
+\end{verbatim}
+The option also changes the behaviour of \cs{newacronym} so that acronyms
+are automatically put in the list of acronyms instead of the main
+glossary. The \sty{glossaries-extra} package also provides this
+option for abbreviations defined using \cs{newacronym} but
+additionally has the package option \pkgopt{abbreviations} to create
+a list of abbreviations for \cs{newabbreviation}.
+
+There are some other package options for creating commonly used
+lists: \pkgopt{symbols} (lists of symbols), \pkgopt{numbers} (lists
+of numbers), \pkgopt{index} (index of terms without descriptions defined with
+\cs{newterm}\oarg{options}\marg{label}).
+
+For example, suppose you want a~main glossary for terms, a~list of
+acronyms and a~list of notation:
+\begin{verbatim}
+ \usepackage[acronyms]{glossaries}
+ \newglossary[nlg]{notation}{not}{ntn}{Notation}
+\end{verbatim}
+After \cs{makeglossaries} (or \cs{makenoidxglossaries}) you can
+define the entries in the preamble. For example:
+\begin{verbatim}
+ \newglossaryentry{gls:set}
+ {% This entry goes in the `main' glossary
+ name=set,
+ description={A collection of distinct objects}
+ }
+
+ % This entry goes in the `acronym' glossary:
+ \newacronym{svm}{svm}{support vector machine}
+
+ \newglossaryentry{not:set}
+ {% This entry goes in the `notation' glossary:
+ type=notation,
+ name={\ensuremath{\mathcal{S}}},
+ description={A set},
+ sort={S}}
+\end{verbatim}
+or if you don't like using \cs{ensuremath}:
+\begin{verbatim}
+ \newglossaryentry{not:set}
+ {% This entry goes in the `notation' glossary:
+ type=notation,
+ name={$\mathcal{S}$},
+ text={\mathcal{S}},
+ description={A set},
+ sort={S}}
+\end{verbatim}
+
+Each glossary is displayed using:
+\begin{definition}
+\cs{printnoidxglossary}[type=\meta{type}]
+\end{definition}
+(\opt1) or
+\begin{definition}
+\cs{printglossary}[type=\meta{type}]
+\end{definition}
+(\optsand23). Where \meta{type} is the glossary label. If the
+type is omitted the default \code{main} glossary is assumed.
+
+If you're using \app{bib2gls} then each glossary is displayed
+using:
+\begin{definition}
+\cs{printunsrtglossary}[type=\meta{type}]
+\end{definition}
+With this method you don't use \cs{makeglossaries} or
+\cs{makenoidxglossaries}. Instead you can assign the entry type
+with the resource command. For example:
+\begin{verbatim}
+ \usepackage[record,abbreviations,symbols]{glossaries-extra}
+
+ \GlsXtrLoadResources[
+ src={terms}, % entries defined in terms.bib
+ type={main}% put in main glossary
+ ]
+ \GlsXtrLoadResources[
+ src={abbrvs}, % entries defined in abbrvs.bib
+ type={abbreviations}% put in abbreviations glossary
+ ]
+ \GlsXtrLoadResources[
+ src={syms}, % entries defined in syms.bib
+ type={symbols}% put in symbols glossary
+ ]
+\end{verbatim}
+Later in the document:
+\begin{verbatim}
+ \printunsrtglossary % main
+ \printunsrtglossary[type=abbreviations]
+ \printunsrtglossary[type=symbols]
+\end{verbatim}
+
+There's a~convenient shortcut that will display all the defined
+glossaries depending on the indexing method:
+\begin{definition}
+\cs{printnoidxglossaries}
+\end{definition}
+(\opt1) or
+\begin{definition}
+\cs{printglossaries}
+\end{definition}
+(\optsand23) or (\sty{glossaries-extra} only)
+\begin{definition}
+\cs{printunsrtglossaries}
+\end{definition}
+
+If you use \opt1, you don't need to do anything else. If you use
+\optsor23 with the \app{makeglossaries} Perl script or the
+\app{makeglossaries-lite} Lua script, you
+similarly don't need to do anything else. If you use \optsor23
+without the \app{makeglossaries} Perl script then you need to
+make sure you run \app{makeindex}\slash\app{xindy} \emph{for
+each defined glossary}. The \meta{gls} and \meta{glo} arguments of
+\cs{newglossary} specify the file extensions to use instead of
+\file{.gls} and \file{.glo}. The optional argument \meta{glg} is
+the file extension for the transcript file. This should be different
+for each glossary in case you need to check for
+\app{makeindex}\slash\app{xindy} errors or warnings if things
+go wrong.
+
+For example, suppose you have three glossaries in your document
+(\code{main}, \code{acronym} and \code{notation}),
+specified using:
+\begin{verbatim}
+\usepackage[acronyms]{glossaries}
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+\end{verbatim}
+Then (assuming your \LaTeX\ document is in a~file called
+\file{myDoc.tex}):
+
+\begin{description}
+\item\opt2
+Either use one \app{makeglossaries} or
+\app{makeglossaries-lite} call:
+\begin{verbatim}
+makeglossaries myDoc
+\end{verbatim}
+or
+\begin{verbatim}
+makeglossaries-lite myDoc
+\end{verbatim}
+Or you need to run \app{makeindex} three times:
+\begin{verbatim}
+makeindex -t myDoc.glg -s myDoc.ist -o myDoc.gls myDoc.glo
+makeindex -t myDoc.alg -s myDoc.ist -o myDoc.acr myDoc.acn
+makeindex -t myDoc.nlg -s myDoc.ist -o myDoc.not myDoc.ntn
+\end{verbatim}
+
+\item\opt3
+Either use one \app{makeglossaries} call:
+\begin{verbatim}
+makeglossaries myDoc
+\end{verbatim}
+Or you need to run \app{xindy} three times (be careful not to insert
+line breaks where the line has wrapped.)
+\begin{verbatim}
+xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.glg
+-o myDoc.gls myDoc.glo
+xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.alg
+-o myDoc.acr myDoc.acn
+xindy -L english -C utf8 -I xindy -M myDoc -t myDoc.nlg
+-o myDoc.not myDoc.ntn
+\end{verbatim}
+
+\item\opt4
+With \app{bib2gls} only one call is required:
+\begin{verbatim}
+pdflatex myDoc
+bib2gls --group myDoc
+pdflatex myDoc
+\end{verbatim}
+(Omit \verb|--group| if you don't need letter groups.)
+\end{description}
+
+
+\section[glossaries and hyperref]{\styfmt{glossaries} and \styfmt{hyperref}}
+\label{sec:hyperref}
+
+Take care if you use the \sty{glossaries} package with
+\sty{hyperref}. Contrary to the usual advice that \sty{hyperref}
+should be loaded last, \sty{glossaries} (and \sty{glossaries-extra})
+must be loaded \emph{after} \sty{hyperref}:
+\begin{verbatim}
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+\end{verbatim}
+If you use \sty{hyperref} make sure you use PDF\LaTeX\ rather than
+the \LaTeX\ to DVI engine. The DVI format can't break hyperlinks across
+a~line so long glossary entries (such as the full form of acronyms)
+won't line wrap with the DVI engine. Also, hyperlinks in sub- or
+superscripts aren't correctly sized with the DVI format.
+
+By default, if the \sty{hyperref} package has been loaded, commands
+like \cs{gls} will form a~hyperlink to the relevant entry in the
+glossary. If you to disable this for \emph{all} your
+glossaries, then use
+\begin{definition}
+\cs{glsdisablehyper}
+\end{definition}
+If you want hyperlinks suppressed for entries in specific
+glossaries, then use the \pkgopt{nohypertypes} package option. For
+example, if you don't want hyperlinks for entries in the \code{acronym} and
+\code{notation} glossaries but you do want them for entries in the
+\code{main} glossary, then do:
+\begin{verbatim}
+\usepackage[colorlinks]{hyperref}
+\usepackage[acronym,nohypertypes={acronym,notation}]{glossaries}
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+\end{verbatim}
+
+If you want the hyperlinks suppressed the first time an entry is
+used, but you want hyperlinks for subsequence references then use
+the \pkgopt[false]{hyperfirst} package option:
+\begin{verbatim}
+\usepackage[colorlinks]{hyperref}
+\usepackage[hyperfirst=false]{glossaries}
+\end{verbatim}
+
+Take care not to use non-expandable commands in PDF bookmarks. This
+isn't specific to the \sty{glossaries} package but is a~limitation
+of PDF bookmarks. Non-expandable commands include commands like
+\cs{gls}, \cs{glspl}, \cs{Gls} and \cs{Glspl}. The \sty{hyperref}
+package provides a~way of specifying alternative text for the PDF
+bookmarks via \cs{texorpdfstring}. For example:
+\begin{verbatim}
+\section{The \texorpdfstring{\gls{fishage}}{Fish Age}}
+\end{verbatim}
+However, it's not a~good idea to use commands like \cs{gls} in
+a~section heading as you'll end up with the table of contents in
+your location list. Instead you can use
+\begin{definition}
+\cs{glsentrytext}\marg{label}
+\end{definition}
+This is expandable provided that the \code{text} key doesn't
+contain non-expandable code. For example, the following works:
+\begin{verbatim}
+\section{The \glsentrytext{fishage}}
+\end{verbatim}
+and it doesn't put the table of contents in the location list.
+
+If you use \sty{glossaries-extra} then use the commands that are
+provided specifically for use in section headers. For example:
+\begin{verbatim}
+\section{The \glsfmttext{fishage}}
+\end{verbatim}
+
+\section{Cross-References}
+\label{sec:xr}
+
+You can add a~reference to another entry in a~location list using
+the \code{see=}\marg{label list} key when you define an entry.
+The referenced entry (or entries) must also be defined.
+
+For example:
+\begin{verbatim}
+\longnewglossaryentry{devonian}{name={Devonian}}%
+{%
+ The geologic period spanning from the end of the
+ Silurian Period to the beginning of the Carboniferous Period.
+
+ This age was known for its remarkable variety of
+ fish species.
+}
+
+\newglossaryentry{fishage}
+{
+ name={Fish Age},
+ description={Common name for the Devonian period},
+ see={devonian}
+}
+\end{verbatim}
+The cross-reference will appear as \qt{\emph{see} Devonian}. You can
+change the \qt{see} tag using the format
+\code{see=}\oarg{tag}\meta{label}. For example:
+\begin{verbatim}
+\newglossaryentry{latinalph}
+{
+ name={Latin alphabet},
+ description={alphabet consisting of the letters
+ a, \ldots, z, A, \ldots, Z},
+ see=[see also]{exlatinalph}
+}
+\newglossaryentry{exlatinalph}
+{
+ name={extended Latin alphabet},
+ description={The Latin alphabet extended to include
+ other letters such as ligatures or diacritics.}
+}
+\end{verbatim}
+If you use the \code{see} key in the optional argument of
+\cs{newacronym}, make sure you enclose the value in braces. For
+example:
+\begin{verbatim}
+\newacronym{ksvm}{ksvm}{kernel support vector machine}
+\newacronym
+ [see={[see also]{ksvm}}]
+ {svm}{svm}{support vector machine}
+\end{verbatim}
+The \sty{glossaries-extra} package provides a \code{seealso}
+key. This doesn't allow a tag but behaves much like
+\code{see=\{[\cs{seealsoname}]\marg{label}\}}. For example:
+\begin{verbatim}
+\newabbreviation{ksvm}{ksvm}{kernel support vector machine}
+\newabbreviation
+ [seealso={ksvm}]
+ {svm}{svm}{support vector machine}
+\end{verbatim}
+
+Since the cross-reference appears in the location list, if you
+suppress the location list using the \pkgopt{nonumberlist} package
+option, then the cross-reference will also be suppressed. With
+\app{bib2gls}, don't use the \pkgopt{nonumberlist} package
+option. Instead use the \code{save-locations=false} in the resource
+options. For example:
+\begin{verbatim}
+\usepackage[record,abbreviations,symbols]{glossaries-extra}
+
+\GlsXtrLoadResources[
+ src={terms}, % entries defined in terms.bib
+ type={main}% put in main glossary
+]
+\GlsXtrLoadResources[
+ src={abbrvs}, % entries defined in abbrvs.bib
+ type={abbreviations},% put in abbreviations glossary
+ save-locations=false% no number list for these entries
+]
+\GlsXtrLoadResources[
+ src={syms}, % entries defined in syms.bib
+ type={symbols}% put in symbols glossary
+]
+\end{verbatim}
+
+\section{Further Information}
+\label{sec:moreinfo}
+
+\begin{itemize}
+\item \href{http://mirrors.ctan.org/support/bib2gls/bib2gls-begin.pdf}{\styfmt{glossaries-extra}
+and \appfmt{bib2gls}: an introductory guide}.
+\item The main \sty{glossaries} \docref{user manual}{glossaries-user}.
+\item The \href{http://www.dickimaw-books.com/faqs/glossariesfaq.html}{glossaries FAQ}.
+\item \href{https://www.dickimaw-books.com/latex/buildglossaries/}{Incorporating
+makeglossaries or makeglossaries-lite or bib2gls into the document
+build}.
+\item The \href{https://ctan.org/pkg/glossaries-extra}{\styfmt{glossaries-extra}} package.
+\item The \href{https://ctan.org/pkg/bib2gls}{\appfmt{bib2gls}}
+application.
+\end{itemize}
+\end{document}
diff --git a/macros/latex/contrib/glossaries/glossary2glossaries.html b/macros/latex/contrib/glossaries/glossary2glossaries.html
new file mode 100644
index 0000000000..56312bb11a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossary2glossaries.html
@@ -0,0 +1,1882 @@
+<?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="glossary2glossaries.tex" />
+
+<style type="text/css">
+<!--
+
+/* start css.sty */
+.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;}
+.cmr-9{font-size:90%;}
+.cmbx-9{font-size:90%; font-weight: bold;}
+.cmbx-9{ font-weight: bold;}
+.cmss-9{font-size:90%; font-family: sans-serif;}
+.cmss-9{ font-family: sans-serif;}
+.cmss-9{ 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;}
+.cmti-10{ font-style: italic;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.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;}
+.cmbx-10{ font-weight: bold;}
+.cmbx-10{ 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;}
+.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-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%;}
+.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; }
+.abstract p {margin-left:5%; margin-right:5%;}
+div.abstract {width:100%;}
+div.important { border : solid red; }
+div.verbatim { font-family: monospace; white-space: nowrap; text-align:left; clear:both; padding-top: 2ex; padding-bottom: 2ex;}
+/* end css.sty */
+
+
+-->
+</style>
+</head><body
+>
+<!--l. 52--><p class="noindent" ><a
+ id="top"></a>
+</p><!--l. 52--><p class="indent" >
+
+
+
+</p><!--l. 52--><p class="indent" >
+
+
+
+</p>
+<div class="center"
+>
+<!--l. 52--><p class="noindent" >
+</p><!--l. 52--><p class="noindent" ><span
+class="cmr-17">Upgrading from the glossary package 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></table>
+</div>
+<!--l. 52--><p class="noindent" ><span
+class="cmr-12">2019-01-06</span></p></div>
+ <div
+class="abstract"
+>
+<div class="center"
+>
+<!--l. 54--><p class="noindent" >
+</p><!--l. 54--><p class="noindent" ><span
+class="cmbx-9">Abstract</span></p></div>
+ <!--l. 55--><p class="indent" > <span
+class="cmr-9">The purpose of this document is to provide advice if you want to</span>
+ <span
+class="cmr-9">convert a </span><span class="LATEX"><span
+class="cmr-9">L</span><span class="A"><span
+class="cmr-9">A</span></span><span class="TEX"><span
+class="cmr-9">T</span><span
+class="E"><span
+class="cmr-9">E</span></span><span
+class="cmr-9">X</span></span></span><span
+class="cmr-9">&#x00A0;document from using the obsolete </span><span
+class="cmss-9">glossary </span><span
+class="cmr-9">package to</span>
+ <span
+class="cmr-9">the replacement </span><span
+class="cmss-9">glossaries </span><span
+class="cmr-9">package.</span>
+</p>
+</div>
+ <h3 class="likesectionHead"><a
+ id="x1-1000"></a>Contents</h3>
+ <div class="tableofcontents">
+ <span class="sectionToc" >1 <a
+href="#whyglossaries" id="QQ2-1-2">Why the Need for a New Package?</a></span>
+<br /> <span class="sectionToc" >2 <a
+href="#x1-30002" id="QQ2-1-3">Package Options</a></span>
+<br /> <span class="sectionToc" >3 <a
+href="#x1-40003" id="QQ2-1-5">Defining new glossary types</a></span>
+<br /> <span class="sectionToc" >4 <a
+href="#x1-50004" id="QQ2-1-6"><span
+class="cmtt-10">\make</span><span
+class="cmti-10">glossary name</span></a></span>
+<br /> <span class="sectionToc" >5 <a
+href="#x1-60005" id="QQ2-1-7">Storing glossary information</a></span>
+<br /> <span class="sectionToc" >6 <a
+href="#x1-70006" id="QQ2-1-8">Adding an entry to the glossary</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >6.1 <a
+href="#sec:useglosentry" id="QQ2-1-9"><span
+class="cmtt-10">\useglosentry</span></a></span>
+<br /> &#x00A0;<span class="subsectionToc" >6.2 <a
+href="#x1-90006.2" id="QQ2-1-10"><span
+class="cmtt-10">\useGlosentry</span></a></span>
+
+
+
+<br /> &#x00A0;<span class="subsectionToc" >6.3 <a
+href="#x1-100006.3" id="QQ2-1-11"><span
+class="cmtt-10">\gls</span></a></span>
+<br /> &#x00A0;<span class="subsectionToc" >6.4 <a
+href="#sec:csglossary" id="QQ2-1-12"><span
+class="cmtt-10">\glossary</span></a></span>
+<br /> <span class="sectionToc" >7 <a
+href="#x1-120007" id="QQ2-1-13">Acronyms</a></span>
+<br /> &#x00A0;<span class="subsectionToc" >7.1 <a
+href="#x1-130007.1" id="QQ2-1-14"><span
+class="cmtt-10">\acrln </span>and <span
+class="cmtt-10">\acrsh</span></a></span>
+<br /> &#x00A0;<span class="subsectionToc" >7.2 <a
+href="#x1-140007.2" id="QQ2-1-15"><span
+class="cmtt-10">\ifacronymfirstuse</span></a></span>
+<br /> &#x00A0;<span class="subsectionToc" >7.3 <a
+href="#x1-150007.3" id="QQ2-1-16"><span
+class="cmtt-10">\resetacronym </span>and <span
+class="cmtt-10">\unsetacronym</span></a></span>
+<br /> <span class="sectionToc" >8 <a
+href="#x1-160008" id="QQ2-1-17">Displaying the glossary</a></span>
+<br /> <span class="sectionToc" >9 <a
+href="#x1-170009" id="QQ2-1-18">Processing Your Document</a></span>
+<br /> <span class="sectionToc" >10 <a
+href="#x1-1800010" id="QQ2-1-19">Troubleshooting</a></span>
+ </div>
+<!--l. 62--><p class="noindent" >
+</p>
+<!--l. 62--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1 </span> <a
+ id="whyglossaries"></a>Why the Need for a New Package?</h3>
+<!--l. 65--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package started out as an example in a tutorial, but I decided that I
+may as well package it up and upload it to CTAN. Unfortunately it was fairly rigid
+and unable to adapt well to the wide variation in glossary styles. Users began making
+requests for enhancements, but with each enhancement the code became more
+complicated and bugs crept in. Each fix in one place seemed to cause another
+problem elsewhere. In the end, it was taking up too much of my time to maintain, so
+I decided to replace it with a much better designed package. With the new <span
+class="cmss-10">glossaries</span>
+package:
+</p>
+ <ul class="itemize1">
+ <li class="itemize">you can define irregular plurals;
+ </li>
+ <li class="itemize">glossary terms can have an associated symbol in addition to the name and
+ description;
+ </li>
+ <li class="itemize">new glossary styles are much easier to design;
+ </li>
+ <li class="itemize">you can add dictionaries to supply translations for the fixed names used
+ in headings and by some of the glossary styles;
+ </li>
+ <li class="itemize">you can choose<span class="footnote-mark"><a
+href="#fn1x0" id="fn1x0-bk"><sup class="textsuperscript">1</sup></a></span><a
+ id="x1-2001f1"></a>
+ between using <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-2003"></a> or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-2004"></a> to sort the glossary. Using <span
+class="cmtt-10">xindy</span><a
+ id="dx1-2005"></a> means
+ that:
+
+
+
+ <ul class="itemize2">
+ <li class="itemize">there is much better support for terms containing accented or
+ non-Latin characters;
+ </li>
+ <li class="itemize">there is support for non-standard location numbers;</li></ul>
+ </li>
+ <li class="itemize">you don&#8217;t need to remember to escape <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-2006"></a>&#8217;s special characters as this is
+ done internally;
+ </li>
+ <li class="itemize">hierarchical entries and homographs are
+ supported;<span class="footnote-mark"><a
+href="#fn2x0" id="fn2x0-bk"><sup class="textsuperscript">2</sup></a></span><a
+ id="x1-2007f2"></a>
+ </li>
+ <li class="itemize">there is better support for cross-referencing glossary entries;
+ </li>
+ <li class="itemize">acronyms are just another glossary term which helps to maintain consistency;
+ </li>
+ <li class="itemize">different acronym styles are supported.
+ </li></ul>
+<!--l. 113--><p class="noindent" >
+</p>
+<!--l. 113--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2 </span> <a
+ id="x1-30002"></a>Package Options</h3>
+<!--l. 115--><p class="noindent" >When converting a document that currently uses the obsolete <span
+class="cmss-10">glossary </span>package to the
+replacement <span
+class="cmss-10">glossaries </span>package, it should be fairly obvious that the first thing you
+need to do is replace <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\usepackage{glossary}</span></span></span> with <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\usepackage{glossaries}</span></span></span>,
+however some of the package options are different, so you may need to change those
+as well. Table&#x00A0;<a
+href="#tab:pkgopt">1<!--tex4ht:ref: tab:pkgopt --></a> shows the mappings from the <span
+class="cmss-10">glossary </span>to the <span
+class="cmss-10">glossaries </span>package
+options.
+</p>
+ <div class="table">
+
+
+
+<!--l. 124--><p class="indent" > <a
+ id="tab:pkgopt"></a></p><hr class="float" /><div class="float"
+>
+
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;1: </span><span
+class="content">Mappings from <span
+class="cmss-10">glossary </span>to <span
+class="cmss-10">glossaries </span>package options</span></div><!--tex4ht:label?: x1-30011 -->
+<div class="center"
+>
+<!--l. 128--><p class="noindent" >
+</p>
+<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:nowrap; text-align:left;" id="TBL-2-1-1"
+class="td11"><span
+class="cmssbx-10">glossary </span><span
+class="cmbx-10">option </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-2-1-2"
+class="td11"><span
+class="cmssbx-10">glossaries </span><span
+class="cmbx-10">option </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-1"
+class="td11">style=list </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-2-2"
+class="td11">style=list </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-1"
+class="td11">style=altlist </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-3-2"
+class="td11">style=altlist </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-1"
+class="td11">style=long,header=none,border=none,cols=2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-4-2"
+class="td11">style=long </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"
+class="td11">style=long,header=plain,border=none,cols=2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-2"
+class="td11">style=longheader </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-1"
+class="td11">style=long,header=none,border=plain,cols=2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-6-2"
+class="td11">style=longborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"
+class="td11">style=long,header=plain,border=plain,cols=2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-2"
+class="td11">style=longheaderborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-1"
+class="td11">style=long,header=none,border=none,cols=3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-8-2"
+class="td11">style=long3col </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-1"
+class="td11">style=long,header=plain,border=none,cols=3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-9-2"
+class="td11">style=long3colheader </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-1"
+class="td11">style=long,header=none,border=plain,cols=3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-10-2"
+class="td11">style=long3colborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-1"
+class="td11">style=long,header=plain,border=plain,cols=3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-11-2"
+class="td11">style=long3colheaderborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-1"
+class="td11">style=super,header=none,border=none,cols=2 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-12-2"
+class="td11">style=super </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-13-1"
+class="td11">style=super,header=plain,border=none,cols=2</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-13-2"
+class="td11">style=superheader </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-14-1"
+class="td11">style=super,header=none,border=plain,cols=2</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-14-2"
+class="td11">style=superborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-15-1"
+class="td11">style=super,header=plain,border=plain,cols=2</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-15-2"
+class="td11">style=superheaderborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-16-1"
+class="td11">style=super,header=none,border=none,cols=3 </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-16-2"
+class="td11">style=super3col </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-17-1"
+class="td11">style=super,header=plain,border=none,cols=3</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-17-2"
+class="td11">style=super3colheader </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-18-1"
+class="td11">style=super,header=none,border=plain,cols=3</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-18-2"
+class="td11">style=super3colborder </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-19-1"
+class="td11">style=super,header=plain,border=plain,cols=3</td><td style="white-space:nowrap; text-align:left;" id="TBL-2-19-2"
+class="td11">style=super3colheaderborder</td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-20-1"
+class="td11">number=none </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-20-2"
+class="td11">nonumberlist </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-21-1"
+class="td11">number=&#x27E8;<span
+class="cmti-10">counter name</span>&#x27E9; </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-21-2"
+class="td11">counter=&#x27E8;<span
+class="cmti-10">counter name</span>&#x27E9; </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-22-1"
+class="td11">toc </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-22-2"
+class="td11">toc </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-23-1"
+class="td11">hypertoc </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-23-2"
+class="td11">toc </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-24-1"
+class="td11">hyper </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-24-2"
+class="td11"><span
+class="cmti-10">no corresponding option </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-25-1"
+class="td11">section=true </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-25-2"
+class="td11">section </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-26-1"
+class="td11">section=false </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-26-2"
+class="td11"><span
+class="cmti-10">no corresponding option </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-27-1"
+class="td11">acronym </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-27-2"
+class="td11">acronym </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-28-1"
+class="td11">global </td><td style="white-space:nowrap; text-align:left;" id="TBL-2-28-2"
+class="td11"><span
+class="cmti-10">no corresponding option </span></td></tr></table>
+</div></div>
+
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 162--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3 </span> <a
+ id="x1-40003"></a>Defining new glossary types</h3>
+<!--l. 164--><p class="noindent" >If you have created new glossary types, you will need to replace all instances
+of
+</p><!--l. 166--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\newglossarytype</span><a
+ id="dx1-4001"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">log-ext</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">out-ext</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">in-ext</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">old style</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">]</span><br
+class="newline" />
+ <br /><span
+class="cmtt-10">\newcommand</span><span class="verb"><span
+class="cmtt-10">{\</span></span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">name</span><span class="verb"><span
+class="cmtt-10">}</span></span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 171--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-4002"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">log-ext</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">out-ext</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">in-ext</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+in the preamble, and, if the new glossary requires a different style to the main
+(default) glossary, you will also need to put
+</p><!--l. 176--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\setglossarystyle</span><a
+ id="dx1-4003"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">new style</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+immediately before the glossary is displayed, or you can specify the style when you
+display the glossary using <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-4004"></a> (see below).
+</p><!--l. 183--><p class="indent" > The &#x27E8;<span
+class="cmti-10">old style list</span>&#x27E9; optional argument can be converted to &#x27E8;<span
+class="cmti-10">new style</span>&#x27E9; using the same
+mapping given in Table&#x00A0;<a
+href="#tab:pkgopt">1<!--tex4ht:ref: tab:pkgopt --></a>.
+</p><!--l. 187--><p class="indent" > For example, if your document contains the following:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-1">
+\newglossarytype[nlg]{notation}{not}{ntn}[style=long,header]
+&#x00A0;<br />\newcommand{\notationname}{Index&#x00A0;of&#x00A0;Notation}
+</div>
+<!--l. 191--><p class="nopar" > You will need to replace the above two lines with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-2">
+\newglossary[nlg]{notation}{not}{ntn}{Index&#x00A0;of&#x00A0;Notation}
+</div>
+<!--l. 195--><p class="nopar" > in the preamble and
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-3">
+\setglossarystyle{longheader}
+</div>
+<!--l. 199--><p class="nopar" > immediately prior to displaying this glossary. Alternatively, you can specify the
+style using the <span
+class="cmss-10">style</span><a
+ id="dx1-4005"></a> key in the optional argument of <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-4006"></a>. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-4">
+\printglossary[type=notation,style=longheader]
+</div>
+<!--l. 205--><p class="nopar" >
+</p><!--l. 207--><p class="indent" > Note that the glossary title is no longer specified using <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">glossary-type</span>&#x27E9;<span
+class="cmtt-10">name </span>(except
+for <span
+class="cmtt-10">\glossaryname</span><a
+ id="dx1-4007"></a> and <span
+class="cmtt-10">\acronymname</span><a
+ id="dx1-4008"></a>) but is instead specified in the &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; argument
+of <span
+class="cmtt-10">\newglossary</span><a
+ id="dx1-4009"></a>. The short title which is specified in the <span
+class="cmss-10">glossary </span>package by the
+command <span
+class="cmtt-10">\short</span>&#x27E8;<span
+class="cmti-10">glossary-name</span>&#x27E9;<span
+class="cmtt-10">name </span>is now specified using the <span
+class="cmss-10">toctitle</span><a
+ id="dx1-4010"></a> key in the
+optional argument to <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-4011"></a>.
+</p><!--l. 217--><p class="noindent" >
+</p>
+<!--l. 217--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">4 </span> <a
+ id="x1-50004"></a><span
+class="cmtt-10">\make</span>&#x27E8;<span
+class="cmti-10">glossary name</span>&#x27E9;</h3>
+<!--l. 219--><p class="noindent" >All instances of <span
+class="cmtt-10">\make</span>&#x27E8;<span
+class="cmti-10">glossary name</span>&#x27E9; (e.g.&#x00A0;<span
+class="cmtt-10">\makeglossary</span><a
+ id="dx1-5001"></a> and <span
+class="cmtt-10">\makeacronym</span><a
+ id="dx1-5002"></a>)
+should be replaced by the single command <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-5003"></a>. For example, if your
+document contained the following:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-5">
+\makeglossary
+&#x00A0;<br />\makeacronym
+</div>
+<!--l. 226--><p class="nopar" > then you should replace both lines with the single line:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-6">
+\makeglossaries
+</div>
+<!--l. 230--><p class="nopar" >
+</p><!--l. 232--><p class="noindent" >
+</p>
+<!--l. 232--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">5 </span> <a
+ id="x1-60005"></a>Storing glossary information</h3>
+<!--l. 234--><p class="noindent" >With the old <span
+class="cmss-10">glossary </span>package you could optionally store glossary information for later
+use, or you could simply use <span
+class="cmtt-10">\glossary</span><a
+ id="dx1-6001"></a> whenever you wanted to add information to
+the glossary. With the new <span
+class="cmss-10">glossaries </span>package, the latter option is no longer
+available.<span class="footnote-mark"><a
+href="#fn3x0" id="fn3x0-bk"><sup class="textsuperscript">3</sup></a></span><a
+ id="x1-6002f3"></a>
+If you have stored all the glossary information using <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-6004"></a>, then you will
+need to convert these commands into the equivalent <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-6005"></a>. If you have
+only used <span
+class="cmtt-10">\glossary</span><a
+ id="dx1-6006"></a>, then see <a
+href="#sec:csglossary"><span
+class="cmsy-10">&sect;</span>6.4 </a><a
+href="#sec:csglossary"><span
+class="cmtt-10">\glossary</span><!--tex4ht:ref: sec:csglossary --></a>.
+</p><!--l. 245--><p class="indent" > Substitute all instances of
+</p><!--l. 246--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-6007"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">gls-entry</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 250--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-6008"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">gls-entry</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+This should be fairly easy to do using the search and replace facility in your editor
+(but see notes below).
+</p><!--l. 256--><p class="indent" > If you have used the optional argument of <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-6009"></a> (i.e.&#x00A0;you have
+multiple glossaries) then you will need to substitute
+</p><!--l. 259--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-6010"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">gls-type</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">gls-entry</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 263--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-6011"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span class="verb"><span
+class="cmtt-10">{</span></span>&#x27E8;<span
+class="cmitt-10">gls-entry</span>&#x27E9;<span
+class="cmtt-10">,type=</span>&#x27E8;<span
+class="cmitt-10">gls-type</span>&#x27E9;<span class="verb"><span
+class="cmtt-10">}</span></span>
+ <br /></div><hr>
+
+
+
+ <br /></span>
+</p><!--l. 267--><p class="indent" > The glossary entry information &#x27E8;<span
+class="cmti-10">gls-entry</span>&#x27E9; may also need changing. If &#x27E8;<span
+class="cmti-10">gls-entry</span>&#x27E9;
+contains any of <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-6012"></a>&#8217;s special characters (i.e.&#x00A0;<span
+class="cmtt-10">@ ! </span><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>) then they should no
+longer be escaped with <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">"</span></span></span> since the <span
+class="cmss-10">glossaries </span>package deals with these characters
+internally. For example, if your document contains the following:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-7">
+\storeglosentry{card}{name={$"|\mathcal{S}"|$},
+&#x00A0;<br />description={The&#x00A0;cardinality&#x00A0;of&#x00A0;the&#x00A0;set&#x00A0;$\mathcal{S}$}}
+</div>
+<!--l. 276--><p class="nopar" > then you will need to replace it with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-8">
+\newglossaryentry{card}{name={$|\mathcal{S}|$},
+&#x00A0;<br />description={The&#x00A0;cardinality&#x00A0;of&#x00A0;the&#x00A0;set&#x00A0;$\mathcal{S}$}}
+</div>
+<!--l. 281--><p class="nopar" >
+</p><!--l. 283--><p class="indent" > The <span
+class="cmss-10">format</span><a
+ id="dx1-6013"></a> and <span
+class="cmss-10">number</span><a
+ id="dx1-6014"></a> keys available in <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-6015"></a> are not available with
+<span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-6016"></a>.
+</p><!--l. 287--><p class="noindent" >
+</p>
+<!--l. 287--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6 </span> <a
+ id="x1-70006"></a>Adding an entry to the glossary</h3>
+<!--l. 289--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package provided two basic means to add information to the glossary:
+firstly, the term was defined using <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-7001"></a> and the entries for that term
+were added using <span
+class="cmtt-10">\useglosentry</span><a
+ id="dx1-7002"></a>, <span
+class="cmtt-10">\useGlosentry</span><a
+ id="dx1-7003"></a> and <span
+class="cmtt-10">\gls</span><a
+ id="dx1-7004"></a>. Secondly, the term was
+added to the glossary using <span
+class="cmtt-10">\glossary</span><a
+ id="dx1-7005"></a>. This second approach is unavailable with the
+<span
+class="cmss-10">glossaries </span>package.
+</p><!--l. 298--><p class="noindent" >
+</p>
+<!--l. 298--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">6.1 </span> <a
+ id="sec:useglosentry"></a><span
+class="cmtt-10">\useglosentry</span></h4>
+<!--l. 301--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package allows you to add information to the glossary for a predefined
+term without producing any text in the document using
+</p><!--l. 304--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\useglosentry</span><a
+ id="dx1-8001"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">old options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+Any occurrences of this command will need to be replaced with
+</p><!--l. 308--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glsadd</span><a
+ id="dx1-8002"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">new options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+The <span
+class="cmss-10">format</span><a
+ id="dx1-8003"></a> key in &#x27E8;<span
+class="cmti-10">old options</span>&#x27E9; remains the same in &#x27E8;<span
+class="cmti-10">new options</span>&#x27E9;. However the
+<span
+class="cmss-10">number</span><a
+ id="dx1-8004"></a><span
+class="cmtt-10">=</span>&#x27E8;<span
+class="cmti-10">counter name</span>&#x27E9; key in &#x27E8;<span
+class="cmti-10">old options</span>&#x27E9; should be replaced with <span
+class="cmss-10">counter</span><a
+ id="dx1-8005"></a><span
+class="cmtt-10">=</span>&#x27E8;<span
+class="cmti-10">counter</span>
+<span
+class="cmti-10">name</span>&#x27E9; in &#x27E8;<span
+class="cmti-10">new options</span>&#x27E9;.
+
+
+
+</p><!--l. 319--><p class="noindent" >
+</p>
+<!--l. 319--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">6.2 </span> <a
+ id="x1-90006.2"></a><span
+class="cmtt-10">\useGlosentry</span></h4>
+<!--l. 321--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package allows you to add information to the glossary for a predefined
+term with the given text using
+</p><!--l. 323--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\useGlosentry</span><a
+ id="dx1-9001"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">old 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>
+ <br /></div><hr>
+ <br /></span>
+Any occurrences of this command will need to be replaced with
+</p><!--l. 327--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-9002"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">new 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>
+ <br /></div><hr>
+ <br /></span>
+The mapping from &#x27E8;<span
+class="cmti-10">old options</span>&#x27E9; to &#x27E8;<span
+class="cmti-10">new options</span>&#x27E9; is the same as that given <a
+href="#sec:useglosentry"><span
+class="cmsy-10">&sect;</span>6.1
+</a><a
+href="#sec:useglosentry"><span
+class="cmtt-10">\useglosentry</span><!--tex4ht:ref: sec:useglosentry --></a>.
+</p><!--l. 333--><p class="noindent" >
+</p>
+<!--l. 333--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">6.3 </span> <a
+ id="x1-100006.3"></a><span
+class="cmtt-10">\gls</span></h4>
+<!--l. 335--><p class="noindent" >Both the <span
+class="cmss-10">glossary </span>and the <span
+class="cmss-10">glossaries </span>packages define the command <span
+class="cmtt-10">\gls</span><a
+ id="dx1-10001"></a>. In this
+case, the only thing you need to change is the <span
+class="cmss-10">number</span><a
+ id="dx1-10002"></a> key in the optional
+argument to <span
+class="cmss-10">counter</span><a
+ id="dx1-10003"></a>. Note that the new form of <span
+class="cmtt-10">\gls</span><a
+ id="dx1-10004"></a> also takes a final optional
+argument which can be used to insert text into the automatically generated
+text.
+</p><!--l. 342--><p class="noindent" >
+</p>
+<!--l. 342--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">6.4 </span> <a
+ id="sec:csglossary"></a><span
+class="cmtt-10">\glossary</span></h4>
+<!--l. 345--><p class="noindent" >When using the <span
+class="cmss-10">glossaries </span>package, you should not use <span
+class="cmtt-10">\glossary</span><a
+ id="dx1-11001"></a>
+directly.<span class="footnote-mark"><a
+href="#fn4x0" id="fn4x0-bk"><sup class="textsuperscript">4</sup></a></span><a
+ id="x1-11002f4"></a>
+If, with the old package, you have opted to explicitly use <span
+class="cmtt-10">\glossary</span><a
+ id="dx1-11008"></a> instead of storing
+the glossary information with <span
+class="cmtt-10">\storeglosentry</span><a
+ id="dx1-11009"></a>, then converting from <span
+class="cmss-10">glossary </span>to
+<span
+class="cmss-10">glossaries </span>will be more time-consuming, although in the end, I hope you will see the
+benefits.<span class="footnote-mark"><a
+href="#fn5x0" id="fn5x0-bk"><sup class="textsuperscript">5</sup></a></span><a
+ id="x1-11010f5"></a>
+If you have used <span
+class="cmtt-10">\glossary</span><a
+ id="dx1-11013"></a> with the old glossary package, you will instead need to
+define the relevant glossary terms using <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-11014"></a> and reference the terms
+using <span
+class="cmtt-10">\glsadd</span><a
+ id="dx1-11015"></a>, <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-11016"></a>, <span
+class="cmtt-10">\gls</span><a
+ id="dx1-11017"></a> etc.
+</p><!--l. 368--><p class="indent" > If you don&#8217;t like the idea of continually scrolling back to the preamble to type all
+your <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-11018"></a> commands, you may prefer to create a new file, in which to
+store all these commands, and then input that file in your document&#8217;s preamble.
+
+
+
+Most text editors and front-ends allow you to have multiple files open, and you can
+tab back and forth between them.
+</p><!--l. 375--><p class="noindent" >
+</p>
+<!--l. 375--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">7 </span> <a
+ id="x1-120007"></a>Acronyms</h3>
+<!--l. 377--><p class="noindent" >In the <span
+class="cmss-10">glossary </span>package, acronyms were treated differently to glossary entries. This
+resulted in inconsistencies and sprawling unmaintainable code. The new <span
+class="cmss-10">glossaries</span>
+package treats acronyms in exactly the same way as normal glossary terms. In fact, in
+the <span
+class="cmss-10">glossaries </span>package, the default definition of:
+</p><!--l. 382--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-12001"></a><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">abbrv</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+is a shortcut for:
+</p><!--l. 386--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-12002"></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">type=\acronymtype,</span>
+ <br /><span
+class="cmtt-10">name={</span>&#x27E8;<span
+class="cmitt-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">},</span>
+ <br /><span
+class="cmtt-10">description={</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">},</span>
+ <br /><span
+class="cmtt-10">text={</span>&#x27E8;<span
+class="cmitt-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">},</span>
+ <br /><span
+class="cmtt-10">first=</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9; <span
+class="cmtt-10">(</span>&#x27E8;<span
+class="cmitt-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">)</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">plural=</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">s</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+ <br /><span
+class="cmtt-10">firstplural=</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">s (</span>&#x27E8;<span
+class="cmitt-10">abbrv</span>&#x27E9;<span
+class="cmtt-10">s)</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+ <br />&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmsy-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+</p><!--l. 397--><p class="indent" > This is different to the <span
+class="cmss-10">glossary </span>package which set the <span
+class="cmss-10">name</span><a
+ id="dx1-12003"></a> key to &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;
+(&#x27E8;<span
+class="cmti-10">abbrv</span>&#x27E9;) and allowed you to set a description using the <span
+class="cmss-10">description</span><a
+ id="dx1-12004"></a> key. If
+you still want to do this, you can use one of the description styles, such as
+<span
+class="cmtt-10">long-short-desc</span>, and use the <span
+class="cmss-10">description</span><a
+ id="dx1-12005"></a> key in the optional argument of
+<span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-12006"></a>.
+</p><!--l. 406--><p class="indent" > For example, if your document originally had the following:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-9">
+\newacronym{SVM}{Support&#x00A0;Vector&#x00A0;Machine}{description=Statistical
+&#x00A0;<br />pattern&#x00A0;recognition&#x00A0;technique}
+</div>
+<!--l. 410--><p class="nopar" > Then you would need to first set the style:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-10">
+\setacronymstyle{long-short-desc}
+</div>
+<!--l. 414--><p class="nopar" > and change the acronym definition to:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-11">
+\newacronym[description=Statistical&#x00A0;pattern&#x00A0;recognition
+&#x00A0;<br />technique]{svm}{SVM}{Support&#x00A0;Vector&#x00A0;Machine}
+</div>
+<!--l. 419--><p class="nopar" > You can then reference the acronym using any of the new referencing commands,
+such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-12007"></a> or <span
+class="cmtt-10">\glsadd</span><a
+ id="dx1-12008"></a>.
+</p><!--l. 423--><p class="indent" > With the old <span
+class="cmss-10">glossary </span>package, when you defined an acronym, it also defined a
+command <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9; which could be used to display the acronym in the text.
+So the above SVM example would create the command <span
+class="cmtt-10">\SVM </span>with the old
+package. In the new <span
+class="cmss-10">glossaries </span>package, the acronyms are just another type of
+glossary entry, so they are displayed using <span
+class="cmtt-10">\gls</span><a
+ id="dx1-12009"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. Therefore, in the
+above example, you will also need to replace all occurrences of <span
+class="cmtt-10">\SVM </span>with
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span>.
+</p><!--l. 433--><p class="indent" > If you have used <span
+class="cmtt-10">\useacronym</span><a
+ id="dx1-12010"></a> instead of <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9;, then you will need to
+replace all occurrences of
+</p><!--l. 435--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\useacronym</span><a
+ id="dx1-12011"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">acr-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 439--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\gls</span><a
+ id="dx1-12012"></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="cmtt-10">]</span>
+ <br /></div><hr>
+ <br /></span>
+Note that the starred versions of <span
+class="cmtt-10">\useacronym</span><a
+ id="dx1-12013"></a> and <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9; (which make the first
+letter uppercase) should be replaced with <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-12014"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+</p><!--l. 446--><p class="indent" > Alternatively (as from v1.18 of the <span
+class="cmss-10">glossaries </span>package), you can use <span
+class="cmtt-10">\oldacronym</span><a
+ id="dx1-12015"></a>
+which uses the same syntax as the old <span
+class="cmss-10">glossary </span>package&#8217;s <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-12016"></a> and
+also defines <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9;. For example, if your document originally had the
+following:
+</p><!--l. 451--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+
+
+
+ <div class="verbatim" id="verbatim-12">
+<!--l. 455--><p class="noindent" >\newacronym{SVM}{Support&#x00A0;Vector&#x00A0;Machine}{description=Statistical
+</p><!--l. 455--><p class="noindent" >pattern&#x00A0;recognition&#x00A0;technique}
+
+</p></div>
+<!--l. 455--><p class="nopar" >
+ </div><hr>
+</p><!--l. 456--><p class="noindent" ></p></span>
+then you can change this to:
+</p><!--l. 458--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+
+
+
+ <div class="verbatim" id="verbatim-13">
+<!--l. 462--><p class="noindent" >\oldacronym{SVM}{Support&#x00A0;Vector&#x00A0;Machine}{description=Statistical
+</p><!--l. 462--><p class="noindent" >pattern&#x00A0;recognition&#x00A0;technique}
+
+</p></div>
+<!--l. 462--><p class="nopar" >
+ </div><hr>
+</p><!--l. 463--><p class="noindent" ></p></span>
+You can then continue to use <span
+class="cmtt-10">\SVM</span>. However, remember that <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;generally
+ignores spaces after command names that consist of alphabetical characters. You will
+therefore need to force a space after <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">acr-name</span>&#x27E9;, unless you also load the <span
+class="cmss-10">xspace</span>
+package. (See <a
+href="glossaries-user.html#sec:acronyms" >Acronyms</a> of the <span
+class="cmss-10">glossaries </span>documentation for further details.) Note
+that <span
+class="cmtt-10">\oldacronym</span><a
+ id="dx1-12017"></a> uses its first argument to define the acronym&#8217;s label (as used by
+commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-12018"></a>), so in the above example, with the new <span
+class="cmss-10">glossaries </span>package,
+<span
+class="cmtt-10">\SVM </span>becomes a shortcut for <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{SVM}</span></span></span> and <span
+class="cmtt-10">\SVM* </span>becomes a shortcut for
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Gls{SVM}</span></span></span>.
+</p><!--l. 478--><p class="noindent" >
+</p>
+<!--l. 478--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">7.1 </span> <a
+ id="x1-130007.1"></a><span
+class="cmtt-10">\acrln </span>and <span
+class="cmtt-10">\acrsh</span></h4>
+<!--l. 480--><p class="noindent" >In the <span
+class="cmss-10">glossary </span>package, it is possible to produce the long and short forms of an
+acronym without adding an entry to the glossary using <span
+class="cmtt-10">\acrln</span><a
+ id="dx1-13001"></a> and <span
+class="cmtt-10">\acrsh</span><a
+ id="dx1-13002"></a>. With the
+<span
+class="cmss-10">glossaries </span>package (provided you defined the acronym using <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-13003"></a> or
+<span
+class="cmtt-10">\oldacronym</span><a
+ id="dx1-13004"></a> and provided you haven&#8217;t redefined <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-13005"></a>) you can
+replace
+</p><!--l. 487--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\acrsh</span><a
+ id="dx1-13006"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">acr-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 491--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-13007"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+and you can replace
+</p><!--l. 495--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\acrln</span><a
+ id="dx1-13008"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">acr-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+
+
+
+ <br /></span>
+with
+</p><!--l. 499--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\acrlong</span><a
+ id="dx1-13009"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+The <span
+class="cmss-10">glossaries </span>package also provides the related commands <span
+class="cmtt-10">\acrshortpl</span><a
+ id="dx1-13010"></a> (plural short
+form) and <span
+class="cmtt-10">\acrlongpl</span><a
+ id="dx1-13011"></a> (plural long form) as well as upper case variations. If you use
+the <span
+class="cmss-10">glossaries </span>&#8220;shortcuts&#8221; package option, you can use <span
+class="cmtt-10">\acs</span><a
+ id="dx1-13012"></a> in place of <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-13013"></a>
+and <span
+class="cmtt-10">\acl</span><a
+ id="dx1-13014"></a> in place of <span
+class="cmtt-10">\acrlong</span><a
+ id="dx1-13015"></a>.
+</p><!--l. 509--><p class="indent" > See <a
+href="glossaries-user.html#sec:acronyms" >Acronyms</a> of the <span
+class="cmss-10">glossaries </span>manual for further details of how to use these
+commands.
+</p><!--l. 515--><p class="noindent" >
+</p>
+<!--l. 515--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">7.2 </span> <a
+ id="x1-140007.2"></a><span
+class="cmtt-10">\ifacronymfirstuse</span></h4>
+<!--l. 517--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package command
+</p><!--l. 518--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\ifacronymfirstuse</span><a
+ id="dx1-14001"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">acr-name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text2</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+can be replaced by the <span
+class="cmss-10">glossaries </span>command:
+</p><!--l. 522--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-14002"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text2</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text1</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+Note that <span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-14003"></a> evaluates the opposite condition to that of <span
+class="cmtt-10">\ifacronymfirstuse</span><a
+ id="dx1-14004"></a>
+which is why the last two arguments have been reversed.
+</p><!--l. 531--><p class="noindent" >
+</p>
+<!--l. 531--><p class="noindent" ><a
+href="#top">Top</a><h3 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">7.3 </span> <a
+ id="x1-150007.3"></a><span
+class="cmtt-10">\resetacronym </span>and <span
+class="cmtt-10">\unsetacronym</span></h4>
+<!--l. 533--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package allows you to reset and unset the acronym flag which is used to
+determine whether the acronym has been used in the document. The <span
+class="cmss-10">glossaries</span>
+package also provides a means to do this on either a local or a global level. To reset
+an acronym, you will need to replace:
+</p><!--l. 538--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\resetacronym</span><a
+ id="dx1-15001"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">acr-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+
+
+
+ <br /></span>
+with either
+</p><!--l. 542--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glsreset</span><a
+ id="dx1-15002"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+or
+</p><!--l. 546--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glslocalreset</span><a
+ id="dx1-15003"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+</p><!--l. 550--><p class="indent" > To unset an acronym, you will need to replace:
+</p><!--l. 551--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\unsetacronym</span><a
+ id="dx1-15004"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">acr-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+with either
+</p><!--l. 555--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glsunset</span><a
+ id="dx1-15005"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+or
+</p><!--l. 559--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glslocalunset</span><a
+ id="dx1-15006"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /></div><hr>
+ <br /></span>
+</p><!--l. 563--><p class="indent" > To reset all acronyms, you will need to replace:
+</p><!--l. 564--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\resetallacronyms</span><a
+ id="dx1-15007"></a>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 568--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glsresetall</span><a
+ id="dx1-15008"></a><span
+class="cmtt-10">[\acronymtype</span><a
+ id="dx1-15009"></a><span
+class="cmtt-10">]</span>
+ <br /></div><hr>
+ <br /></span>
+
+
+
+or
+</p><!--l. 572--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glslocalresetall</span><a
+ id="dx1-15010"></a><span
+class="cmtt-10">[\acronymtype</span><a
+ id="dx1-15011"></a><span
+class="cmtt-10">]</span>
+ <br /></div><hr>
+ <br /></span>
+To unset all acronyms, you will need to replace:
+</p><!--l. 576--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossary</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\unsetallacronyms</span><a
+ id="dx1-15012"></a>
+ <br /></div><hr>
+ <br /></span>
+with
+</p><!--l. 580--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glsunsetall</span><a
+ id="dx1-15013"></a><span
+class="cmtt-10">[\acronymtype</span><a
+ id="dx1-15014"></a><span
+class="cmtt-10">]</span>
+ <br /></div><hr>
+ <br /></span>
+or
+</p><!--l. 584--><p class="indent" > <hr><div><span class="marginpar"><span
+class="cmss-10">glossaries</span></span><span class="obeylines-h">
+ <span
+class="cmtt-10">\glslocalunsetall</span><a
+ id="dx1-15015"></a><span
+class="cmtt-10">[\acronymtype</span><a
+ id="dx1-15016"></a><span
+class="cmtt-10">]</span>
+ <br /></div><hr>
+ <br /></span>
+</p><!--l. 588--><p class="noindent" >
+</p>
+<!--l. 588--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">8 </span> <a
+ id="x1-160008"></a>Displaying the glossary</h3>
+<!--l. 590--><p class="noindent" >The <span
+class="cmss-10">glossary </span>package provides the command <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-16001"></a> (or <span
+class="cmtt-10">\print</span>&#x27E8;<span
+class="cmti-10">type</span>&#x27E9; for
+other glossary types) which can be used to print individual glossaries. The <span
+class="cmss-10">glossaries</span>
+package provides the command <span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-16002"></a> which will print all the glossaries
+which have been defined, or <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-16003"></a><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span>to print individual glossaries.
+So if you just have <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-16004"></a>, then you can leave it as it is, but if you have,
+say:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-14">
+\printglossary
+&#x00A0;<br />\printglossary[acronym]
+</div>
+<!--l. 601--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-15">
+\printglossary
+&#x00A0;<br />\printacronym
+</div>
+<!--l. 606--><p class="nopar" > then you will need to replace this with either
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-16">
+\printglossaries
+</div>
+<!--l. 610--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-17">
+\printglossary
+&#x00A0;<br />\printglossary[type=\acronymtype]
+</div>
+<!--l. 615--><p class="nopar" >
+</p><!--l. 617--><p class="indent" > The <span
+class="cmss-10">glossary </span>package allows you to specify a short title (for the table of contents
+and page header) by defining a command of the form <span
+class="cmtt-10">\short</span>&#x27E8;<span
+class="cmti-10">glossary-type</span>&#x27E9;<span
+class="cmtt-10">name</span>. The
+<span
+class="cmss-10">glossaries </span>package doesn&#8217;t do this, but instead provides the <span
+class="cmss-10">toctitle</span><a
+ id="dx1-16005"></a> key which can be
+used in the optional argument to <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-16006"></a>. For example, if you have created
+a new glossary type called <span
+class="cmtt-10">notation</span>, and you had defined
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-18">
+\newcommand{\shortnotationname}{Notation}
+</div>
+<!--l. 627--><p class="nopar" > then you would need to use the <span
+class="cmss-10">toctitle</span><a
+ id="dx1-16007"></a> key:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-19">
+\printglossary[type=notation,toctitle=Notation]
+</div>
+<!--l. 631--><p class="nopar" > The <span
+class="cmss-10">glossaries </span>package will ignore <span
+class="cmtt-10">\shortnotationname</span><a
+ id="dx1-16008"></a>, so unless you have used it
+elsewhere in the document, you may as well remove the definition.
+</p><!--l. 636--><p class="noindent" >
+</p>
+<!--l. 636--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9 </span> <a
+ id="x1-170009"></a>Processing Your Document</h3>
+<!--l. 638--><p class="noindent" >If you convert your document from using the <span
+class="cmss-10">glossary </span>package to the <span
+class="cmss-10">glossaries</span>
+package, you will need to delete any of the additional files, such as the <span
+class="cmtt-10">.glo</span><a
+ id="dx1-17001"></a> file, that
+were created by the <span
+class="cmss-10">glossary </span>package, as the <span
+class="cmss-10">glossaries </span>package uses a different format.
+Remember also, that if you used the <span
+class="cmtt-10">makeglos</span><a
+ id="dx1-17002"></a> Perl script, you will need to use the
+<span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17003"></a> Perl script instead. As from v1.17, the <span
+class="cmss-10">glossaries </span>package can
+be used with either <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17004"></a> or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-17005"></a>. Since <span
+class="cmtt-10">xindy</span><a
+ id="dx1-17006"></a> was designed to be
+multilingual, the new <span
+class="cmss-10">glossaries </span>package is a much better option for non-English
+documents. If you use the extension package, <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-17007"></a>, then you also
+have the option of using <span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-17008"></a> instead (which also provides multilingual
+support).
+</p><!--l. 653--><p class="indent" > For further information on using <span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-17009"></a>, <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-17010"></a> or <span
+class="cmtt-10">xindy</span><a
+ id="dx1-17011"></a> to create
+your glossaries, see <a
+href="glossaries-user.html#sec:makeglossaries" >Generating the Associated Glossary Files</a> of the <span
+class="cmss-10">glossaries</span>
+documentation.
+</p><!--l. 659--><p class="noindent" >
+</p>
+<!--l. 659--><p class="noindent" ><a
+href="#top">Top</a><h2 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10 </span> <a
+ id="x1-1800010"></a>Troubleshooting</h3>
+<!--l. 661--><p class="noindent" >Please check the <a
+href="http://www.dickimaw-books.com/faqs/glossariesfaq.html" >FAQ</a> for the <span
+class="cmss-10">glossaries </span>package if you have any problems.
+</p><!--l. 2--><p class="noindent" >
+</p>
+ <h3 class="likesectionHead"><a
+ id="x1-1900010"></a>Index</h3>
+<!--l. 4--><p class="noindent" > <span
+class="cmbx-10">B</span>
+</p>
+ <div class="theindex"><span class="index-item"><span
+class="cmtt-10">bib2gls</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-17008" >1</a> <br /></span>
+<p class="theindex"> <span
+class="cmbx-10">F</span>
+
+
+
+<span class="index-item">file types<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">.glo</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-17001" >2</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">G</span>
+<span class="index-item"><span
+class="cmss-10">glossaries-extra </span>package&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-17007" >3</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\gls </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">counter</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-10003" >4</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">number</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-10002" >5</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">counter</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-8005" >6</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">M</span>
+<span class="index-item"><span
+class="cmtt-10">makeglos</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-17002" >7</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeglossaries</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-17003" >8</a>, <a
+href="glossary2glossaries.html#dx1-17009" >9</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeindex</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-2003" >10</a>, <a
+href="glossary2glossaries.html#dx1-2006" >11</a>, <a
+href="glossary2glossaries.html#dx1-6012" >12</a>, <a
+href="glossary2glossaries.html#dx1-17004" >13</a>, <a
+href="glossary2glossaries.html#dx1-17010" >14</a>, <a
+href="glossary2glossaries.html#dx1-2002" >15</a>, <a
+href="glossary2glossaries.html#dx1-11004" >16</a>, <a
+href="glossary2glossaries.html#dx1-11006" >17</a>, <a
+href="glossary2glossaries.html#dx1-11012" >18</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">N</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">description</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-12004" >19</a>, <a
+href="glossary2glossaries.html#dx1-12005" >20</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">name</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-12003" >21</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">P</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">style</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-4005" >22</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">toctitle</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-4010" >23</a>, <a
+href="glossary2glossaries.html#dx1-16005" >24</a>, <a
+href="glossary2glossaries.html#dx1-16007" >25</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">S</span>
+<span class="index-item"><span
+class="cmtt-10">\storeglosentry </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">format</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-6013" >26</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">number</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-6014" >27</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">U</span>
+<span class="index-item"><span
+class="cmtt-10">\useglosentry </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">format</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-8003" >28</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">number</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-8004" >29</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">X</span>
+<span class="index-item"><span
+class="cmtt-10">xindy</span>&#x00A0;&#x00A0;<a
+href="glossary2glossaries.html#dx1-2004" >30</a>, <a
+href="glossary2glossaries.html#dx1-2005" >31</a>, <a
+href="glossary2glossaries.html#dx1-17005" >32</a>, <a
+href="glossary2glossaries.html#dx1-17006" >33</a>, <a
+href="glossary2glossaries.html#dx1-17011" >34</a>, <a
+href="glossary2glossaries.html#dx1-11005" >35</a>, <a
+href="glossary2glossaries.html#dx1-11007" >36</a> <br /></span>
+
+
+
+</p></div>
+ <div class="footnotes"><!--l. 87--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn1x0-bk" id="fn1x0"><sup class="textsuperscript">1</sup></a></span><span
+class="cmr-8">as from v1.17. Previous versions were designed to be used with </span><span
+class="cmtt-8">makeindex</span><a
+ id="dx1-2002"></a> <span
+class="cmr-8">only</span></p>
+<!--l. 102--><p class="noindent" ><span class="footnote-mark"><a
+href="#fn2x0-bk" id="fn2x0"><sup class="textsuperscript">2</sup></a></span><span
+class="cmr-8">as from v1.17</span></p><!--l. 239--><p class="indent" > <span class="footnote-mark"><a
+href="#fn3x0-bk" id="fn3x0"><sup class="textsuperscript">3</sup></a></span><span
+class="cmr-8">mainly because having a key value list in </span><span
+class="cmtt-8">\glossary</span><a
+ id="dx1-6003"></a> <span
+class="cmr-8">caused problems, but it also helps</span>
+<span
+class="cmr-8">consistency.</span></p>
+<!--l. 353--><p class="indent" > <span class="footnote-mark"><a
+href="#fn4x0-bk" id="fn4x0"><sup class="textsuperscript">4</sup></a></span><span
+class="cmr-8">This is because </span><span
+class="cmtt-8">\glossary</span><a
+ id="dx1-11003"></a> <span
+class="cmr-8">requires the argument to be in a specific format and doesn&#8217;t use</span>
+<span
+class="cmr-8">the </span>&#x27E8;<span
+class="cmti-8">key</span>&#x27E9;<span
+class="cmr-8">=</span>&#x27E8;<span
+class="cmti-8">value</span>&#x27E9; <span
+class="cmr-8">format that the old glossary package used. The new package&#8217;s internal commands set</span>
+<span
+class="cmr-8">this format, as well as escaping any of </span><span
+class="cmtt-8">makeindex</span><a
+ id="dx1-11004"></a><span
+class="cmr-8">&#8217;s or </span><span
+class="cmtt-8">xindy</span><a
+ id="dx1-11005"></a><span
+class="cmr-8">&#8217;s special characters. What&#8217;s more, the</span>
+<span
+class="cmr-8">format has changed as from v1.17 to allow the new package to be used with either </span><span
+class="cmtt-8">makeindex</span><a
+ id="dx1-11006"></a> <span
+class="cmr-8">or</span>
+<span
+class="cmtt-8">xindy</span><a
+ id="dx1-11007"></a><span
+class="cmr-8">.</span></p>
+<!--l. 362--><p class="indent" > <span class="footnote-mark"><a
+href="#fn5x0-bk" id="fn5x0"><sup class="textsuperscript">5</sup></a></span><span
+class="cmr-8">From the user&#8217;s point of view, using </span><span
+class="cmtt-8">\glossary</span><a
+ id="dx1-11011"></a> <span
+class="cmr-8">throughout the document is time consuming,</span>
+<span
+class="cmr-8">and if you use it more than once for the same term, there&#8217;s a chance extra spaces may creep in which</span>
+<span
+class="cmr-8">will cause </span><span
+class="cmtt-8">makeindex</span><a
+ id="dx1-11012"></a> <span
+class="cmr-8">to treat the two entries as different terms, even though they look the same in</span>
+<span
+class="cmr-8">the document.</span></p> </div>
+
+</body></html>
+
+
+
+
diff --git a/macros/latex/contrib/glossaries/glossary2glossaries.pdf b/macros/latex/contrib/glossaries/glossary2glossaries.pdf
new file mode 100644
index 0000000000..3300082598
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossary2glossaries.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/glossary2glossaries.tex b/macros/latex/contrib/glossaries/glossary2glossaries.tex
new file mode 100644
index 0000000000..f555c71db5
--- /dev/null
+++ b/macros/latex/contrib/glossaries/glossary2glossaries.tex
@@ -0,0 +1,667 @@
+\documentclass{nlctdoc}
+
+\usepackage[utf8]{inputenc}
+\ifpdf
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{fourier}
+\usepackage{mathpazo}
+\usepackage[scaled=.88]{helvet}
+\usepackage{courier}
+\fi
+\usepackage{cmap}
+
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={Upgrading from the glossary package to
+ the glossaries package}]{hyperref}
+\usepackage{xr-hyper}
+
+\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}}
+\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}}
+\newcommand*{\acrstyle}[1]{\texttt{#1}}
+
+\ifpdf
+\newcommand{\glsentrytext}[1]{\texttt{#1}}
+\externaldocument{glossaries-user}
+\fi
+
+\IndexPrologue{\section*{Index}}
+\setcounter{IndexColumns}{2}
+
+\title{Upgrading from the glossary package to the glossaries
+package}
+\author{Nicola L.C. Talbot}
+\date{2019-01-06}
+
+\newenvironment{oldway}{%
+ \begin{labelledbox}{\styfmt{glossary}}\ttfamily\obeylines
+}{%
+ \end{labelledbox}%
+}
+
+\newenvironment{newway}{%
+ \begin{labelledbox}{\styfmt{glossaries}}\ttfamily\obeylines
+}{%
+ \end{labelledbox}%
+}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+The purpose of this document is to provide advice if you want to
+convert a \LaTeX\ document from using the obsolete \styfmt{glossary}
+package to the replacement \styfmt{glossaries} package.
+\end{abstract}
+
+\tableofcontents
+
+\section{Why the Need for a New Package?}
+\label{whyglossaries}
+
+The \styfmt{glossary} package started out as an example in a tutorial,
+but I decided that I may as well package it up and upload it to CTAN.
+Unfortunately it was fairly rigid and unable to adapt well to the
+wide variation in glossary styles. Users began making requests for
+enhancements, but with each enhancement the code became more
+complicated and bugs crept in. Each fix in one place seemed to cause
+another problem elsewhere. In the end, it was taking up too much
+of my time to maintain, so I decided to replace it with a much
+better designed package. With the new \styfmt{glossaries} package:
+
+\begin{itemize}
+\item you can define irregular plurals;
+
+\item glossary terms can have an associated symbol in addition
+to the name and description;
+
+\item new glossary styles are much easier to design;
+
+\item you can add dictionaries to supply translations for the
+fixed names used in headings and by some of the glossary styles;
+
+\item you can choose\footnote{as from v1.17. Previous versions
+were designed to be used with \app{makeindex} only} between using
+\app{makeindex} or \app{xindy} to sort the glossary. Using
+\app{xindy} means that:
+
+ \begin{itemize}
+ \item there is much better support for terms containing accented
+ or non-Latin characters;
+
+ \item there is support for non-standard location numbers;
+ \end{itemize}
+
+\item you don't need to remember to escape \app{makeindex}'s
+special characters as this is done internally;
+
+\item hierarchical entries and homographs are supported;\footnote{as
+from v1.17}
+
+\item there is better support for cross-referencing glossary entries;
+
+\item acronyms are just another glossary term which helps to
+maintain consistency;
+
+\item different acronym styles are supported.
+
+\end{itemize}
+
+\section{Package Options}
+
+When converting a document that currently uses the obsolete
+\styfmt{glossary} package to the replacement \styfmt{glossaries} package,
+it should be fairly obvious that the first thing you need to do is
+replace \verb|\usepackage{glossary}| with
+\verb|\usepackage{glossaries}|, however some of the package options
+are different, so you may need to change those as well.
+Table~\ref{tab:pkgopt} shows the mappings from the \styfmt{glossary}
+to the \styfmt{glossaries} package options.
+
+\begin{table}[htbp]
+\caption[Mappings]{Mappings from \styfmt{glossary} to \styfmt{glossaries}
+package options}
+\label{tab:pkgopt}
+\begin{center}
+\begin{tabular}{ll}
+\bfseries \styfmt{glossary} option & \bfseries \styfmt{glossaries} option\\
+style=list & style=list\\
+style=altlist & style=altlist\\
+style=long,header=none,border=none,cols=2 & style=long\\
+style=long,header=plain,border=none,cols=2 & style=longheader\\
+style=long,header=none,border=plain,cols=2 & style=longborder\\
+style=long,header=plain,border=plain,cols=2 & style=longheaderborder\\
+style=long,header=none,border=none,cols=3 & style=long3col\\
+style=long,header=plain,border=none,cols=3 & style=long3colheader\\
+style=long,header=none,border=plain,cols=3 & style=long3colborder\\
+style=long,header=plain,border=plain,cols=3 & style=long3colheaderborder\\
+style=super,header=none,border=none,cols=2 & style=super\\
+style=super,header=plain,border=none,cols=2 & style=superheader\\
+style=super,header=none,border=plain,cols=2 & style=superborder\\
+style=super,header=plain,border=plain,cols=2 & style=superheaderborder\\
+style=super,header=none,border=none,cols=3 & style=super3col\\
+style=super,header=plain,border=none,cols=3 & style=super3colheader\\
+style=super,header=none,border=plain,cols=3 & style=super3colborder\\
+style=super,header=plain,border=plain,cols=3 & style=super3colheaderborder\\
+number=none & nonumberlist\\
+number=\meta{counter name} & counter=\meta{counter name}\\
+toc & toc\\
+hypertoc & toc\\
+hyper & \emph{no corresponding option}\\
+section=true & section\\
+section=false & \emph{no corresponding option}\\
+acronym & acronym\\
+global & \emph{no corresponding option}
+\end{tabular}
+\end{center}
+\end{table}
+
+\section{Defining new glossary types}
+
+If you have created new glossary types, you will need to
+replace all instances of
+\begin{oldway}
+\ics{newglossarytype}\oarg{log-ext}\marg{type}\marg{out-ext}\marg{in-ext}\oarg{old style list}\newline
+\cs{newcommand}\verb|{\|\meta{type}name\verb|}|\marg{title}
+\end{oldway}%
+with
+\begin{newway}
+\ics{newglossary}\oarg{log-ext}\marg{type}\marg{out-ext}\marg{in-ext}\marg{title}
+\end{newway}%
+in the preamble, and, if the new glossary requires a different style
+to the main (default) glossary, you will also need to put
+\begin{newway}
+\ics{setglossarystyle}\marg{new style}
+\end{newway}%
+immediately before the glossary is displayed, or you can specify
+the style when you display the glossary using \ics{printglossary}
+(see below).
+
+The \meta{old style list} optional argument can be converted to
+\meta{new style} using the same mapping given in
+Table~\ref{tab:pkgopt}.
+
+For example, if your document contains the following:
+\begin{verbatim}
+\newglossarytype[nlg]{notation}{not}{ntn}[style=long,header]
+\newcommand{\notationname}{Index of Notation}
+\end{verbatim}
+You will need to replace the above two lines with:
+\begin{verbatim}
+\newglossary[nlg]{notation}{not}{ntn}{Index of Notation}
+\end{verbatim}
+in the preamble and
+\begin{verbatim}
+\setglossarystyle{longheader}
+\end{verbatim}
+immediately prior to displaying this glossary. Alternatively, you
+can specify the style using the \csopt{printglossary}{style} key in
+the optional argument of \ics{printglossary}. For example:
+\begin{verbatim}
+\printglossary[type=notation,style=longheader]
+\end{verbatim}
+
+Note that the glossary title is no longer specified using
+\cs{}\meta{glossary-type}\texttt{name} (except for \ics{glossaryname}
+and \ics{acronymname}) but is instead specified in the \meta{title}
+argument of \ics{newglossary}. The short title which is specified in
+the \styfmt{glossary} package by the command
+\cs{short}\meta{glossary-name}\texttt{name} is now specified using
+the \csopt{printglossary}{toctitle} key in the optional argument to
+\ics{printglossary}.
+
+\section{\texorpdfstring{\cs{make}\meta{glossary
+name}}{\textbackslash make...}}
+
+All instances of \cs{make}\meta{glossary name} (e.g.\
+\ics{makeglossary} and \ics{makeacronym}) should be replaced
+by the single command \ics{makeglossaries}. For example, if
+your document contained the following:
+\begin{verbatim}
+\makeglossary
+\makeacronym
+\end{verbatim}
+then you should replace both lines with the single line:
+\begin{verbatim}
+\makeglossaries
+\end{verbatim}
+
+\section{Storing glossary information}
+
+With the old \styfmt{glossary} package you could optionally store
+glossary information for later use, or you could simply use
+\ics{glossary} whenever you wanted to add information to the glossary.
+With the new \styfmt{glossaries} package, the latter option is no longer
+available.\footnote{mainly because having a key value list in
+\ics{glossary} caused problems, but it also helps consistency.} If
+you have stored all the glossary information using
+\ics{storeglosentry}, then you will need to convert these commands
+into the equivalent \ics{newglossaryentry}. If you have only
+used \ics{glossary}, then see \sectionref{sec:csglossary}.
+
+Substitute all instances of
+\begin{oldway}
+\ics{storeglosentry}\marg{label}\marg{gls-entry}
+\end{oldway}%
+with
+\begin{newway}
+\ics{newglossaryentry}\marg{label}\marg{gls-entry}
+\end{newway}%
+This should be fairly easy to do using the search and replace
+facility in your editor (but see notes below).
+
+If you have used the optional argument of \ics{storeglosentry}
+(i.e.\ you have multiple glossaries) then you will need to
+substitute
+\begin{oldway}
+\ics{storeglosentry}\oarg{gls-type}\marg{label}\marg{gls-entry}
+\end{oldway}%
+with
+\begin{newway}
+\ics{newglossaryentry}\marg{label}\verb|{|\meta{gls-entry},type=\meta{gls-type}\verb|}|
+\end{newway}
+
+The glossary entry information \meta{gls-entry} may also need
+changing. If \meta{gls-entry} contains any of \app{makeindex}'s
+special characters (i.e.\ \texttt{@} \texttt{!} \verb|"| or
+\verb"|") then they should no longer be escaped with \verb'"'
+since the \styfmt{glossaries} package deals with these characters
+internally. For example, if your document contains the following:
+\begin{verbatim}
+\storeglosentry{card}{name={$"|\mathcal{S}"|$},
+description={The cardinality of the set $\mathcal{S}$}}
+\end{verbatim}
+then you will need to replace it with:
+\begin{verbatim}
+\newglossaryentry{card}{name={$|\mathcal{S}|$},
+description={The cardinality of the set $\mathcal{S}$}}
+\end{verbatim}
+
+The \csopt{storeglosentry}{format} and
+\csopt{storeglosentry}{number} keys available in \ics{storeglosentry}
+are not available with \ics{newglossaryentry}.
+
+\section{Adding an entry to the glossary}
+
+The \styfmt{glossary} package provided two basic means to add
+information to the glossary: firstly, the term was defined
+using \ics{storeglosentry} and the entries for that term were
+added using \ics{useglosentry}, \ics{useGlosentry} and \ics{gls}.
+Secondly, the term was added to the glossary using \ics{glossary}.
+This second approach is unavailable with the \styfmt{glossaries}
+package.
+
+\subsection{\texorpdfstring{\cs{useglosentry}}{\textbackslash
+useglosentry}}
+\label{sec:useglosentry}
+
+The \styfmt{glossary} package allows you to add information to the
+glossary for a predefined term without producing any text in the
+document using
+\begin{oldway}
+\ics{useglosentry}\oarg{old options}\marg{label}
+\end{oldway}%
+Any occurrences of this command will need to be replaced with
+\begin{newway}
+\ics{glsadd}\oarg{new options}\marg{label}
+\end{newway}%
+The \csopt{useglosentry}{format} key in \meta{old options} remains
+the same in \meta{new options}. However the
+\csopt{useglosentry}{number}\texttt{=}\meta{counter name} key in
+\meta{old options} should be replaced with
+\csopt{glsadd}{counter}\texttt{=}\meta{counter name} in \meta{new
+options}.
+
+\subsection{\texorpdfstring{\cs{useGlosentry}}{\textbackslash
+useGlosentry}}
+
+The \styfmt{glossary} package allows you to add information to the
+glossary for a predefined term with the given text using
+\begin{oldway}
+\ics{useGlosentry}\oarg{old options}\marg{label}\marg{text}
+\end{oldway}%
+Any occurrences of this command will need to be replaced with
+\begin{newway}
+\ics{glslink}\oarg{new options}\marg{label}\marg{text}
+\end{newway}%
+The mapping from \meta{old options} to \meta{new options} is
+the same as that given \sectionref{sec:useglosentry}.
+
+\subsection{\texorpdfstring{\cs{gls}}{\textbackslash gls}}
+
+Both the \styfmt{glossary} and the \styfmt{glossaries} packages define
+the command \ics{gls}. In this case, the only thing you need to
+change is the \csopt{gls}{number} key in the optional argument
+to \csopt{gls}{counter}. Note that the new form of \ics{gls} also takes
+a final optional argument which can be used to insert text into the
+automatically generated text.
+
+\subsection{\texorpdfstring{\cs{glossary}}{\textbackslash glossary}}
+\label{sec:csglossary}
+
+When using the \styfmt{glossaries} package, you should not use
+\ics{glossary} directly.\footnote{This is because \ics{glossary}
+requires the argument to be in a specific format and doesn't use the
+\meta{key}=\meta{value} format that the old glossary package used.
+The new package's internal commands set this format, as well as
+escaping any of \app{makeindex}'s or \app{xindy}'s special
+characters. What's more, the format has changed as from v1.17 to
+allow the new package to be used with either \app{makeindex} or
+\app{xindy}.} If, with the old package, you have opted to
+explicitly use \ics{glossary} instead of storing the glossary
+information with \ics{storeglosentry}, then converting from
+\styfmt{glossary} to \styfmt{glossaries} will be more time-consuming,
+although in the end, I hope you will see the benefits.\footnote{From
+the user's point of view, using \ics{glossary} throughout the
+document is time consuming, and if you use it more than once for the
+same term, there's a chance extra spaces may creep in which will
+cause \app{makeindex} to treat the two entries as different
+terms, even though they look the same in the document.} If you have
+used \ics{glossary} with the old glossary package, you will instead
+need to define the relevant glossary terms using
+\ics{newglossaryentry} and reference the terms using
+\ics{glsadd}, \ics{glslink}, \ics{gls} etc.
+
+If you don't like the idea of continually scrolling back to the
+preamble to type all your \ics{newglossaryentry} commands, you may
+prefer to create a new file, in which to store all these commands,
+and then input that file in your document's preamble. Most text
+editors and front-ends allow you to have multiple files open, and
+you can tab back and forth between them.
+
+\section{Acronyms}
+
+In the \styfmt{glossary} package, acronyms were treated differently
+to glossary entries. This resulted in inconsistencies and sprawling
+unmaintainable code. The new \styfmt{glossaries} package treats
+acronyms in exactly the same way as normal glossary terms. In fact,
+in the \styfmt{glossaries} package, the default definition of:
+\begin{newway}
+\ics{newacronym}\oarg{options}\marg{label}\marg{abbrv}\marg{long}
+\end{newway}
+is a shortcut for:
+\begin{newway}
+\ics{newglossaryentry}\marg{label}\{type=\cs{acronymtype},
+name=\marg{abbrv},
+description=\marg{long},
+text=\marg{abbrv},
+first=\{\meta{long} (\meta{abbrv})\},
+plural=\{\meta{abbrv}s\},
+firstplural=\{\meta{long}s (\meta{abbrv}s)\},
+\meta{options}\}
+\end{newway}
+
+This is different to the \styfmt{glossary} package which set the
+\csopt{newglossaryentry}{name} key to \meta{long} (\meta{abbrv}) and
+allowed you to set a description using the
+\csopt{newglossaryentry}{description} key. If you still want to do
+this, you can use one of the description styles, such as
+\acrstyle{long-short-desc}, and use
+the \csopt{newglossaryentry}{description} key in the optional
+argument of \ics{newacronym}.
+
+For example, if your document originally had the following:
+\begin{verbatim}
+\newacronym{SVM}{Support Vector Machine}{description=Statistical
+pattern recognition technique}
+\end{verbatim}
+Then you would need to first set the style:
+\begin{verbatim}
+\setacronymstyle{long-short-desc}
+\end{verbatim}
+and change the acronym definition to:
+\begin{verbatim}
+\newacronym[description=Statistical pattern recognition
+technique]{svm}{SVM}{Support Vector Machine}
+\end{verbatim}
+You can then reference the acronym using any of the new referencing
+commands, such as \ics{gls} or \ics{glsadd}.
+
+With the old \styfmt{glossary} package, when you defined an
+acronym, it also defined a command \cs{}\meta{acr-name} which
+could be used to display the acronym in the text. So the
+above SVM example would create the command \cs{SVM} with the old
+package. In the new \styfmt{glossaries} package, the acronyms are just
+another type of glossary entry, so they are displayed using
+\ics{gls}\marg{label}. Therefore, in the above example, you will
+also need to replace all occurrences of \cs{SVM} with
+\verb|\gls{svm}|.
+
+If you have used \ics{useacronym} instead of \cs{}\meta{acr-name},
+then you will need to replace all occurrences of
+\begin{oldway}
+\ics{useacronym}\oarg{insert}\marg{acr-name}
+\end{oldway}%
+with
+\begin{newway}
+\ics{gls}\marg{label}\oarg{insert}
+\end{newway}%
+Note that the starred versions of \ics{useacronym} and
+\cs{}\meta{acr-name} (which make the first letter uppercase) should
+be replaced with \ics{Gls}\marg{label}.
+
+Alternatively (as from v1.18 of the \styfmt{glossaries} package),
+you can use \ics{oldacronym} which uses the same syntax as
+the old \styfmt{glossary} package's \ics{newacronym} and also
+defines \cs{}\meta{acr-name}.
+For example, if your document originally had the following:
+\begin{oldway}
+\begin{verbatim}
+\newacronym{SVM}{Support Vector Machine}{description=Statistical
+pattern recognition technique}
+\end{verbatim}
+\end{oldway}
+then you can change this to:
+\begin{newway}
+\begin{verbatim}
+\oldacronym{SVM}{Support Vector Machine}{description=Statistical
+pattern recognition technique}
+\end{verbatim}
+\end{newway}
+You can then continue to use \cs{SVM}\@. However, remember that
+\LaTeX\ generally ignores spaces after command names that consist of
+alphabetical characters. You will therefore need to force a space
+after \cs{}\meta{acr-name}, unless you also load the \styfmt{xspace}
+package. (See
+\xrsectionref{sec:acronyms}{glossaries-user}{Acronyms}
+of the \styfmt{glossaries} documentation for further
+details.) Note that \ics{oldacronym} uses its first argument to
+define the acronym's label (as used by commands like \ics{gls}), so
+in the above example, with the new \styfmt{glossaries} package,
+\cs{SVM} becomes a shortcut for \verb|\gls{SVM}| and \cs{SVM*}
+becomes a shortcut for \verb|\Gls{SVM}|.
+
+\subsection{\texorpdfstring{\cs{acrln} and
+\cs{acrsh}}{\textbackslash acrln and \textbackslash acrsh}}
+
+In the \styfmt{glossary} package, it is possible to produce the
+long and short forms of an acronym without adding an entry to
+the glossary using \ics{acrln} and \ics{acrsh}. With the
+\styfmt{glossaries} package (provided you defined the acronym using
+\ics{newacronym} or \ics{oldacronym} and provided you haven't
+redefined \ics{newacronym})
+you can replace
+\begin{oldway}
+\ics{acrsh}\marg{acr-name}
+\end{oldway}%
+with
+\begin{newway}
+\ics{acrshort}\marg{label}
+\end{newway}%
+and you can replace
+\begin{oldway}
+\ics{acrln}\marg{acr-name}
+\end{oldway}%
+with
+\begin{newway}
+\ics{acrlong}\marg{label}
+\end{newway}%
+The \styfmt{glossaries} package also provides the related commands
+\ics{acrshortpl} (plural short form) and \ics{acrlongpl} (plural long
+form) as well as upper case variations. If you use the
+\styfmt{glossaries} \qt{shortcuts} package option, you can use
+\ics{acs} in place of \ics{acrshort} and \ics{acl} in place of
+\ics{acrlong}.
+
+See
+\xrsectionref{sec:acronyms}{glossaries-user}{Acronyms}
+of the \styfmt{glossaries} manual for further details of
+how to use these commands.
+
+\subsection{\texorpdfstring{\cs{ifacronymfirstuse}}{\textbackslash
+ifacronymfirstuse}}
+
+The \styfmt{glossary} package command
+\begin{oldway}
+\ics{ifacronymfirstuse}\marg{acr-name}\marg{text1}\marg{text2}
+\end{oldway}%
+can be replaced by the \styfmt{glossaries} command:
+\begin{newway}
+\ics{ifglsused}\marg{label}\marg{text2}\marg{text1}
+\end{newway}%
+Note that \ics{ifglsused} evaluates the opposite condition to
+that of \ics{ifacronymfirstuse} which is why the last two arguments
+have been reversed.
+
+\subsection{\texorpdfstring{\cs{resetacronym} and
+\cs{unsetacronym}}{\textbackslash resetacronym and \textbackslash
+unsetacronym}}
+
+The \styfmt{glossary} package allows you to reset and unset the
+acronym flag which is used to determine whether the acronym has
+been used in the document. The \styfmt{glossaries} package also
+provides a means to do this on either a local or a global level.
+To reset an acronym, you will need to replace:
+\begin{oldway}
+\ics{resetacronym}\marg{acr-name}
+\end{oldway}%
+with either
+\begin{newway}
+\ics{glsreset}\marg{label}
+\end{newway}%
+or
+\begin{newway}
+\ics{glslocalreset}\marg{label}
+\end{newway}
+
+To unset an acronym, you will need to replace:
+\begin{oldway}
+\ics{unsetacronym}\marg{acr-name}
+\end{oldway}%
+with either
+\begin{newway}
+\ics{glsunset}\marg{label}
+\end{newway}%
+or
+\begin{newway}
+\ics{glslocalunset}\marg{label}
+\end{newway}
+
+To reset all acronyms, you will need to replace:
+\begin{oldway}
+\ics{resetallacronyms}
+\end{oldway}
+with
+\begin{newway}
+\ics{glsresetall}[\ics{acronymtype}]
+\end{newway}
+or
+\begin{newway}
+\ics{glslocalresetall}[\ics{acronymtype}]
+\end{newway}
+To unset all acronyms, you will need to replace:
+\begin{oldway}
+\ics{unsetallacronyms}
+\end{oldway}
+with
+\begin{newway}
+\ics{glsunsetall}[\ics{acronymtype}]
+\end{newway}
+or
+\begin{newway}
+\ics{glslocalunsetall}[\ics{acronymtype}]
+\end{newway}
+
+\section{Displaying the glossary}
+
+The \styfmt{glossary} package provides the command \ics{printglossary}
+(or \cs{print}\meta{type} for other glossary types) which
+can be used to print individual glossaries. The \styfmt{glossaries}
+package provides the command \ics{printglossaries} which
+will print all the glossaries which have been defined, or
+\ics{printglossary}\oarg{options} to print individual glossaries.
+So if you just have \ics{printglossary}, then you can leave it as
+it is, but if you have, say:
+\begin{verbatim}
+\printglossary
+\printglossary[acronym]
+\end{verbatim}
+or
+\begin{verbatim}
+\printglossary
+\printacronym
+\end{verbatim}
+then you will need to replace this with either
+\begin{verbatim}
+\printglossaries
+\end{verbatim}
+or
+\begin{verbatim}
+\printglossary
+\printglossary[type=\acronymtype]
+\end{verbatim}
+
+The \styfmt{glossary} package allows you to specify a short title
+(for the table of contents and page header) by defining a command of
+the form \cs{short}\meta{glossary-type}\texttt{name}. The
+\styfmt{glossaries} package doesn't do this, but instead provides
+the \csopt{printglossary}{toctitle} key which can be used in the
+optional argument to \ics{printglossary}. For example, if you have
+created a new glossary type called \texttt{notation}, and you had
+defined
+\begin{verbatim}
+\newcommand{\shortnotationname}{Notation}
+\end{verbatim}
+then you would need to use the \csopt{printglossary}{toctitle} key:
+\begin{verbatim}
+\printglossary[type=notation,toctitle=Notation]
+\end{verbatim}
+The \styfmt{glossaries} package will ignore \ics{shortnotationname},
+so unless you have used it elsewhere in the document, you may as
+well remove the definition.
+
+\section{Processing Your Document}
+
+If you convert your document from using the \styfmt{glossary} package
+to the \styfmt{glossaries} package, you will need to delete any of
+the additional files, such as the \filetype{.glo} file, that were
+created by the \styfmt{glossary} package, as the \styfmt{glossaries}
+package uses a different format.
+Remember also, that if you used the \app{makeglos} Perl script,
+you will need to use the \app{makeglossaries} Perl script
+instead. As from v1.17, the \styfmt{glossaries} package can be
+used with either \app{makeindex} or \app{xindy}. Since
+\app{xindy} was designed to be multilingual, the
+new \styfmt{glossaries} package is a much better option for
+non-English documents. If you use the extension package,
+\sty{glossaries-extra}, then you also have the option of using
+\app{bib2gls} instead (which also provides multilingual support).
+
+For further information on using \app{makeglossaries},
+\app{makeindex} or \app{xindy} to create your glossaries, see
+\xrsectionref{sec:makeglossaries}{glossaries-user}{Generating the
+Associated Glossary Files}
+of the \styfmt{glossaries} documentation.
+
+\section{Troubleshooting}
+
+Please check the \urlfootref{http://www.dickimaw-books.com/faqs/glossariesfaq.html}{FAQ}
+for the \styfmt{glossaries} package if you have any
+problems.
+
+\PrintIndex
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/makeglossaries b/macros/latex/contrib/glossaries/makeglossaries
new file mode 100755
index 0000000000..643e36b3c1
--- /dev/null
+++ b/macros/latex/contrib/glossaries/makeglossaries
@@ -0,0 +1,1676 @@
+#!/usr/bin/env perl
+
+# File : makeglossaries
+# Author : Nicola Talbot
+# Version : 4.41
+# Description: simple Perl script that calls makeindex or xindy.
+# Intended for use with "glossaries.sty" (saves having to remember
+# all the various switches)
+
+# This file is distributed as part of the glossaries LaTeX package.
+# Copyright 2007 Nicola L.C. 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 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.dtx and glossaries.ins
+# and the derived files glossaries.sty, glossaries-prefix.sty,
+# glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty,
+# glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty,
+# glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty,
+# glossary-tree.sty, glossaries-compatible-207.sty,
+# glossaries-compatible-307.sty, glossaries-accsupp.sty,
+# glossaries-babel.sty, glossaries-polyglossia.sty, glossaries.perl.
+# Also makeglossaries and makeglossaries-lite.lua.
+
+my $version="4.41 (2018-07-23)";
+
+# History:
+# v4.41:
+# * No change.
+# v4.40:
+# * No change.
+# v4.39:
+# * No change.
+# v4.38:
+# * No change.
+# v4.37:
+# * No change.
+# v4.36:
+# * No change.
+# v4.35:
+# * No change.
+# v4.34:
+# * Added check for \glsxtr@resource
+# v4.33:
+# * Version number synchronized with glossaries.sty
+# v2.21:
+# * Fixed spelling of \GlsAddXdyLocation
+# * Adjusted range encap clash
+# v2.20 (2016/12/16)
+# * Added check for \glsxtr@makeglossaries
+# v2.19 (2016/05/27)
+# * Improved check in &parse_for_xindy_nosort
+# v2.18 (2016/01/24)
+# * Added &parse_for_xindy_nosort to help diagnose xindy's empty
+# index key warning/error.
+# * Added check for makeindex's multiple encap warning.
+# v2.17 (2015/11/30)
+# * Escaped { in regular expressions.
+# http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=101
+# v2.16 (2015/06/28)
+# * Added check for "german" and codepage that doesn't contain
+# "din5007", "duden" or "braille". If missing, "din5007-" is
+# prefixed to the codepage.
+# v2.15 (2014/07/30)
+# * Removed hard-coded three character extension assumption
+# www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=55
+# * Added message to indicate the number of ignored glossaries
+# when the extension is specified.
+# v2.14 (2014/03/06)
+# * Added -Q and -k options
+# v2.13 (2014/01/21)
+# * Added check for leading and trailing quotes in filename
+# v2.12 (2014/01/20)
+# * Added check for '*' in istfilename
+# * Fixed bug report
+# http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=33
+# * Added error text hashes
+# v2.11 (2014/01/17):
+# * Added check for backslashes in -x, -m and -d paths
+# * Added double-quotes around $appname in &run_app
+# v2.10 (2013/12/01):
+# * initialise $language to suppress warnings
+# v2.09 (2013-11-12):
+# * added check for -q switch when issuing warnings.
+# v2.08 (2013-10-14):
+# * added -x and -m options
+# v2.07 (2013-06-17):
+# * added check for success on chdir if -d used
+# * added dialect map
+# v2.06 (2013-04-21):
+# * added "din5007" as default if language is set to "german"
+# v2.05 (2012-11-12):
+# * added -d option
+# v2.04 (2012-04-19):
+# * fixed bug in &scan_aux
+# v2.03 (2011-04-12):
+# * added warning about possibly needing 'nomain' package option
+# v2.02 (2011-04-2):
+# * Prints version number at start of run unless -q
+# * Added more diagnostics.
+# v2.01 (2010-09-29):
+# * Added 'use warnings'
+# v2.0 (2010-06-30) :
+# * Made file handle local in &scan_aux
+# v1.9 (2010-06-14) :
+# * Check for \@input
+# v1.8 (2009-11-03) :
+# * Create an empty output file if the input file is empty
+# without calling xindy/makeindex
+# v1.7 (2009-09-23) :
+# * Issue warning rather than error when empty/non existant file
+# checks fail
+# v1.6 (2009-05-24) :
+# * main glossary no longer automatically added
+# (only added if information in aux file)
+# * if file extension is specified, check added to ensure it
+# corresponds to a known glossary extension.
+# * added file existance test and file empty test
+# v1.5 (2008-12-26) :
+# * added support for xindy
+# * picks up ordering information from aux file
+# v1.4 (2008-05-10) :
+# * added support for filenames with spaces.
+# v1.3 (2008-03-08) :
+# * changed first line from /usr/bin/perl -w to /usr/bin/env perl
+# (Thanks to Karl Berry for suggesting this.)
+# v1.2 (2008-03-02) :
+# * added support for --help and --version
+# * improved error handling
+# v1.1 (2008-02-13) :
+# * added -w and strict
+# * added check to ensure .tex file not passed to makeglossaries
+#
+# v1.0 (2007-05-10) : Initial release.
+
+use Getopt::Std;
+use strict;
+# v2.01 added the following line
+use warnings;
+# v2.05 added $opt_d
+# v2.08 added $opt_x and $opt_m
+use vars qw($opt_q $opt_t $opt_o $opt_s $opt_p $opt_g $opt_c $opt_r
+ $opt_l $opt_i $opt_L $opt_n $opt_C $opt_d $opt_x $opt_m $opt_Q
+ $opt_k);
+
+
+$Getopt::Std::STANDARD_HELP_VERSION = 1;
+
+# v1.5 added -L <lang> for xindy (but language can be specified in
+# .tex file)
+# v1.5 added -n (print the command that would be issued but
+# don't actually run the command)
+getopts('s:o:t:p:L:C:ilqQkrcgnd:x:m:');
+
+unless ($#ARGV == 0)
+{
+ die "makeglossaries: Need exactly one file argument.\n",
+ "Use `makeglossaries --help' for help.\n";
+}
+
+# v2.02: added:
+print "makeglossaries version $version\n" unless ($opt_q);
+
+# v2.07: added babel dialect -> xindy language map:
+my %languagemap =
+(
+ 'american' => 'english',
+ 'austrian' => 'german',
+ 'british' => 'english',
+ 'francais' => 'french',
+ 'frenchb' => 'french',
+ 'germanb' => 'german',
+ 'lsorbian' => 'lower-sorbian',
+ 'magyar' => 'hungarian',
+ 'naustrian' => 'german',
+ 'ngermanb' => 'german',
+ 'ngerman' => 'german', # v2.16
+ 'norsk' => 'norwegian',
+ 'portuges' => 'portuguese',
+ 'russianb' => 'russian',
+ 'slovene' => 'slovenian',
+ 'UKenglish' => 'english',
+ 'USenglish' => 'english',
+ 'ukraineb' => 'ukrainian',
+ 'usorbian' => 'upper-sorbian'
+);
+
+# v2.07 added check for success and for -q
+# v2.05 added:
+
+if ($opt_d)
+{
+ # v2.11 check for backslash character if on Windows
+ $opt_d=~s/\\/\//g if $^O=~/Win/;
+
+ if (chdir $opt_d)
+ {
+ print "Changed to '$opt_d'\n" unless ($opt_q);
+ }
+ else
+ {
+ die "Unable to chdir to '$opt_d' $!\n";
+ }
+}
+
+# v2.02: added:
+# v2.19: changed value
+my $xdynotist = 2;
+# v2.13: removed
+#my $needcompatibilitymode=2;
+
+# v2.13: added $istnotfound
+my $istnotfound = 3;
+
+# v2.13: added error text:
+my %makeindex_error_text =
+ (
+ $xdynotist => "Style name indicates makeindex, but may be in xindy format.\n"
+ . "Remember to use \\setStyleFile to specify the name\n"
+ . "of the style file rather than redefining \\istfilename\n"
+ . "explicitly.",
+ $istnotfound => "Style file not found. (Have you used \\noist by mistake?)"
+ );
+
+my %xindy_error_text =
+ (
+ 'nosort' => "Sort key required for entries only containing command names.",
+ 'istnotxdy' =>
+ "Style name has xdy extension, but may be in makeindex format.\n"
+ . "Remember to use \\setStyleFile to specify the name\n"
+ . "of the style file rather than redefining \\istfilename\n"
+ . "explicitly.",
+ 'missingendquote' =>
+ "You may have missed a \" character in a command such as \\GlsAddXdyLocation.",
+ 'nolanguage' =>
+ "No language detected.\nHave you remembered to use \\printglossary\n".
+ "or \\printglossaries in your document?",
+ 'nomain' =>
+ "\nRemember to use package option 'nomain' if you don't\n".
+ "want to use the main glossary.",
+#v2.21: fixed spelling of \GlsAddXdyLocation
+ 'badlocation' =>
+ "You may have forgotten to add a location \n"
+ . "class with \\GlsAddXdyLocation or you may have \n"
+ . "the format incorrect.\n",
+ 'comp207' => "You may need to add 'compatible-2.07' package option.",
+ 'noxdyfile' => "Style file not found. (Have you used \\noist by mistake?)"
+ );
+
+# define known extensions
+
+# v1.6: removed adding main glossary here as there's no guarantee
+# that it's been used. If it has been used, the information will
+# be picked up later in the aux file
+my %exttype = (
+# main => {in=>'glo', out=>'gls', 'log'=>'glg'},
+ );
+
+# v1.5 define require languages for xindy
+
+my %language = ();
+my %codepage = ();
+
+my $ext = '';
+my $name = $ARGV[0];
+
+# v2.13 added:
+#$name=~s/^"(.*)"$/$1/;
+# v2.15: fix provided by Herb Schulz to allow for extensions that
+# aren't exactly three characters:
+# (HS) changes fix for 3 character extension limit
+my ($basename,$extension) = ($name =~ m/^(.*?)(?:\.([^\.]*))?$/);
+# (HS) end of changes fix for 3 character extension limit
+
+# make sure $extension is defined. (If there was no match in the
+# above, it cause an uninitialised error later.)
+$extension = '' unless ($extension);
+
+# Make sure users don't try passing the tex file:
+
+#if (length($ARGV[0]) > 3 and substr($ARGV[0],-4,1) eq ".")
+#{
+# $name = substr($ARGV[0],0,length($ARGV[0])-4);
+#
+# $ext = substr($ARGV[0],-3,3);
+#
+# if (lc($ext) eq 'tex')
+# (HS) changes fix for 3 character extension limit
+#if (length($ARGV[0]) > 3 and substr($ARGV[0],-4,1) eq ".")
+#{
+# $name = substr($ARGV[0],0,length($ARGV[0])-4);
+#
+# $ext = substr($ARGV[0],-3,3);
+#
+# if (lc($ext) eq 'tex')
+ if (lc($extension) eq 'tex')
+ {
+ die("Don't pass the tex file to makeglossaries:\n"
+ ."either omit the extension to make all the glossaries, "
+ ."or specify one of the glossary files, e.g. $name.glo, to "
+ ."make just that glossary.\n")
+ }
+#}
+# (HS) end of fix for 3 character extension limit
+
+# (HS) changes fix for 3 character extension limit
+$ext = $extension;
+$name = $basename;
+# (HS) end of changes fix for 3 character extension limit
+
+# v2.01 add check to see if aux file exists
+
+unless (-e "$name.aux")
+{
+ die "Auxiliary file '$name.aux' doesn't exist. Have you run LaTeX?\n";
+}
+
+my $istfile = "";
+
+my $glslist = "";
+
+# should letter ordering be used? (v1.5 added)
+
+my $letterordering = defined($opt_l);
+
+# v2.19 added:
+my $extramkidxopts = '';
+
+# v4.34 added:
+my $foundbib2glsresource = '';
+
+# Check aux file for other glossary types,
+# style file name and various other bits of information.
+
+&scan_aux($name);
+
+# has the style file been specified?
+unless ($istfile)
+{
+ if ($foundbib2glsresource)
+ {
+ die "Found \\glsxtr\@resource in '$name.aux',\n",
+ "but not found \\\@istfilename.\n",
+ "You need to run bib2gls not makeglossaries.\n";
+ }
+ else
+ {
+ die "No \\\@istfilename found in '$name.aux'.\n",
+ "Did your LaTeX run fail?\n",
+ "Did your LaTeX run produce any output?\n",
+ "Did you remember to use \\makeglossaries?\n";
+ }
+}
+
+# v2.08 added $xindyapp and $makeindexapp
+# By default assume they are on the operating system's path
+my $xindyapp = ($opt_x ? $opt_x :'xindy');
+my $makeindexapp = ($opt_m ? $opt_m :'makeindex');
+
+# v2.11 check for backslash character if on Windows
+if ($^O=~/Win/)
+{
+ $xindyapp=~s/\\/\//g;
+ $makeindexapp=~s/\\/\//g;
+}
+
+# v1.5 save the general xindy switches
+
+my $xdyopts = '';
+
+# v2.01 replaced 'unless ($opt_L eq "")' with 'if ($opt_L)'
+if ($opt_L)
+{
+ $xdyopts .= " -L $opt_L";
+}
+
+# save all the general makeindex switches
+
+my $mkidxopts = '';
+
+if ($opt_i)
+{
+ $mkidxopts .= " -i";
+}
+
+if ($letterordering)
+{
+ $mkidxopts .= " -l";
+ $xdyopts .= " -M ord/letorder";
+}
+
+if ($opt_q)
+{
+# v2.01 removed following lines. (This script now deals with
+# printing messages to STDOUT.)
+ #$mkidxopts .= " -q";
+ #$xdyopts .= " -q";
+}
+
+if ($opt_r)
+{
+ $mkidxopts .= " -r";
+}
+
+if ($opt_c)
+{
+ $mkidxopts .= " -c";
+}
+
+if ($opt_g)
+{
+ $mkidxopts .= " -g";
+}
+
+# v2.01 replaced 'unless ($opt_p eq "")' with 'if ($opt_p)'
+if ($opt_p)
+{
+ $mkidxopts .= " -p $opt_p";
+}
+
+if ($extramkidxopts)
+{
+ $mkidxopts .= " $extramkidxopts";
+}
+
+# v2.01 replaced 'unless ($opt_s eq "")' with 'if ($opt_s)'
+if ($opt_s)
+{
+ # v2.01 check if user has specified -s <file>.ist but aux file
+ # indicates .xdy ought to be used and vice-versa. Also check if
+ # requested style file exists
+
+ unless (-e $opt_s)
+ {
+ die "\n",
+ "Requested style file '$opt_s' doesn't exist.\n\n";
+ }
+
+ if ($istfile=~/\.xdy$/ and $opt_s!~/\.xdy$/)
+ {
+ die "\n",
+ "The auxiliary file indicates that you should be using xindy,\n",
+ "but you have specified makeindex style file '$opt_s'\n",
+ "Make sure you don't specify 'xindy' as a package option if\n",
+ "you want to use makeindex.\n\n",
+ "\\usepackage[makeindex]{glossaries}\n\n";
+ }
+ elsif ($istfile!~/\.xdy$/ and $opt_s=~/\.xdy$/)
+ {
+ die "\n",
+ "The auxiliary file indicates that you should be using\n",
+ "makeindex, but you have specified xindy style file '$opt_s'.\n",
+ "Make sure you specify 'xindy' as a package option if you\n",
+ "want to use xindy.\n\n",
+ "\\usepackage[xindy]{glossaries}\n\n";
+ }
+
+ $istfile = $opt_s;
+}
+
+# Use xindy if style file ends with .xdy otherwise use makeindex
+
+my $usexindy = ($istfile=~m/\.xdy\Z/);
+
+if ($ext)
+{
+ # an extension has been specified, so only process
+ # the specified file
+
+ # v1.6 %thistype is no longer given a default value
+ my %thistype;
+
+ my $thislang = "";
+ my $thiscodepage = "";
+
+ my @types = ($glslist ? split /,/, $glslist : keys %exttype);
+
+ foreach my $type (@types)
+ {
+ if ($exttype{$type}{'in'} eq $ext)
+ {
+ %thistype = %{$exttype{$type}};
+
+ $thislang = $language{$type};
+
+ $thiscodepage = $codepage{$type};
+
+ last;
+ }
+ }
+
+ # v1.6 If %thistype hasn't been defined, then the given
+ # extension doesn't correspond to any known glossary type
+
+ # v2.01 replaced deprecated 'defined(%thistype)' with %thistype
+ unless (%thistype)
+ {
+ die "The file extension '$ext' doesn't correspond to any\n",
+ "known glossary extension. Try running makeglossaries\n",
+ "without an extension, e.g. makeglossaries \"$name\".\n";
+ }
+
+ my $outfile;
+
+# v2.01 replaced 'if ($opt_o eq "")' with 'unless ($opt_o)'
+ unless ($opt_o)
+ {
+ $outfile = "$name.$thistype{out}";
+ }
+ else
+ {
+ $outfile = $opt_o;
+ }
+
+ my $transcript;
+
+# v2.01 replaced 'if ($opt_t eq "")' with 'unless ($opt_t)'
+ unless ($opt_t)
+ {
+ $transcript = "$name.$thistype{'log'}";
+ }
+ else
+ {
+ $transcript = $opt_t;
+ }
+
+# v2.01 remove old transcript file
+
+ unless ($opt_n)
+ {
+ unlink($transcript);
+ }
+
+ if ($usexindy)
+ {
+ &xindy("$name.$ext", $outfile, $transcript,$istfile,
+ $thislang, $thiscodepage, $xdyopts, $opt_q, $opt_n, $xindyapp);
+ }
+ else
+ {
+ &makeindex("$name.$ext",$outfile,$transcript,$istfile,
+ $mkidxopts,$opt_q, $opt_n, $makeindexapp, 1);
+ }
+
+
+ # v2.15 added:
+
+ my $num_omitted = $#types;
+
+ if ($num_omitted == 1)
+ {
+ print "1 glossary ignored.\n" unless $opt_q;
+ }
+ elsif ($num_omitted > 1)
+ {
+ print "$num_omitted glossaries ignored.\n" unless $opt_q;
+ }
+}
+else
+{
+ # no file extension specified so process all glossary types
+
+ my @types = ($glslist ? split /,/, $glslist : keys %exttype);
+
+ foreach my $type (@types)
+ {
+ my %thistype = %{$exttype{$type}};
+
+ my $inputfile = "$name.$thistype{in}";
+
+ my $outfile;
+
+# v2.01 changed 'if ($opt_o eq "")' with 'unless ($opt_o)'
+ unless ($opt_o)
+ {
+ $outfile = "$name.$thistype{out}";
+ }
+ else
+ {
+ $outfile = $opt_o;
+ }
+
+ # v1.7 print warnings to STDOUT instead of STDERR
+
+ # v1.6 added file existence test
+ unless (-e $inputfile)
+ {
+ # v2.09 suppress warning if -q switch in use
+ print "Warning: File '$inputfile' doesn't exist.\n",
+ "*** Skipping glossary '$type'. ***\n" unless ($opt_q);
+ next;
+ }
+
+ unless (-r $inputfile)
+ {
+ print "Warning: No read access for '$inputfile' $!\n",
+ "*** Skipping glossary '$type'. ***\n" unless ($opt_q);
+ next;
+ }
+
+ my $transcript;
+
+# v2.01 changed 'if ($opt_t eq "")' with 'unless ($opt)'
+ unless ($opt_t)
+ {
+ $transcript = "$name.$thistype{'log'}";
+ }
+ else
+ {
+ $transcript = $opt_t;
+ }
+
+ # v1.6 added file empty test
+ if (-z $inputfile)
+ {
+ my $message =
+ "Warning: File '$inputfile' is empty.\n".
+ "Have you used any entries defined in glossary '$type'?\n";
+
+ if ($type eq 'main')
+ {
+ $message .=
+ "Remember to use package option 'nomain' if you\n".
+ "don't want to use the main glossary.\n";
+ }
+
+ # v2.09 suppress warning if -q switch in use
+ warn $message unless $opt_q;
+
+ # Write warning to transcript file.
+
+ if (open TRANSFD, ">$transcript")
+ {
+ print TRANSFD $message;
+ close TRANSFD;
+ }
+
+ # create an empty output file and move on to the next glossary
+
+ if (open OFD, ">$outfile")
+ {
+ print OFD "\\null\n";
+ close OFD;
+ }
+ else
+ {
+ warn "Unable to create '$outfile' $!\n";
+ }
+
+ next;
+ }
+
+# v2.01 remove old transcript file
+
+ unless ($opt_n)
+ {
+ unlink($transcript);
+ }
+
+ if ($usexindy)
+ {
+ &xindy($inputfile,$outfile,$transcript,$istfile,
+ $language{$type},$codepage{$type},
+ $xdyopts,$opt_q,$opt_n, $xindyapp);
+ }
+ else
+ {
+ &makeindex($inputfile,$outfile,$transcript,
+ $istfile,$mkidxopts,$opt_q,$opt_n, $makeindexapp, 1);
+ }
+ }
+}
+
+sub scan_aux{
+ my $name = shift;
+
+ # v2.0 added
+ local(*AUXFILE);
+
+ if (open AUXFILE, "$name.aux")
+ {
+ while (<AUXFILE>)
+ {
+ #v2.14 added
+ if (m/\\\@gls\@reference/ and not $glslist)
+ {
+ die "Your document has used \\makenoidxglossaries\n",
+ "You don't need makeindex or xindy.\n";
+ }
+
+ if (m/\\glsxtr\@makeglossaries\{(.*)\}/)
+ {
+ #v2.20 added
+
+ $glslist = $1;
+
+ unless ($opt_q)
+ {
+ print "only processing subset '$glslist'\n";
+ }
+ }
+ elsif (m/\\\@input\{(.+)\.aux\}/)
+ {
+ # v1.9 added
+ # v2.17 escaped { in regex
+ &scan_aux($1);
+
+ # v2.04 added
+ # (Fix provided by Daniel Grund)
+ next;
+ }
+ elsif (m/\\\@newglossary\s*\{(.*)\}\{(.*)\}\{(.*)\}\{(.*)\}/)
+ {
+ # v2.17 escaped { in regex
+
+ $exttype{$1}{'log'} = $2;
+ $exttype{$1}{'out'} = $3;
+ $exttype{$1}{'in'} = $4;
+
+ unless ($opt_q)
+ {
+ print "added glossary type '$1' ($2,$3,$4)\n";
+ }
+ }
+ elsif (m/\\\@istfilename\s*\{([^}]*)\}/)
+ {
+ # v2.17 escaped { in regex
+
+ $istfile = $1;
+
+ # check if double quotes were added to \jobname
+ # v2.12 added check for xdy (bug ID 33)
+ $istfile=~s/^"(.*)"\.(ist|xdy)$/$1.$2/;
+
+ # v2.12 if on Windows, substitute any '*' with ' '
+ # to compensate for MiKTeX bug
+ # http://sourceforge.net/p/miktex/bugs/2301/
+
+ if ($^O=~/Win/)
+ {
+ $istfile=~tr/\*/ /;
+ }
+ }
+ elsif (m/\\\@xdylanguage\s*\{([^}]+)\}\{([^}]*)\}/)
+ {
+ # v1.5 added
+ # v2.17 escaped { in regex
+
+ $language{$1} = $2;
+ }
+ elsif (m/\\\@gls\@codepage\s*\{([^}]+)\}\{([^}]*)\}/)
+ {
+ # v1.5 added
+ # v2.17 escaped { in regex
+
+ $codepage{$1} = $2;
+ }
+ elsif (m/\\\@gls\@extramakeindexopts\{(.*)\}/)
+ {
+ # v2.19 added
+
+ $extramkidxopts .= $1;
+ }
+ elsif (m/\\glsxtr\@resource/)
+ {
+ # v4.34 added
+
+ # No error at this point as a hybrid method is allowed.
+ # Error only occurs if no \@istfilename found.
+
+ $foundbib2glsresource = 1;
+ }
+
+ # v1.5 added
+ # Allow -l switch to override specification in aux file
+ unless (defined($opt_l))
+ {
+ # v2.17 escaped { in regex
+ if (m/\\\@glsorder\s*\{([^}]+)\}/)
+ {
+ my $ordering = $1;
+
+ if ($ordering eq "word")
+ {
+ $letterordering = 0;
+ }
+ elsif ($ordering eq "letter")
+ {
+ $letterordering = 1;
+ }
+ else
+ {
+ warn
+ "Unknown ordering '$ordering'\n",
+ "Assuming word ordering\n" unless ($opt_q);
+ $letterordering = 0;
+ }
+ }
+ }
+ }
+
+ close AUXFILE;
+ }
+ else
+ {
+ warn "Unable to open $name.aux: $!\n";
+ }
+}
+
+# v2.01 new subroutine run_app added
+sub run_app{
+ my($appname, $appargs, $trans, $quiet, $dontexec) = @_;
+
+ local(*STATUS);
+
+ my $status = '';
+ my $warnings = '';
+ my $errno = 0;
+ my $log = '';
+
+ print "$appname $appargs\n" if ($dontexec or not $quiet);
+
+ return if ($dontexec);
+
+ # v2.11 added double-quotes around $appname
+ # v2.14 added -k switch
+ if (not $opt_k and open (STATUS, "\"$appname\" $appargs 2>&1 |"))
+ {
+ while (<STATUS>)
+ {
+ print unless ($quiet);
+
+ $warnings .= $_ if (/WARNING:/);
+
+ $status .= $_ unless (/^[\w]+ing/ or /^Finished/ or /^Usage:/);
+
+ $log .= $_;
+ }
+
+ close STATUS;
+ }
+ else
+ {
+ unless ($opt_k)
+ {
+ $warnings = "Unable to fork \"$appname\" with redirection $!\n";
+
+ # v2.14 added check for quiet switches
+ warn $warnings,
+ "Retrying without redirection.\n" unless ($quiet or $opt_Q);
+ }
+
+ $status = `\"$appname\" $appargs`;
+
+ $log = $status;
+
+ print $status unless ($quiet);
+ }
+
+ if ($?)
+ {
+ # v2.14 Fixed error number assignment
+ $errno = ($? >> 8);
+
+ # v2.14 Added check for existence of transcript
+ unless (-e $trans)
+ {
+ $log .= "\n$appname didn't create a transcript.\n";
+
+ if (not $appname=~/\//)
+ {
+ # No path specified
+ $log .= "Check that $appname has been installed and\nis on your system's PATH.\n";
+
+ if (defined $ENV{PATH})
+ {
+ $log .= "Your PATH environment variable is set to: \n"
+ . $ENV{PATH} . "\n";
+ }
+ else
+ {
+ $log .= "I'm sorry, I can't detect your PATH environment variable\n";
+ }
+
+ $log .= "Try manually running:\n\"$appname\" $appargs\n";
+ }
+ elsif (not -e $appname)
+ {
+ if ($^O=~/Win/)
+ {
+ if (-e "$appname.exe" or -e "$appname.bat")
+ {
+ $log .= "Try manually running:\n\"$appname\" $appargs\n";
+ }
+ else
+ {
+ $log .= "File '$appname' doesn't exist.\n";
+ }
+ }
+ else
+ {
+ $log .= "File '$appname' doesn't exist.\n";
+ }
+ }
+ else
+ {
+ $log .= "Try manually running:\n\"$appname\" $appargs\n";
+ }
+ }
+
+ if (open LOGFILE, ">>$trans")
+ {
+ print LOGFILE "\n\n*** Unable to execute: '\"$appname\" $appargs' ***\n\n";
+ print LOGFILE "Failed with error code $errno.\n\n";
+
+ if ($log)
+ {
+ print LOGFILE "Status report:\n\n";
+ print LOGFILE "$log", "\n";
+ }
+
+ print LOGFILE "Warnings:\n\n",$warnings, "\n" if $warnings;
+ close LOGFILE;
+ }
+ else
+ {
+ warn "Unable to open '$trans' $!\n";
+ }
+ }
+
+ if ($log=~/\(0 entries accepted,/
+ or ( ($log=~/(\d+) warnings?/ and $1 gt 0))
+ or $log=~/not found/)
+ {
+ # Attempt to diagnose what's gone wrong
+
+ if (open TRANS, $trans)
+ {
+ while (<TRANS>)
+ {
+ if (/Index style file .* not found/)
+ {
+ $errno = $istnotfound;
+ last;
+ }
+ elsif (/Unknown specifier ;/)
+ {
+ $errno = $xdynotist;
+ last;
+ }
+ elsif (/## Warning \(.*\):\s*$/)
+ {
+ $warnings .= $_ . <TRANS>;
+ }
+ }
+
+ close TRANS;
+ }
+
+ }
+
+ return ($status, $warnings, $errno);
+}
+
+# v2.08 added $app parameter
+sub makeindex{
+ my($in,$out,$trans,$ist,$rest,$quiet,$dontexec,$app,$repairencaps) = @_;
+
+ my $args = "$rest -s \"$ist\" -t \"$trans\" -o \"$out\" \"$in\"";
+
+# v2.01 replaced code with call to &run_app
+
+ my ($status, $warnings, $errno)
+ = &run_app($app, $args, $trans, $quiet, $dontexec);
+
+ return if ($dontexec);
+
+ if ($errno)
+ {
+ my $diagnostic = '';
+
+ if ($makeindex_error_text{$errno})
+ {
+ $diagnostic = $makeindex_error_text{$errno};
+ }
+ else
+ {
+ $diagnostic = "Can't find diagnostic message for error code $errno";
+ }
+
+ if (open LOGFILE, ">>$trans")
+ {
+ print LOGFILE "\nmakeglossaries diagnostic messages:\n$diagnostic\n";
+ close LOGFILE;
+ }
+
+ die "\n***Call to makeindex failed***\n",
+ ($diagnostic ?
+ "\nPossible cause of problem:\n\n". $diagnostic . "\n\n":
+ "\n"
+ ),
+ "Check '$trans' for details\n";
+ }
+
+ # 2.18: added check and repair for multiple encaps
+ if ($warnings)
+ {
+ warn $warnings unless $quiet;
+
+ if ($repairencaps and $warnings=~/multiple encaps/)
+ {
+ unless ($quiet)
+ {
+ print "Multiple encaps detected. Attempting to remedy.\n";
+ print "Reading $in...\n";
+ }
+
+ # if $in can't be opened at this point something wrong
+ # has occurred (otherwise how did makeindex manage to open
+ # it?)
+
+ open INFD, $in or die "Can't open '$in' $!\n";
+
+ my @entries = ();
+
+ while (<INFD>)
+ {
+ if (/\\glossaryentry\{(.*)\|([^\|]*)\}\{(.*?)\}/)
+ {
+ my %entry =
+ (
+ 'entry' => $1,
+ 'encap' => $2,
+ 'location' => $3
+ );
+
+ my $add = 1;
+
+ for (my $idx = 0; $idx <= $#entries; $idx++)
+ {
+ my $existing = $entries[$idx];
+
+ if ($entry{'entry'} eq $existing->{'entry'}
+ and $entry{'location'} eq $existing->{'location'}
+ and $entry{'encap'} ne $existing->{'encap'})
+ {
+ $add = 0 if ($add == 1);
+
+ # Range encaps should take precedence.
+
+ if ($entry{'encap'}=~/^[\(\)]/)
+ {
+ $add = 2;
+
+ if ($existing->{'encap'}=~/^[\(\)]/)
+ {
+ # too complicated, keep both
+
+ last;
+ }
+ else
+ {
+ # remove existing
+
+ splice @entries, $idx, 1;
+
+ $idx--;
+ }
+ }
+ elsif ($existing->{'encap'}=~/^[\(\)]/)
+ {
+ if ($entry{'encap'}=~/^[\(\)]/)
+ {
+ # too complicated, keep both
+
+ $add = 1;
+ last;
+ }
+ # (otherwise drop new entry)
+ }
+ elsif (&encap_overrides($entry{'encap'},
+ $existing->{'encap'}))
+ {
+ $entries[$idx] = \%entry;
+ }
+ }
+ }
+
+ push @entries, \%entry if $add > 0;
+ }
+ else
+ {
+ warn "Abandoning attempt. Can't parse: $_" unless $quiet;
+
+ close INFD;
+ return;
+ }
+ }
+
+ close INFD;
+
+ if (open OUTFD, ">$in")
+ {
+ print "Writing $in...\n" unless $quiet;
+
+ foreach my $entry (@entries)
+ {
+ print OUTFD '\\glossaryentry{',
+ $entry->{'entry'}, '|',
+ $entry->{'encap'}, '}{',
+ $entry->{'location'}, '}', "\n";
+ }
+
+ close OUTFD;
+
+ print "Retrying\n" unless $quiet;
+
+ &makeindex($in,$out,$trans,$ist,$rest,$quiet,$dontexec,$app,0);
+ }
+ else
+ {
+ warn "Can't open '$in' $!\n" unless $quiet;
+ }
+ }
+ }
+}
+
+# 2.18 new
+# This is a subroutine in case of possible extension.
+# For example, what happens in the event of 'textbf' and 'emph'?
+# Should one override the other or be combined? Combining is harder
+# as it would need a corresponding LaTeX command.
+# 2.21 check for range encap moved earlier
+
+sub encap_overrides{
+ my ($newencap, $existing) = @_;
+
+ ($existing=~/\\glsnumberformat\s*$/ or $newencap!~/\\glsnumberformat\s*$/ )
+}
+
+# v2.08 added $app parameter
+sub xindy{
+ my($in,$out,$trans,$ist,$language,$codepage,$rest,$quiet,
+ $dontexec, $app) = @_;
+ my($args, $langparam, $main, $retry);
+ my($module);
+
+ $module = $ist;
+ $module=~s/\.xdy\Z//;
+
+ if ($language)
+ {
+ # map babel names to xindy names
+
+ $language = $languagemap{$language} if ($languagemap{$language});
+
+ $langparam = "-L $language";
+ }
+ else
+ {
+ $langparam = "";
+ # v2.10 initialise $language to suppress warnings
+ $language = "";
+ }
+
+ # most languages work with xindy's default codepage, but
+ # some don't, so if the codepage isn't specific, check
+ # the known cases that will generate an error
+ # and supply a default. (For all other cases, it's up to the
+ # user to supply a codepage.)
+
+# v2.01 changed 'if ($codepage eq "")' to 'unless ($codepage)'
+ unless ($codepage)
+ {
+ if ($language eq 'dutch')
+ {
+ $codepage = "ij-as-ij";
+ }
+ elsif ($language eq 'german')
+ {
+ $codepage = "din5007";
+ }
+ elsif ($language eq 'gypsy')
+ {
+ $codepage = "northrussian";
+ }
+ elsif ($language eq 'hausa')
+ {
+ $codepage = "utf";
+ }
+ elsif ($language eq 'klingon')
+ {
+ $codepage = "utf";
+ }
+ elsif ($language eq 'latin')
+ {
+ $codepage = "utf";
+ }
+ elsif ($language eq 'mongolian')
+ {
+ $codepage = "cyrillic";
+ }
+ elsif ($language eq 'slovak')
+ {
+ $codepage = "small";
+ }
+ elsif ($language eq 'spanish')
+ {
+ $codepage = "modern";
+ }
+ elsif ($language eq 'vietnamese')
+ {
+ $codepage = "utf";
+ }
+ }
+ elsif ($language eq 'german' and $codepage!~/(din5007|duden|braille)/)
+ {
+#v2.16 added check for german din/duden
+
+ $codepage = "din5007-$codepage";
+ }
+
+
+ my $codepageparam = "";
+
+ if ($codepage)
+ {
+ $codepageparam = "-C $codepage";
+ }
+
+ $main = join(' ',
+ "-I xindy",
+ "-M \"$module\"",
+ "-t \"$trans\"",
+ "-o \"$out\"",
+ "\"$in\"");
+
+ $args = join(' ', $rest, $langparam, $codepageparam, $main);
+
+# v2.01 replaced code with call to &run_app
+
+ my ($status, $warnings, $errno)
+ = &run_app($app, $args, $trans, $quiet, $dontexec);
+
+ return if ($dontexec);
+
+ if ($status=~/Cannot locate xindy module for language ([^\s]+) in codepage ([^\s]+)/)
+ {
+ $args = join(' ', $rest, $langparam, $main);
+
+ unless ($quiet)
+ {
+ my $message = "$&\nRetrying using default codepage.\n";
+
+ warn $message;
+
+ $retry .= $message;
+ }
+
+ ($status, $warnings, $errno)
+ = &run_app('xindy', $args, $trans, $quiet, $dontexec);
+
+ }
+
+ if ($status=~/Cannot locate xindy module for language ([^\s]+)/
+ and $1 ne 'general')
+ {
+ $args = join(' ', $rest, "-L general", $main);
+
+ unless ($quiet)
+ {
+ my $message = "$&\nRetrying with -L general\n";
+
+ warn $message;
+ $retry .= $message;
+ }
+
+ ($status, $warnings, $errno)
+ = &run_app('xindy', $args, $trans, $quiet, $dontexec);
+
+ }
+
+ if ($errno)
+ {
+ # attempt further diagnostic
+
+ my $diagnostic = '';
+
+ if ($status=~/index 0 should be less than the length of the string/m)
+ {
+ $diagnostic = $xindy_error_text{nosort};
+
+ $diagnostic .= &parse_for_xindy_nosort($in);
+ }
+ elsif ($status=~/variable .+ has no value/m)
+ {
+ # v2.19 fixed misspelt key
+ $diagnostic = $xindy_error_text{istnotxdy};
+ }
+ elsif ($status=~/Could not find file /m)
+ {
+ # v2.19 added
+ $diagnostic = $xindy_error_text{noxdyfile};
+ }
+ elsif ($status=~/Possible read-error due to ill-formed string " :sep/m)
+ {
+ $diagnostic = $xindy_error_text{missingendquote};
+ }
+ elsif (not $language)
+ {
+ # If the language hasn't been set, then it may be
+ # because the document doesn't contain
+ # \printglossaries/\printglossary or it may be
+ # because the user has a customized style file that
+ # contains the language settings.
+
+ $diagnostic = $xindy_error_text{nolanguage};
+
+ if ($in eq 'glo')
+ {
+ # or it may be that the user doesn't want to use the main
+ # glossary and has forgotten to suppress it with the
+ # "nomain" package option
+
+ $diagnostic .= $xindy_error_text{nomain};
+ }
+ }
+
+ # v2.19 added:
+ if ($diagnostic and open LOGFILE, ">>$trans")
+ {
+ print LOGFILE "\nmakeglossaries diagnostic messages:\n\n$diagnostic\n";
+ close LOGFILE;
+ }
+
+ die "\n***Call to xindy failed***\n",
+ ($diagnostic ?
+ "\nPossible cause of problem:\n\n". $diagnostic . "\n\n":
+ "\n"),
+ "Check '$trans' for details\n";
+ }
+
+ # Check xindy warnings
+
+ if ($status=~/^WARNING:/m)
+ {
+ my $diagwarn = '';
+
+ if ($status=~/did not match any location-class/m)
+ {
+ $diagwarn = $xindy_error_text{badlocation};
+ }
+
+ if ($status=~/unknown attribute `pageglsnumberformat'/m)
+ {
+ $diagwarn .= $xindy_error_text{comp207};
+ }
+
+ if ($status=~/Would replace complete index key by empty string, ignoring/m)
+ {
+ $diagwarn .= $xindy_error_text{nosort};
+ $diagwarn .= &parse_for_xindy_nosort($in);
+ }
+
+ if ($diagwarn)
+ {
+ warn "\n**Warning:**\n\n", $diagwarn, "\n";
+
+ $warnings .= "\nmakeglossaries diagnostic messages:\n\n"
+ . $diagwarn;
+ }
+ }
+
+ if ($retry or $warnings)
+ {
+ if (open LOGFILE, ">>$trans")
+ {
+ print LOGFILE "\n$warnings";
+
+ if ($retry)
+ {
+ print LOGFILE "\nmakeglossaries messages:\n\n", $retry;
+ }
+
+ close LOGFILE;
+ }
+ else
+ {
+ warn "Unable to open '$trans' $!\n";
+ }
+ }
+}
+
+# v2.18 added:
+sub parse_for_xindy_nosort{
+ my ($in) = @_;
+
+ my $msg = join("\n", "",
+ "Attempting to determine which entries have problem sort keys.",
+ "Parsing '$in'");
+
+ my %entries = ();
+
+ if (open FD, $in)
+ {
+ while (<FD>)
+ {
+# v2.19 extra conditions added
+ if (/:tkey \(\("((?:\\\\[a-zA-Z@]+ *)+)" "\\\\glossentry\{(.*)\}"\) \)/)
+ {
+ my $label = $2;
+
+ unless ($entries{$label})
+ {
+ $entries{$label}->{sort} = $label;
+ $entries{$label}->{suggestion} = $label;
+ $entries{$label}->{suggestion}=~s/([\\\s]+)//g;
+
+ }
+ }
+ elsif (/:tkey \(\("(\\\\[a-zA-Z@]+ *{(?:\\\\[a-zA-Z@]+ *)+})+" "\\\\glossentry\{(.*)\}"\) \)/)
+ {
+# name in the form \cs{\cs}
+ my $label = $2;
+
+ unless ($entries{$label})
+ {
+ $entries{$label}->{sort} = $1;
+ $entries{$label}->{suggestion} = $label;
+ $entries{$label}->{suggestion}=~s/^[a-zA-Z]+[:\-\.]//;
+ $entries{$label}->{suggestion}=~s/([^\w]+)//g;
+ }
+ }
+ elsif (/:tkey \(\("(\$\s*(?:\{?\\\\[a-zA-Z@]+ *\}?)+\$)" "\\\\glossentry\{(.*)\}"\) \)/)
+ {
+# name in the form $\cs$
+ my $label = $2;
+
+ unless ($entries{$label})
+ {
+ $entries{$label}->{sort} = $1;
+ $entries{$label}->{suggestion} = $label;
+ $entries{$label}->{suggestion}=~s/^[a-zA-Z]+[:\-\.]//;
+ $entries{$label}->{suggestion}=~s/([^\w]+)//g;
+ }
+ }
+ }
+
+ close FD;
+
+ my @labels = keys %entries;
+
+ my $n = $#labels+1;
+
+ if ($n == 0)
+ {
+ $msg .= "\nCouldn't find anything! Sorry, I'm stumped.";
+ }
+ else
+ {
+ $msg .= ($n == 1 ? "\n1 problematic entry found:\n"
+ : "\n$n problematic entries found:\n");
+
+ foreach my $label (@labels)
+ {
+ my $thisentry = $entries{$label};
+
+ $msg .= "\nLabel: '$label'. Sort value : '$thisentry->{sort}'";
+ $msg .= "\n(Try adding sort={$thisentry->{suggestion}} to the definition.)";
+ }
+ }
+ }
+ else
+ {
+ $msg .= "\nFailed to open '$in' $!\n";
+ }
+
+ $msg;
+}
+
+sub HELP_MESSAGE{
+ print "\nSyntax : makeglossaries [options] <filename>\n\n";
+ print "For use with the glossaries package to pass relevant\n";
+ print "files to makeindex or xindy.\n\n";
+ print "<filename>\tBase name of glossary file(s). This should\n";
+ print "\t\tbe the name of your main LaTeX document without any\n";
+ print "\t\textension.\n";
+ print "\nGeneral Options:\n\n";
+ print "-o <gls>\tUse <gls> as the output file.\n";
+ print "\t\t(Don't use -o if you have more than one glossary.)\n";
+ print "-q\t\tQuiet mode.\n";
+ print "-Q\t\tSilence unable to fork warning.\n";
+ print "-k\t\tDon't try to use piped redirection.\n";
+ print "-l\t\tLetter ordering.\n";
+ print "-s <sty>\tEmploy <sty> as the style file.\n";
+ print "-t <log>\tEmploy <log> as the transcript file.\n";
+ print "\t\t(Don't use -t if you have more than one glossary\n";
+ print "\t\tor the transcripts will be overwritten.)\n";
+ print "-d <directory>\tDirectory in which the .aux, .glo etc files are located.\n",
+ "\t\t(Default is the directory in which <filename> resides.)\n";
+ print "-n\t\tPrint the command that would normally be executed,\n",
+ "\t\tbut don't execute it.\n";
+
+ print "\nXindy Options:\n\n";
+ print "-L <language>\tUse <language>.\n";
+ print "-x <file>\tFull path to xindy executable.\n",
+ "\t\t(Default assumes xindy is on the operating system's path.)\n";
+
+ print "\nMakeindex Options:\n";
+ print "(See makeindex documentation for further details on these ";
+ print "options.)\n\n";
+ print "-c\t\tCompress intermediate blanks.\n";
+ print "-g\t\tEmploy German word ordering.\n";
+ print "-p <num>\tSet the starting page number to be <num>.\n";
+ print "-r\t\tDisable implicit page range formation.\n";
+ print "-m <file>\tFull path to makeindex executable.\n",
+ "\t\t(Default assumes makeindex is on the operating system's path.)\n";
+}
+
+sub VERSION_MESSAGE{
+
+ my $verYear = '';
+
+ if ($version=~/(\d{4})-\d{2}-\d{2}/)
+ {
+ $verYear = "-$1";
+ }
+
+ print "Makeglossaries Version $version\n";
+ print "Copyright (C) 2007$verYear Nicola L C Talbot\n";
+ print "This material is subject to the LaTeX Project Public License.\n";
+}
+
+1;
+
+=head1 NAME
+
+makeglossaries - Calls makeindex/xindy for LaTeX documents using glossaries package
+
+=head1 SYNOPSIS
+
+B<makeglossaries> [B<-o> I<file>] [B<-q>] [B<-Q>] [B<-k>] [B<-n>]
+[B<-s> I<file>] [B<-t> I<file>] [B<-L> I<language>] [B<-c>] [B<-g>] [B<-l>]
+[B<-p> I<num>] [B<-r>] [B<-d> I<aux dir>] [B<-m> I<file>] [B<-x> I<file>]
+[B<--version>] [B<--help>] I<basename>
+
+=head1 DESCRIPTION
+
+B<makeglossaries> is designed for use with LaTeX documents that
+use the glossaries package. The mandatory argument I<basename> should
+be the name of the LaTeX document without the .tex extension.
+B<makeglossaries> will read the auxiliary file to determine whether
+B<makeindex> or B<xindy> should be called. All the information
+required to be passed to the relevant indexing application should
+also be contained in the auxiliary file, but may be overridden by
+the option arguments to B<makeglossaries>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-q>
+
+Quiet mode. Reduces chatter to standard output.
+
+=item B<-Q>
+
+Silences warning about being unable to fork.
+
+=item B<-k>
+
+Don't try forking with piped redirection. (Lessens the
+effect of -q)
+
+=item B<-n>
+
+Print the commands that would normally be executed but don't run them.
+
+=item B<-o> I<file>
+
+Use I<file> as the output file. (Only suitable for documents
+containing a single glossary, otherwise each glossary will be
+overridden.)
+
+=item B<-s> I<file>
+
+Use I<file> as the style file. Note that if you use this option,
+you need to know whether B<makeindex> or B<xindy> will be called, as
+they have different style files.
+
+=item B<-t> I<file>
+
+Use I<file> as the transcript file.
+
+=item B<-l>
+
+Letter ordering.
+
+=item B<-L> I<language>
+
+This option only has an effect if B<xindy> is called. Sets the
+language. See B<xindy> documentation for further details.
+
+=item B<-c>
+
+Compress intermediate blanks (B<makeindex> only).
+
+=item B<-g>
+
+Employ German word ordering (B<makeindex> only).
+
+=item B<-p> I<num>
+
+Sets the starting page number to be I<num> (B<makeindex> only).
+
+=item B<-r>
+
+Disable implicit page range formation (B<makeindex> only).
+
+=item B<-d> I<aux dir>
+
+Specify the directory the .aux, .glo etc files are located.
+Defaults to the parent directory of the base file I<filename>.
+
+=item B<-m> I<file>
+
+Specify the full path name for B<makeindex> to I<file> in the
+event that B<makeindex> isn't on the operating system's path.
+
+=item B<-x> I<file>
+
+Specify the full path name for B<xindy> to I<file> in the
+event that B<xindy> isn't on the operating system's path.
+
+=item B<--version>
+
+Prints version number and exits.
+
+=item B<--help>
+
+Prints help message and exits.
+
+=back
+
+=head1 REQUIRES
+
+Perl, Getopt::Std, and makeindex or xindy (depending on glossaries
+package options).
+
+=head1 LICENSE
+
+This is free software distributed under the LaTeX Project Public
+License. There is NO WARRANTY.
+See L<http://www.latex-project.org/lppl.txt> for details.
+
+=head1 AUTHOR
+
+Nicola L. C. Talbot,
+L<http://www.dickimaw-books.com/>
+
+=head1 RECOMMENDED READING
+
+The glossaries manual:
+
+ texdoc glossaries
+
+=cut
diff --git a/macros/latex/contrib/glossaries/makeglossaries-lite.1 b/macros/latex/contrib/glossaries/makeglossaries-lite.1
new file mode 100644
index 0000000000..94a5df5d94
--- /dev/null
+++ b/macros/latex/contrib/glossaries/makeglossaries-lite.1
@@ -0,0 +1,235 @@
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "MAKEGLOSSARIES-LITE 1"
+.TH MAKEGLOSSARIES-LITE 1 "2019-01-06" "perl v5.28.1" "makeglossaries-lite Lua Script"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+makeglossaries\-lite \- Calls makeindex/xindy for LaTeX documents using glossaries package
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBmakeglossaries\fR [\fB\-o\fR \fIfile\fR] [\fB\-q\fR] [\fB\-n\fR]
+[\fB\-s\fR \fIfile\fR] [\fB\-t\fR \fIfile\fR] [\fB\-L\fR \fIlanguage\fR] [\fB\-c\fR] [\fB\-g\fR]
+[\fB\-l\fR] [\fB\-p\fR \fInum\fR] [\fB\-r\fR] [\fB\-m\fR \fIfile\fR] [\fB\-x\fR \fIfile\fR]
+[\fB\-\-version\fR] [\fB\-\-help\fR] \fIbasename\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBmakeglossaries-lite\fR is cut-down Lua alternative to the
+\&\fBmakeglossaries\fR Perl script. It's designed for use with LaTeX documents that
+use the glossaries package. Some options that are available to
+\&\fBmakeglossaries\fR aren't available with \fBmakeglossaries-lite\fR.
+The mandatory argument \fIbasename\fR should
+be the name of the LaTeX document without the .tex extension.
+\&\fBmakeglossaries-lite\fR will read the auxiliary file to determine whether
+\&\fBmakeindex\fR or \fBxindy\fR should be called. All the information
+required to be passed to the relevant indexing application should
+also be contained in the auxiliary file, but may be overridden by
+the option arguments to \fBmakeglossaries-lite\fR.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-q\fR" 4
+.IX Item "-q"
+Quiet mode. Reduces chatter to standard output.
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+Print the commands that would normally be executed but don't run
+them.
+.IP "\fB\-o\fR \fIfile\fR" 4
+.IX Item "-o file"
+Use \fIfile\fR as the output file. (Only suitable for documents
+containing a single glossary, otherwise each glossary will be
+overridden.)
+.IP "\fB\-s\fR \fIfile\fR" 4
+.IX Item "-s file"
+Use \fIfile\fR as the style file. Note that if you use this option,
+you need to know whether \fBmakeindex\fR or \fBxindy\fR will be called, as
+they have different style files.
+.IP "\fB\-t\fR \fIfile\fR" 4
+.IX Item "-t file"
+Use \fIfile\fR as the transcript file.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+Letter ordering.
+.IP "\fB\-L\fR \fIlanguage\fR" 4
+.IX Item "-L language"
+This option only has an effect if \fBxindy\fR is called. Sets the
+language. See \fBxindy\fR documentation for further details.
+.IP "\fB\-c\fR" 4
+.IX Item "-c"
+Compress intermediate blanks (\fBmakeindex\fR only).
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+Employ German word ordering (\fBmakeindex\fR only).
+.IP "\fB\-p\fR \fInum\fR" 4
+.IX Item "-p num"
+Sets the starting page number to be \fInum\fR (\fBmakeindex\fR only).
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+Disable implicit page range formation (\fBmakeindex\fR only).
+.IP "\fB\-m\fR \fIfile\fR" 4
+.IX Item "-m file"
+Specify the full path name for \fBmakeindex\fR to \fIfile\fR in the
+event that \fBmakeindex\fR isn't on the operating system's path.
+.IP "\fB\-x\fR \fIfile\fR" 4
+.IX Item "-x file"
+Specify the full path name for \fBxindy\fR to \fIfile\fR in the
+event that \fBxindy\fR isn't on the operating system's path.
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+Prints version number and exits.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Prints help message and exits.
+.SH "REQUIRES"
+.IX Header "REQUIRES"
+texlua and makeindex or xindy (depending on glossaries package options).
+.SH "LICENSE"
+.IX Header "LICENSE"
+This is free software distributed under the LaTeX Project Public
+License. There is \s-1NO WARRANTY.\s0
+See <http://www.latex\-project.org/lppl.txt> for details.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Nicola L. C. Talbot,
+<http://www.dickimaw\-books.com/>
+.SH "RECOMMENDED READING"
+.IX Header "RECOMMENDED READING"
+The glossaries manual:
+.PP
+.Vb 1
+\& texdoc glossaries
+.Ve
diff --git a/macros/latex/contrib/glossaries/makeglossaries-lite.lua b/macros/latex/contrib/glossaries/makeglossaries-lite.lua
new file mode 100755
index 0000000000..f812edacee
--- /dev/null
+++ b/macros/latex/contrib/glossaries/makeglossaries-lite.lua
@@ -0,0 +1,559 @@
+#!/usr/bin/env texlua
+--[[
+ File : makeglossaries-lite.lua
+ Author : Nicola Talbot
+
+ Lua alternative to the makeglossaries Perl script.
+
+ Since Lua has limitations, this script isn't an exact
+ replacement to the Perl script. In particular the makeglossaries -d
+ switch isn't implemented in this Lua version.
+ This also doesn't provide the more detailed diagnostics that the Perl
+ version does nor does it attempt any language mappings. Since xindy
+ requires Perl, don't use this script if you want to use xindy. Instead
+ use the Perl makeglossaries script.
+
+ This file is distributed as part of the glossaries LaTeX package.
+ Copyright 2015 Nicola L.C. 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 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'.
+
+ This work consists of the files glossaries.dtx and glossaries.ins
+ and the derived files glossaries.sty, glossaries-prefix.sty,
+ glossary-hypernav.sty, glossary-inline.sty, glossary-list.sty,
+ glossary-long.sty, glossary-longbooktabs.sty, glossary-longragged.sty,
+ glossary-mcols.sty, glossary-super.sty, glossary-superragged.sty,
+ glossary-tree.sty, glossaries-compatible-207.sty,
+ glossaries-compatible-307.sty, glossaries-accsupp.sty,
+ glossaries-babel.sty, glossaries-polyglossia.sty, glossaries.perl.
+ Also makeglossaries and makeglossaries-lite.lua.
+
+ History:
+ * 4.41:
+ - no change.
+ * 4.40:
+ - no change.
+ * 4.39:
+ - corrected script name in version and help messages
+ * 4.38:
+ - no change.
+ * 4.37:
+ - no change.
+ * 4.36:
+ - fixed check for double-quotes (from \jobname when the file name
+ contains spaces).
+ * 4.35:
+ - no change.
+ * 4.34:
+ - added check for \glsxtr@resource
+ * 4.33:
+ - version number synchronized with glossaries.sty
+ * 1.3
+ - added check for \glsxtr@makeglossaries
+ * 1.2 (2016-05-27)
+ - added check for \@gls@extramakeindexopts
+ - added check for nil codepage
+ * 1.1
+ - changed first line from lua to texlua
+--]]
+
+thisversion = "4.41 (2018-07-23)"
+
+quiet = false
+dryrun = false
+
+infile = nil
+outfile = nil
+styfile = nil
+logfile = nil
+
+isxindy = false
+
+isbib2gls = false
+
+xindylang = nil
+xindyexec = "xindy"
+
+makeindex_c = false
+makeindex_g = false
+letterorder = false
+makeindex_r = false
+makeindex_p = nil
+makeindex_extra = nil
+makeindex_m = "makeindex"
+
+function version()
+
+ verYear = string.match(thisversion, "%d%d%d%d");
+
+ print(string.format("makeglossaries-lite version %s", thisversion))
+ print(string.format("Copyright (C) 2015-%s Nicola L C Talbot", verYear))
+ print("This material is subject to the LaTeX Project Public License.")
+end
+
+function help()
+ version()
+ print([[
+Syntax : makeglossaries-lite [options] <filename>
+
+For use with the glossaries package to pass relevant
+files to makeindex or xindy.
+
+<filename> Base name of glossary file(s). This should
+ be the name of your main LaTeX document without any
+ extension. If you do add an extension, only that
+ glossary file will be processed.
+
+General Options:
+
+-o <gls> Use <gls> as the output file.
+ (Don't use -o if you have more than one glossary.)
+-s <sty> Employ <sty> as the style file.
+-t <log> Employ <log> as the transcript file.
+ (Don't use -t if you have more than one glossary
+ or the transcripts will be overwritten.)
+-q Quiet mode.
+-l Letter ordering.
+-n Print the command that would normally be executed,
+ but don't execute it (dry run).
+--help Print this help message.
+--version Print the version.
+
+Xindy Options:
+
+-L <language> Use <language>.
+-x <file> Full path to xindy executable.
+ (Default assumes xindy is on the operating system's path.)
+
+Makeindex Options:
+(See makeindex documentation for further details on these options.)
+
+-c Compress intermediate blanks.
+-g Employ German word ordering.
+-p <num> Set the starting page number to be <num>.
+-r Disable implicit page range formation.
+-m <file> Full path to makeindex executable.
+ (Default assumes makeindex is on the operating system's path.)
+
+This is a light-weight Lua alternative to the makeglossaries Perl script.
+If you want to use xindy, it's better to use the Perl makeglossaries version
+instead.
+
+]])
+end
+
+function dorun(name, glg, gls, glo, language, codepage)
+
+ if isxindy then
+ doxindy(name, glg, gls, glo, language, codepage)
+ else
+ domakeindex(name, glg, gls, glo)
+ end
+
+end
+
+function doxindy(name, glg, gls, glo, language, codepage)
+
+ if codepage == nil
+ then
+ codepage = "utf8"
+ end
+
+ cmd = string.format('"%s" -I xindy -L %s -C %s -M "%s" -t "%s" -o "%s"',
+ xindyexec, language, codepage, styfile, glg, gls)
+
+ if letterorder then cmd = string.format('%s -M ord/letorder', cmd) end
+
+ if quiet then cmd = string.format('%s -q', cmd) end
+
+ cmd = string.format('%s "%s"', cmd, glo)
+
+ if dryrun then
+
+ print(cmd)
+
+ else
+
+ assert(os.execute(cmd),
+ string.format("Failed to execute '%s'", cmd))
+
+ end
+
+end
+
+function domakeindex(name, glg, gls, glo)
+
+ cmd = string.format('"%s"', makeindex_m)
+
+ if makeindex_c then cmd = cmd .. " -c" end
+
+ if makeindex_g then cmd = cmd .. " -g" end
+
+ if letterorder then cmd = cmd .. " -l" end
+
+ if makeindex_extra then cmd = cmd .. " " .. makeindex_extra end
+
+ if quiet then cmd = cmd .. " -q" end
+
+ if glg ~= nil then cmd = string.format('%s -t "%s"', cmd, glg) end
+
+ if gls ~= nil then cmd = string.format('%s -o "%s"', cmd, gls) end
+
+ if makeindex_p ~= nil then
+ cmd = string.format("%s -p %s", cmd, makeindex_p)
+ end
+
+ if styfile ~= nil then
+ cmd = string.format('%s -s "%s"', cmd, styfile)
+ end
+
+ cmd = string.format('%s "%s"', cmd, glo)
+
+ if dryrun then
+ print(cmd)
+ else
+ assert(os.execute(cmd),
+ string.format("Failed to execute '%s'", cmd))
+ end
+
+end
+
+if #arg < 1
+then
+ error("Syntax error: filename expected. Use --help for help.")
+end
+
+i = 1
+
+while i <= #arg do
+
+-- General Options
+ if arg[i] == "-q" then
+ quiet = true
+ elseif arg[i] == "-n"
+ then
+ dryrun = true
+ elseif arg[i] == "-o"
+ then
+ i = i + 1
+ if i > #arg then error("-o requires a filename") end
+ outfile = arg[i]
+ elseif arg[i] == "-s"
+ then
+ i = i + 1
+ if i > #arg then error("-s requires a filename") end
+ styfile = arg[i]
+ elseif arg[i] == "-t"
+ then
+ i = i + 1
+ if i > #arg then error("-t requires a filename") end
+ logfile = arg[i]
+ elseif arg[i] == "--version"
+ then
+ version()
+ os.exit()
+ elseif arg[i] == "--help"
+ then
+ help()
+ os.exit()
+-- General options for the Perl version that aren't implemented by
+-- this light-weight version:
+ elseif (arg[i] == "-Q") or (arg[i] == "-k")
+ then
+ print(string.format("Ignoring option '%s' (only available with the Perl version).", arg[i]))
+ elseif arg[i] == "-d"
+ then
+ error(string.format(
+ "The '%s' option isn't available for this light-weight version.\nYou will need to use the Perl version instead.",
+ arg[i]))
+
+-- Xindy Options
+ elseif arg[i] == "-L"
+ then
+ i = i + 1
+ if i > #arg then error("-L requires a language name") end
+ xindylang = arg[i]
+ elseif arg[i] == "-x"
+ then
+ i = i + 1
+ if i > #arg then error("-x requires a filename") end
+ xindyexec = arg[i]
+
+-- Makeindex Options
+ elseif arg[i] == "-c"
+ then
+ makeindex_c = true
+ elseif arg[i] == "-g"
+ then
+ makeindex_g = true
+ elseif arg[i] == "-l"
+ then
+ letterorder = true
+ elseif arg[i] == "-r"
+ then
+ makeindex_r = true
+ elseif arg[i] == "-p"
+ then
+ i = i + 1
+ if i > #arg then error("-p requires a page number") end
+ makeindex_p = arg[i]
+ elseif arg[i] == "-m"
+ then
+ i = i + 1
+ if i > #arg then error("-m requires a filename") end
+ makeindex_m = arg[i]
+
+-- Unknown Option
+ elseif string.sub(arg[i], 1, 1) == "-"
+ then
+ error(
+ string.format("Syntax error: unknown option '%s'. Use '--help' for help.",
+ arg[i]));
+
+-- Input file
+ elseif infile == nil
+ then
+ infile = arg[i]
+ else
+ error("Syntax error: only one filename permitted");
+ end
+
+ i = i + 1
+end
+
+if not quiet then
+ print(string.format("makeglossaries.lua version %s", thisversion))
+end
+
+if infile == nil
+then
+ error("Syntax error: missing filename")
+end
+
+i, j = string.find(infile, "%.%a*$")
+
+ext = nil
+inbase = infile
+
+if i ~= nil
+then
+ ext = string.sub(infile, i, j);
+
+ lext = string.lower(ext)
+
+ inbase = string.sub(infile, 1, i-1);
+
+ -- Just in case user has accidentally specified the aux or tex file
+ if lext == ".aux" or lext == ".tex"
+ then
+ ext = nil
+ infile = inbase
+ end
+end
+
+auxfile = inbase..".aux"
+
+if not quiet then print(string.format("Parsing '%s'", auxfile)) end
+
+assert(io.input(auxfile),
+ string.format("Unable to open '%s'", auxfile))
+
+aux = io.read("*a")
+
+if string.find(aux, "\\glsxtr@resource") ~= nil
+then
+ isbib2gls = true
+end
+
+if styfile == nil
+then
+
+-- v4.36: corrected check for double-quotes
+
+ styfile = string.match(aux, "\\@istfilename{([^}]*)}")
+ styfile = string.gsub(styfile, "\"", "");
+
+ if styfile == nil
+ then
+ if isbib2gls
+ then
+ error([[
+No \@istfilename found but found \glsxtr@resource.
+You need to run bib2gls not makeglossaries-lite.
+ ]])
+ else
+ error([[
+No \@istfilename found.
+Did your LaTeX run fail?
+Did your LaTeX run produce any output?
+Did you remember to use \makeglossaries?
+ ]])
+ end
+ end
+end
+
+i = string.len(styfile)
+
+if string.sub(styfile, i-3, i) == ".xdy"
+then
+ isxindy = true
+end
+
+if not letterorder
+then
+ if string.match(aux, "\\@glsorder{letter}") ~= nil
+ then
+ letterorder = true
+ end
+end
+
+makeindex_extra = string.match(aux, "\\@gls@extramakeindexopts{([^}]*%.?%a*)}")
+
+if dryrun then print("Dry run mode. No commands will be executed.") end
+
+onlyname = nil
+
+glossaries = {}
+
+for name, glg, gls, glo in
+ string.gmatch(aux, "\\@newglossary{([^}]+)}{([^}]+)}{([^}]+)}{([^}]+)}") do
+
+ if not quiet then
+ print(string.format("Found glossary type '%s' (%s,%s,%s)",
+ name, glg, gls, glo))
+ end
+
+ glossaries[name] = {}
+
+ glossaries[name].glg = glg
+ glossaries[name].gls = gls
+ glossaries[name].glo = glo
+
+ if "."..glo == ext then
+
+ onlyname = name
+
+ end
+
+ if isxindy then
+
+ if xindylang == nil then
+ glossaries[name].language = string.match(aux,
+ "\\@xdylanguage{"..name.."}{([^}]+)}");
+ else
+ glossaries[name].language = xindylang
+ end
+
+ glossaries[name].codepage = string.match(aux,
+ "\\@gls@codepage{"..name.."}{([^}]+)}");
+
+ end
+
+end
+
+onlytypes = string.match(aux, "\\glsxtr@makeglossaries{([^}]+)}")
+
+if onlytypes ~= nil
+then
+ if not quiet then
+ print(string.format("Only process subset: '%s'", onlytypes))
+ end
+
+ onlyglossaries = {}
+
+ for name in string.gmatch(onlytypes, '([^,]+)') do
+ onlyglossaries[name] = glossaries[name]
+ end
+
+ glossaries = onlyglossaries
+end
+
+if ext == nil
+then
+
+ done = false
+
+ for name, value in pairs(glossaries) do
+
+ glg = value.glg
+ gls = value.gls
+ glo = value.glo
+
+ if logfile == nil then
+ glg = inbase .. "." .. glg
+ else
+ glg = logfile
+ end
+
+ if outfile == nil then
+ gls = inbase .. "." .. gls
+ else
+ gls = outfile
+ end
+
+ glo = infile .. "." .. glo
+
+ dorun(name, glg, gls, glo, value.language, value.codepage)
+
+ done = true
+ end
+
+ if not done then
+ error([[
+No \@newglossary commands found in aux file.
+Did you remember to use \makeglossaries?
+Did you accidentally suppress the default glossary using "nomain"
+and not provide an alternative glossary?
+]])
+ end
+
+else
+
+ if onlyname == nil then
+
+ glo = infile
+ gls = outfile
+ glg = logfile
+
+ language = xindylang
+ codepage = 'utf8'
+
+ if language == nil then language = 'english' end
+
+ if gls == nil then gls = infile..".gls" end
+
+ else
+
+ value = glossaries[onlyname]
+
+ glg = value.glg
+ gls = value.gls
+ glo = infile
+
+ if logfile == nil then
+ glg = inbase .. "." .. glg
+ else
+ glg = logfile
+ end
+
+ if outfile == nil then
+ gls = inbase .. "." .. gls
+ else
+ gls = outfile
+ end
+
+ end
+
+ if codepage == nil then
+ codepage = 'utf8';
+ end
+
+ dorun(onlyname, glg, gls, glo, language, codepage)
+end
diff --git a/macros/latex/contrib/glossaries/makeglossaries-lite.pod b/macros/latex/contrib/glossaries/makeglossaries-lite.pod
new file mode 100644
index 0000000000..9d0bbe4d47
--- /dev/null
+++ b/macros/latex/contrib/glossaries/makeglossaries-lite.pod
@@ -0,0 +1,120 @@
+=head1 NAME
+
+makeglossaries-lite - Calls makeindex/xindy for LaTeX documents using glossaries package
+
+=head1 SYNOPSIS
+
+B<makeglossaries> [B<-o> I<file>] [B<-q>] [B<-n>]
+[B<-s> I<file>] [B<-t> I<file>] [B<-L> I<language>] [B<-c>] [B<-g>]
+[B<-l>] [B<-p> I<num>] [B<-r>] [B<-m> I<file>] [B<-x> I<file>]
+[B<--version>] [B<--help>] I<basename>
+
+=head1 DESCRIPTION
+
+B<makeglossaries-lite> is cut-down Lua alternative to the
+B<makeglossaries> Perl script. It's designed for use with LaTeX documents that
+use the glossaries package. Some options that are available to
+B<makeglossaries> aren't available with B<makeglossaries-lite>.
+The mandatory argument I<basename> should
+be the name of the LaTeX document without the .tex extension.
+B<makeglossaries-lite> will read the auxiliary file to determine whether
+B<makeindex> or B<xindy> should be called. All the information
+required to be passed to the relevant indexing application should
+also be contained in the auxiliary file, but may be overridden by
+the option arguments to B<makeglossaries-lite>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-q>
+
+Quiet mode. Reduces chatter to standard output.
+
+=item B<-n>
+
+Print the commands that would normally be executed but don't run
+them.
+
+=item B<-o> I<file>
+
+Use I<file> as the output file. (Only suitable for documents
+containing a single glossary, otherwise each glossary will be
+overridden.)
+
+=item B<-s> I<file>
+
+Use I<file> as the style file. Note that if you use this option,
+you need to know whether B<makeindex> or B<xindy> will be called, as
+they have different style files.
+
+=item B<-t> I<file>
+
+Use I<file> as the transcript file.
+
+=item B<-l>
+
+Letter ordering.
+
+=item B<-L> I<language>
+
+This option only has an effect if B<xindy> is called. Sets the
+language. See B<xindy> documentation for further details.
+
+=item B<-c>
+
+Compress intermediate blanks (B<makeindex> only).
+
+=item B<-g>
+
+Employ German word ordering (B<makeindex> only).
+
+=item B<-p> I<num>
+
+Sets the starting page number to be I<num> (B<makeindex> only).
+
+=item B<-r>
+
+Disable implicit page range formation (B<makeindex> only).
+
+=item B<-m> I<file>
+
+Specify the full path name for B<makeindex> to I<file> in the
+event that B<makeindex> isn't on the operating system's path.
+
+=item B<-x> I<file>
+
+Specify the full path name for B<xindy> to I<file> in the
+event that B<xindy> isn't on the operating system's path.
+
+=item B<--version>
+
+Prints version number and exits.
+
+=item B<--help>
+
+Prints help message and exits.
+
+=back
+
+=head1 REQUIRES
+
+texlua and makeindex or xindy (depending on glossaries package options).
+
+=head1 LICENSE
+
+This is free software distributed under the LaTeX Project Public
+License. There is NO WARRANTY.
+See L<http://www.latex-project.org/lppl.txt> for details.
+
+=head1 AUTHOR
+
+Nicola L. C. Talbot,
+L<http://www.dickimaw-books.com/>
+
+=head1 RECOMMENDED READING
+
+The glossaries manual:
+
+ texdoc glossaries
+=cut
diff --git a/macros/latex/contrib/glossaries/makeglossaries.1 b/macros/latex/contrib/glossaries/makeglossaries.1
new file mode 100644
index 0000000000..640cf541d3
--- /dev/null
+++ b/macros/latex/contrib/glossaries/makeglossaries.1
@@ -0,0 +1,243 @@
+.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. \*(C+ will
+.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "MAKEGLOSSARIES 1"
+.TH MAKEGLOSSARIES 1 "2019-01-06" "perl v5.28.1" "makeglossaries Perl Script"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+makeglossaries \- Calls makeindex/xindy for LaTeX documents using glossaries package
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+\&\fBmakeglossaries\fR [\fB\-o\fR \fIfile\fR] [\fB\-q\fR] [\fB\-Q\fR] [\fB\-k\fR] [\fB\-n\fR]
+[\fB\-s\fR \fIfile\fR] [\fB\-t\fR \fIfile\fR] [\fB\-L\fR \fIlanguage\fR] [\fB\-c\fR] [\fB\-g\fR] [\fB\-l\fR]
+[\fB\-p\fR \fInum\fR] [\fB\-r\fR] [\fB\-d\fR \fIaux dir\fR] [\fB\-m\fR \fIfile\fR] [\fB\-x\fR \fIfile\fR]
+[\fB\-\-version\fR] [\fB\-\-help\fR] \fIbasename\fR
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+\&\fBmakeglossaries\fR is designed for use with LaTeX documents that
+use the glossaries package. The mandatory argument \fIbasename\fR should
+be the name of the LaTeX document without the .tex extension.
+\&\fBmakeglossaries\fR will read the auxiliary file to determine whether
+\&\fBmakeindex\fR or \fBxindy\fR should be called. All the information
+required to be passed to the relevant indexing application should
+also be contained in the auxiliary file, but may be overridden by
+the option arguments to \fBmakeglossaries\fR.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+.IP "\fB\-q\fR" 4
+.IX Item "-q"
+Quiet mode. Reduces chatter to standard output.
+.IP "\fB\-Q\fR" 4
+.IX Item "-Q"
+Silences warning about being unable to fork.
+.IP "\fB\-k\fR" 4
+.IX Item "-k"
+Don't try forking with piped redirection. (Lessens the
+effect of \-q)
+.IP "\fB\-n\fR" 4
+.IX Item "-n"
+Print the commands that would normally be executed but don't run them.
+.IP "\fB\-o\fR \fIfile\fR" 4
+.IX Item "-o file"
+Use \fIfile\fR as the output file. (Only suitable for documents
+containing a single glossary, otherwise each glossary will be
+overridden.)
+.IP "\fB\-s\fR \fIfile\fR" 4
+.IX Item "-s file"
+Use \fIfile\fR as the style file. Note that if you use this option,
+you need to know whether \fBmakeindex\fR or \fBxindy\fR will be called, as
+they have different style files.
+.IP "\fB\-t\fR \fIfile\fR" 4
+.IX Item "-t file"
+Use \fIfile\fR as the transcript file.
+.IP "\fB\-l\fR" 4
+.IX Item "-l"
+Letter ordering.
+.IP "\fB\-L\fR \fIlanguage\fR" 4
+.IX Item "-L language"
+This option only has an effect if \fBxindy\fR is called. Sets the
+language. See \fBxindy\fR documentation for further details.
+.IP "\fB\-c\fR" 4
+.IX Item "-c"
+Compress intermediate blanks (\fBmakeindex\fR only).
+.IP "\fB\-g\fR" 4
+.IX Item "-g"
+Employ German word ordering (\fBmakeindex\fR only).
+.IP "\fB\-p\fR \fInum\fR" 4
+.IX Item "-p num"
+Sets the starting page number to be \fInum\fR (\fBmakeindex\fR only).
+.IP "\fB\-r\fR" 4
+.IX Item "-r"
+Disable implicit page range formation (\fBmakeindex\fR only).
+.IP "\fB\-d\fR \fIaux dir\fR" 4
+.IX Item "-d aux dir"
+Specify the directory the .aux, .glo etc files are located.
+Defaults to the parent directory of the base file \fIfilename\fR.
+.IP "\fB\-m\fR \fIfile\fR" 4
+.IX Item "-m file"
+Specify the full path name for \fBmakeindex\fR to \fIfile\fR in the
+event that \fBmakeindex\fR isn't on the operating system's path.
+.IP "\fB\-x\fR \fIfile\fR" 4
+.IX Item "-x file"
+Specify the full path name for \fBxindy\fR to \fIfile\fR in the
+event that \fBxindy\fR isn't on the operating system's path.
+.IP "\fB\-\-version\fR" 4
+.IX Item "--version"
+Prints version number and exits.
+.IP "\fB\-\-help\fR" 4
+.IX Item "--help"
+Prints help message and exits.
+.SH "REQUIRES"
+.IX Header "REQUIRES"
+Perl, Getopt::Std, and makeindex or xindy (depending on glossaries
+package options).
+.SH "LICENSE"
+.IX Header "LICENSE"
+This is free software distributed under the LaTeX Project Public
+License. There is \s-1NO WARRANTY.\s0
+See <http://www.latex\-project.org/lppl.txt> for details.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Nicola L. C. Talbot,
+<http://www.dickimaw\-books.com/>
+.SH "RECOMMENDED READING"
+.IX Header "RECOMMENDED READING"
+The glossaries manual:
+.PP
+.Vb 1
+\& texdoc glossaries
+.Ve
diff --git a/macros/latex/contrib/glossaries/samples/README-samples b/macros/latex/contrib/glossaries/samples/README-samples
new file mode 100644
index 0000000000..508aa54f98
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/README-samples
@@ -0,0 +1,52 @@
+These are sample files illustrating the use of the glossaries
+package. If you are new to this package, start with minimalgls.tex
+to check you have glossaries correctly installed and to check that
+you understand how to use it.
+
+1. Run minimalgls.tex through LaTeX ("compile the document") either
+by typing
+
+ latex minimalgls
+
+in a terminal or by using the relevant button or menu item in your
+text editor or front-end. This will create the required associated
+files but you will not see the glossary. If you use PDFLaTeX you
+will also get warnings about non-existent references that look
+something like:
+
+pdfTeX warning (dest): name{glo:aca} has been referenced but does
+not exist,
+replaced by a fixed one
+
+These warnings may be ignored on the first run.
+
+If you get a "Missing \begin{document}" error, then it's most likely
+that your version of xkeyval.sty is out of date. Check the log file
+for a warning of that nature. If this is the case, please update
+your TeX distribution.
+
+2. Run makeglossaries on the document. This can be done on a
+terminal either by typing
+
+ makeglossaries minimalgls
+
+or by typing
+
+ perl makeglossaries minimalgls
+
+If you don't have Perl installed you will need to run makeindex
+directly:
+
+ makeindex -s minimalgls.ist -t minimalgls.glg -o minimalgls.gls minimalgls.glo
+
+Another alternative is to use the Java application makeglossariesgui
+(http://ctan.org/pkg/makeglossariesgui) which has diagnostic tools
+to help determine what has gone wrong if there's a problem.
+
+3. Repeat step 1. Your document minimalgls.pdf should now have a
+glossary.
+
+If the above seems complicated, you can automate the process using
+tools such as latexmk or arara. See
+http://www.dickimaw-books.com/latex/thesis/html/build.html for
+further details.
diff --git a/macros/latex/contrib/glossaries/samples/database1.tex b/macros/latex/contrib/glossaries/samples/database1.tex
new file mode 100644
index 0000000000..f9ecc9a420
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/database1.tex
@@ -0,0 +1,24 @@
+ % This is a sample database of glossary entries
+ % Only those entries used in the document with \glslink, \gls,
+ % \glspl, and uppercase variants will have entries in the
+ % glossary. Note that the type key is not used, as the
+ % glossary type can be specified in \loadglsentries
+
+\newglossaryentry{array}{name=array,
+description={A list of values identified by a numeric value}}
+
+\newglossaryentry{binary}{name=binary,
+description={Pertaining to numbers represented in base 2}}
+
+\newglossaryentry{comment}{name=comment,
+description={A remark that doesn't affect the meaning of the
+code}}
+
+\newglossaryentry{global}{name=global,
+description={Something that maintains its state when it leaves
+the current group}}
+
+\newglossaryentry{local}{name=local,
+description={Something that only maintains its state until
+it leaves the group in which it was defined/changed}}
+
diff --git a/macros/latex/contrib/glossaries/samples/database2.tex b/macros/latex/contrib/glossaries/samples/database2.tex
new file mode 100644
index 0000000000..55bc08a1c4
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/database2.tex
@@ -0,0 +1,22 @@
+ % This is a sample database of glossary entries
+ % Only those entries used in the document with \glslink, \gls,
+ % \glspl, and uppercase variants will have entries in the
+ % glossary. Note that the type key is not used, as the
+ % glossary type can be specified in \loadglsentries
+
+ % Don't need to worry about makeindex special characters
+\newglossaryentry{quote}{name={"},
+description={the double quote symbol}}
+
+\newglossaryentry{at}{name={@},
+description={the ``at'' symbol}}
+
+\newglossaryentry{excl}{name={!},
+description={the exclamation mark symbol}}
+
+\newglossaryentry{bar}{name={\ensuremath{|}},
+description={the vertical bar symbol}}
+
+\newglossaryentry{hash}{name={\#},
+description={the hash symbol}}
+
diff --git a/macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.pdf b/macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.pdf
new file mode 100644
index 0000000000..e42dac1305
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.tex b/macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.tex
new file mode 100644
index 0000000000..c8fa373feb
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/glossary-lipsum-examples.tex
@@ -0,0 +1,221 @@
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+ % arara: bibtex
+ % arara: pdflatex
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage{graphicx}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[savewrites,nopostdot,toc,acronym,symbols]{glossaries}
+\usepackage{glossary-mcols}
+\usepackage{glossary-longragged}
+
+\newglossary*{symbolname}{Entries with Symbols in the Name}
+\newglossary*{long}{Long Descriptions}
+\newglossary*{multipar}{Multi-Paragraph Descriptions}
+\newglossary*{acronymdesc}{Acronyms with Descriptions}
+\newglossary*{images}{Descriptions with Images}
+\newglossary*{acronymslang}{Acronyms with Translations}
+
+\newglossary*{parent}{Hierarchical Entries}
+\newglossary*{homographs}{Homographs}
+\newglossary*{cites}{Entries with Citations}
+\newglossary*{urls}{Entries with URLs}
+
+\DeclareAcronymList{acronymdesc,acronymslang}
+
+\makeglossaries
+
+\loadglsentries{example-glossaries-brief}
+\loadglsentries[long]{example-glossaries-long}
+\loadglsentries[multipar]{example-glossaries-multipar}
+\loadglsentries[symbols]{example-glossaries-symbols}
+\loadglsentries[symbolname]{example-glossaries-symbolnames}
+\loadglsentries[images]{example-glossaries-images}
+\loadglsentries[parent]{example-glossaries-parent}
+\loadglsentries[homographs]{example-glossaries-childnoname}
+\loadglsentries[cites]{example-glossaries-cite}
+\loadglsentries[urls]{example-glossaries-url}
+
+\setacronymstyle{long-short}
+
+\loadglsentries[acronym]{example-glossaries-acronym}
+
+\setacronymstyle{long-short-desc}
+
+\loadglsentries[acronymdesc]{example-glossaries-acronym-desc}
+
+ % define an acronym style for the acronyms with a translation:
+
+\newacronymstyle{acronymslang}%
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}
+{%
+ \GlsUseAcrStyleDefs{short-long}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}}%
+ \ifglshasfield{useri}{##1}%
+ {, English: \glsentryuseri{##1}}{})%
+ }%
+}
+
+\setacronymstyle{acronymslang}
+
+\loadglsentries[acronymslang]{example-glossaries-acronyms-lang}
+
+ % Define a style for the "images" glossary. The image names are
+ % stored in the user1 key.
+ % (The image insertion can probably be done more neatly using an
+ % appropriate package, but this is just a sample file.)
+
+\newsavebox\glsimagebox
+\newlength\glswidth
+
+\newglossarystyle{images}%
+{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}{}{}%
+ \renewcommand{\glossentry}[2]{%
+ \ifglshasfield{useri}{##1}%
+ {\savebox
+ {\glsimagebox}%
+ {\includegraphics[height=4\baselineskip]{\glsentryuseri{##1}}}%
+ \settowidth{\glswidth}{\usebox\glsimagebox}%
+ \glswidth=\dimexpr\linewidth-\glswidth-1em\relax
+ \parshape=5
+ 0pt \glswidth
+ 0pt \glswidth
+ 0pt \glswidth
+ 0pt \glswidth
+ 0pt \linewidth\relax
+ }%
+ {%
+ \savebox{\glsimagebox}{}%
+ }%
+ \noindent
+ \makebox[0pt][l]{%
+ \smash{\makebox[\linewidth][r]{\raisebox{-3\baselineskip}{\usebox\glsimagebox}}}}%
+ \glsentryitem{##1}\textbf{\glstarget{##1}{\glossentryname{##1}}}%
+ \space\glossentrydesc{##1}\par
+ \indexspace
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+
+ % glossary style for acronyms with a translation
+
+\newglossarystyle{acronymslang}
+{%
+ \setglossarystyle{long}%
+ \renewcommand*{\glsgroupskip}{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription
+ \ifglshasfield{useri}{##1}{ (English: \glsentryuseri{##1})}{}%
+ \space ##2\tabularnewline
+ }%
+}
+
+ % glossary style for the cites glossary
+
+\newglossarystyle{cites}
+{% based on list style
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription
+ \ifglshasfield{useri}{##1}{\space
+ % in the event of multiple cites (as in the vestibulum2
+ % sample entry), \glsentryuseri{##1} needs to be expanded
+ % before being passed to \cite.
+ \glsletentryfield{\thiscite}{##1}{useri}%
+ (See \expandafter\cite\expandafter{\thiscite})}{}%
+ \space ##2}%
+}
+
+ % glossary style for the urls glossary
+
+\newglossarystyle{urls}
+{% based on list style
+ \setglossarystyle{list}%
+ \renewcommand{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space##2%
+ \ifglshasfield{useri}{##1}{\glspar
+ \glsletentryfield{\thisurl}{##1}{useri}%
+ \expandafter\url\expandafter{\thisurl}}{}}%
+}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Sample}
+
+This is a sample document that uses the dummy glossary entries
+supplied with the glossaries bundle for testing.
+
+Here are all the entries (including acronyms):
+
+\forallglossaries{\thistype}{\section{Glossary `\thistype'}
+\forglsentries[\thistype]{\thislabel}{\gls{\thislabel}. }}
+
+\section{Acronyms Revisited}
+
+Here are just the acronyms again:
+\forallacronyms{\thistype}{\forglsentries[\thistype]{\thislabel}{\gls{\thislabel}. }}
+
+\printglossary[style=mcolindex,title={Brief Descriptions}]
+
+\printglossary[type=long,style=list]
+
+\printglossary[type=multipar,style=altlist]
+
+\printglossary[type=symbols,style=altlongragged4col,nogroupskip]
+
+\printglossary[type=symbolname,style=list,nogroupskip]
+
+\printglossary[type=acronym,style=long]
+
+\printglossary[type=acronymdesc,style=altlist]
+
+\printglossary[type=images,style=images]
+
+\printglossary[type=acronymslang,style=acronymslang]
+
+\printglossary[type=homographs,style=mcoltreenoname,subentrycounter]
+
+\printglossary[type=parent,style=tree]
+
+\printglossary[type=cites,style=cites,nopostdot=false,nogroupskip]
+
+\printglossary[type=urls,style=urls,nopostdot=false,nogroupskip]
+
+\bibliographystyle{plain}
+\bibliography{xampl}
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/minimalgls.pdf b/macros/latex/contrib/glossaries/samples/minimalgls.pdf
new file mode 100644
index 0000000000..fc55ed5575
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/minimalgls.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/minimalgls.tex b/macros/latex/contrib/glossaries/samples/minimalgls.tex
new file mode 100644
index 0000000000..5053aa0a12
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/minimalgls.tex
@@ -0,0 +1,87 @@
+ % This file is public domain.
+ %
+ % This is a minimal file for testing and debugging
+ % the glossaries package. Change the class file as
+ % desired, and add the relevant package options to
+ % both the class file and the glossaries package.
+ % Change the sample glossary entry and acronym if
+ % required. If the problem occurs with an additional
+ % glossary, add in the relevant \newglossary command
+ % and a sample entry.
+ %
+ % Only add extra packages or commands if they
+ % contribute to whatever problem you are trying to
+ % test.
+ %
+ % Remember that the document will not be complete
+ % until you have successfully completed all of the
+ % following steps:
+ % 1. latex minimalgls
+ % 2. makeglossaries minimalgls (note no extension)
+ % 3. latex minimalgls
+ % A further run through LaTeX will be required to ensure that
+ % the table of contents is up to date if the toc option
+ % is used.
+ % Alternatively, if you use arara, you can add the following
+ % directives in your document:
+ %
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+
+ % If you require multilingual support you must also install
+ % the appropriate glossaries language module. The language
+ % modules are distributed separately.
+
+\documentclass{article}
+\listfiles
+
+\usepackage[colorlinks]{hyperref}
+ %\usepackage{glossaries} % abbreviation will go in main glossary
+ \usepackage[acronym]{glossaries} % make a separate list of acronyms
+
+\makeglossaries
+
+\longnewglossaryentry{par}{name={par}}%
+{%
+ A long description with a paragraph break.
+
+ This is the next paragraph.
+}
+
+\newglossaryentry{sample}{name={sample},
+description={a sample entry}}
+
+ % set the acronym style:
+\setacronymstyle{long-short}
+
+ % This contrived acronym has non-standard plural forms.
+ % These are specified in the optional argument.
+ % Remove the optional argument to revert to the default
+ % plurals.
+\newacronym[\glsshortpluralkey=cas,\glslongpluralkey=contrived
+acronyms]{aca}{aca}{a contrived acronym}
+
+ % Keep all definitions in the preamble!
+
+\begin{document}
+
+A \gls{sample} entry and \gls{aca}. Second use: \gls{aca}.
+
+Plurals: \glspl{sample}. Reset acronym\glsreset{aca}.
+First use: \glspl{aca}. Second use: \glspl{aca}.
+
+\glsresetall
+First letter upper case: \Gls{sample}. First use: \Gls{aca}.
+Subsequent use: \Gls{aca}.
+\glsresetall
+Plurals: \Glspl{sample}. First use: \Glspl{aca}. Next: \Glspl{aca}.
+
+If you want paragraph breaks in the description use
+\verb|\longnewglossaryentry|, as with entry \gls{par}.
+
+Title case a particular field:
+\glslink{sample}{\glsentrytitlecase{sample}{desc}}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/mwe-acr-desc.pdf b/macros/latex/contrib/glossaries/samples/mwe-acr-desc.pdf
new file mode 100644
index 0000000000..7d39d828cb
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/mwe-acr-desc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/mwe-acr-desc.tex b/macros/latex/contrib/glossaries/samples/mwe-acr-desc.tex
new file mode 100644
index 0000000000..1cb34e284f
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/mwe-acr-desc.tex
@@ -0,0 +1,26 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\setacronymstyle{short-long-desc}
+
+\newacronym[description={a device that emits a narrow beam of
+light}]{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\begin{document}
+
+First use: \gls{laser}.
+
+Next use: \gls{laser} or \glspl{laser}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/mwe-acr.pdf b/macros/latex/contrib/glossaries/samples/mwe-acr.pdf
new file mode 100644
index 0000000000..0056b9f4af
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/mwe-acr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/mwe-acr.tex b/macros/latex/contrib/glossaries/samples/mwe-acr.tex
new file mode 100644
index 0000000000..46b36dcc25
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/mwe-acr.tex
@@ -0,0 +1,25 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\setacronymstyle{long-short}
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\begin{document}
+
+First use: \gls{laser}.
+
+Next use: \gls{laser} or \glspl{laser}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/mwe-gls.pdf b/macros/latex/contrib/glossaries/samples/mwe-gls.pdf
new file mode 100644
index 0000000000..4a1f8d2516
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/mwe-gls.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/mwe-gls.tex b/macros/latex/contrib/glossaries/samples/mwe-gls.tex
new file mode 100644
index 0000000000..9c5e7c6bc4
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/mwe-gls.tex
@@ -0,0 +1,20 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{apple}{name={apple},description={a fruit}}
+
+\begin{document}
+
+\Gls{apple} or \gls{apple} or \glspl{apple}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-FnDesc.pdf b/macros/latex/contrib/glossaries/samples/sample-FnDesc.pdf
new file mode 100644
index 0000000000..00eaff2cf3
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-FnDesc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-FnDesc.tex b/macros/latex/contrib/glossaries/samples/sample-FnDesc.tex
new file mode 100644
index 0000000000..e4c5d87d3d
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-FnDesc.tex
@@ -0,0 +1,29 @@
+ % This file is public domain
+ % If you are using arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[hyperfirst=false]{glossaries}
+
+\makeglossaries
+
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\footnote{\glsentrydesc{\glslabel}}}%
+}
+
+\newglossaryentry{sample}{name={sample},description={an example
+description}}
+
+\begin{document}
+\chapter{Sample Chapter}
+
+First use: \gls{sample}.
+
+Next use: \gls{sample}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.pdf b/macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.pdf
new file mode 100644
index 0000000000..8ad12720ae
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.tex b/macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.tex
new file mode 100644
index 0000000000..4e74e2e059
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-chap-hyperfirst.tex
@@ -0,0 +1,59 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey{chapter}{0}{\glschapnum}
+
+\loadglsentries{example-glossaries-brief}
+
+\renewcommand*{\glslinkpostsetkeys}{%
+ \edef\currentchap{\arabic{chapter}}%
+ \ifnum\currentchap=\glschapnum{\glslabel}\relax
+ % Already used this entry in the current chapter, so switch
+ % off the hyperlink.
+ \setkeys{glslink}{hyper=false}%
+ \else
+ % Hasn't been used in the current chapter. Update the value
+ % of the "chapter" field unless the hyperlink has been switched
+ % off.
+ \glsifhyperon
+ {%
+ \glsfieldxdef{\glslabel}{chapter}{\currentchap}%
+ }%
+ {}%
+ \fi
+}
+
+\begin{document}
+\chapter{Sample}
+
+Use all entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Use them again: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\chapter{Another}
+
+Use all entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Use them again: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\chapter{Start with a Star}
+
+Use all entries but suppress hyperlink:
+\forglsentries{\thislabel}{\gls*{\thislabel}. }
+
+Use all entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Use them again: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-crossref.pdf b/macros/latex/contrib/glossaries/samples/sample-crossref.pdf
new file mode 100644
index 0000000000..1037320f51
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-crossref.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-crossref.tex b/macros/latex/contrib/glossaries/samples/sample-crossref.tex
new file mode 100644
index 0000000000..8aaca674da
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-crossref.tex
@@ -0,0 +1,36 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\makeglossaries
+
+\renewcommand{\glsseeitemformat}[1]{\textsc{\glsentryname{#1}}}
+
+\newglossaryentry{pear}{name=pear,
+description={an oddly shaped fruit}}
+
+\newglossaryentry{apple}{name=apple,
+description={firm, round fruit},
+see=[see also]{pear}}
+
+\newglossaryentry{banana}{name=banana,
+description={a yellow fruit with an even odder shape than
+a \gls{pear}}}
+
+\newglossaryentry{fruit}{name=fruit,
+description={sweet, fleshy product of plant containing seed}}
+
+\glssee{fruit}{pear,apple,banana}
+
+\begin{document}
+\gls{pear}, \gls{apple} and \gls{banana}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-custom-acronym.pdf b/macros/latex/contrib/glossaries/samples/sample-custom-acronym.pdf
new file mode 100644
index 0000000000..f84073b018
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-custom-acronym.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-custom-acronym.tex b/macros/latex/contrib/glossaries/samples/sample-custom-acronym.tex
new file mode 100644
index 0000000000..95b78a2773
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-custom-acronym.tex
@@ -0,0 +1,152 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[acronym,% create list of acronyms
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain
+ ]{glossaries}
+
+\makeglossaries
+
+ % This is a sample file to illustrate how to define a custom
+ % acronym style. This example defines the acronyms so that on first use
+ % they display the short form in the text and with the long form
+ % and description in a footnote. In the main body of the
+ % document the short form will be displayed in small caps, but in
+ % the list of acronyms the short form is displayed in normal
+ % capitals. To ensure this, the short form should be written in
+ % lower case when the acronym is defined, and \MakeTextUppercase is
+ % used when it's displayed in the list of acronyms.
+
+\newacronymstyle{custom-fn}% new style name
+{% Check for long form in case of a mixed glossary
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+}%
+{% Style definitions:
+ % User needs to supply the description:
+ \renewcommand*{\GenericAcronymFields}{}%
+ % Need to ensure hyperlinks are switched off on first use:
+ \glshyperfirstfalse
+ % Redefine the commands used by \glsgenacfmt on first use:
+ \renewcommand*{\genacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \firstacronymfont{\glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % Redefine the no-link full forms:
+ \renewcommand*{\glsentryfull}[1]{%
+ \glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Glsentryfull}[1]{%
+ \Glsentrylong{##1}\space(\acronymfont{\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\glsentryfullpl}[1]{%
+ \glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Glsentryfullpl}[1]{%
+ \Glsentrylongpl{##1}\space(\acronymfont{\glsentryshortpl{##1}})%
+ }%
+ % Redefine the link full forms:
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylong{##2}##3\space(\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylong{##2}##3\space(\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylong{##2}##3\space
+ (\acronymfont{\glsentryshort{##2}})%
+ }%
+ }%
+ }%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \Glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \MakeTextUppercase{%
+ \glsentrylongpl{##2}##3\space
+ (\acronymfont{\glsentryshortpl{##2}})%
+ }%
+ }%
+ }%
+ % Use smallcaps for the acronym in the document text:
+ \renewcommand*{\acronymfont}[1]{\textsc{##1}}%
+ \renewcommand*{\acrpluralsuffix}{\glstextup{\glspluralsuffix}}%
+ % Sort acronyms according to the long form:
+ \renewcommand*{\acronymsort}[2]{##2}%
+ % Set the name in the list of acronyms to the long form followed by
+ % the short form (in upper case) in parentheses:
+ \renewcommand*{\acronymentry}[1]{%
+ \Glsentrylong{##1}\space(\MakeTextUppercase{\glsentryshort{##1}})}%
+}
+
+ % Now set the new acronym style (to override the default style)
+\setacronymstyle{custom-fn}
+
+ % Set an appropriate glossary style:
+\setglossarystyle{altlist}
+
+ % Now define the acronyms (must be done after setting the custom
+ % style)
+
+\newacronym[description={set of tags for use in developing hypertext
+documents}]{html}{html}{hyper text markup language}
+
+\newacronym[description={language used to describe the layout of a
+document written in a markup language}]{css}{css}{cascading style
+sheet}
+
+\begin{document}
+
+\gls{css}. \gls{html}.
+
+\gls{css}. \gls{html}.
+
+No-link full forms: \glsentryfull{css}, \Glsentryfull{css}.
+Linking full forms: \acrfull{css}, \Acrfull{css}, \ACRfull{css}.
+Linking with insert: \acrfull{css}['s], \Acrfull{css}['s],
+\ACRfull{css}['s].
+
+Now test plurals.
+
+No-link full forms: \glsentryfullpl{html}, \Glsentryfullpl{html}.
+Linking full forms: \acrfullpl{html}, \Acrfullpl{html}, \ACRfullpl{html}.
+Linking with insert: \acrfullpl{html}['s], \Acrfullpl{html}['s],
+\ACRfullpl{html}['s].
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-dot-abbr.pdf b/macros/latex/contrib/glossaries/samples/sample-dot-abbr.pdf
new file mode 100644
index 0000000000..c5a28552ae
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-dot-abbr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-dot-abbr.tex b/macros/latex/contrib/glossaries/samples/sample-dot-abbr.tex
new file mode 100644
index 0000000000..094fcf76dd
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-dot-abbr.tex
@@ -0,0 +1,92 @@
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey{abbrtype}{word}{\abbrtype}
+
+\setacronymstyle{long-short}
+
+\newcommand*{\newabbr}[1][]{%
+ \newacronym[abbrtype=initials,#1]}
+
+\newabbr{eg}{e.g.}{exempli gratia}
+\newabbr{ie}{i.e.}{id est}
+\newabbr{bsc}{B.Sc.}{Bachelor of Science}
+\newabbr{ba}{B.A.}{Bachelor of Arts}
+\newabbr{agm}{A.G.M.}{annual general meeting}
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+ % See the sample-initialisms.tex example file provided with
+ % glossaries-extra.sty for a better way of doing this.
+
+\makeatletter
+\renewcommand{\glspostlinkhook}{%
+ \ifglsfieldeq{\glslabel}{abbrtype}{initials}%
+ {\new@ifnextchar.\doendsentence\doendword}
+ {}%
+}
+\makeatother
+
+\newcommand{\doendsentence}[1]{\spacefactor=10000{}}
+\newcommand{\doendword}{\spacefactor=1000{}}
+
+\begin{document}
+This is a sample document that illustrates abbreviations with
+full stops (periods) and abbreviations that are words (i.e.\
+acronyms). The examples switch to a typewriter font to make it
+easier to see the inter-word and inter-sentence spaces.
+
+The extension package glossaries-extra.sty provides a better way of
+doing this.
+
+First use: \gls{laser} \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm} end of
+sentence.
+
+End of sentence use:
+
+\ttfamily
+
+\gls{laser}. \gls{eg}. \gls{ie}. \gls{bsc}. \gls{ba}. \gls{agm}.
+Done.
+
+laser. e.g. i.e. B.Sc. B.A\@. A.G.M\@. Done.
+
+\rmfamily
+
+Mid-sentence use:
+
+\ttfamily
+
+\gls{laser} \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm} Done.
+
+laser e.g.\ i.e.\ B.Sc.\ B.A. A.G.M. Done.
+
+\rmfamily
+
+Check other sentence terminators:
+
+\ttfamily
+
+\gls{laser}? \gls{eg}? \gls{ie}? \gls{bsc}! \gls{ba}! \gls{agm}? Done.
+
+laser? e.g.? i.e.? B.Sc.! B.A.! A.G.M.? Done.
+
+\rmfamily
+
+\glsresetall Reset. End of sentence use:
+
+\ttfamily
+
+\gls{laser}. \gls{eg}. \gls{ie}. \gls{bsc}. \gls{ba}. \gls{agm}.
+Done.
+
+\rmfamily
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-dual.pdf b/macros/latex/contrib/glossaries/samples/sample-dual.pdf
new file mode 100644
index 0000000000..a2061a2b9b
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-dual.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-dual.tex b/macros/latex/contrib/glossaries/samples/sample-dual.tex
new file mode 100644
index 0000000000..0015f9385a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-dual.tex
@@ -0,0 +1,33 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[acronym]{glossaries}
+
+ % \newdualentry[main options]{label}{short}{long}{description}
+
+\newcommand*{\newdualentry}[5][]{%
+ \newglossaryentry{main-#2}{name={#4},%
+ text={#3\glsadd{#2}},%
+ description={#5},%
+ #1
+ }%
+ \newacronym{#2}{#3\glsadd{main-#2}}{#4}
+}
+
+\newdualentry{svm}% label
+ {SVM}% abbreviation
+ {support vector machine}% long form
+ {Statistical pattern recognition technique}% description
+
+\makeglossaries
+
+\begin{document}
+
+\gls{svm}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-entrycount.pdf b/macros/latex/contrib/glossaries/samples/sample-entrycount.pdf
new file mode 100644
index 0000000000..af2438de51
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-entrycount.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-entrycount.tex b/macros/latex/contrib/glossaries/samples/sample-entrycount.tex
new file mode 100644
index 0000000000..01f331440c
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-entrycount.tex
@@ -0,0 +1,35 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage
+ [nomain,% 'nomain' is used to suppress the main glossary
+ acronym% 'acronym' is used to create the 'acronym' glossary
+ ]
+ {glossaries}
+\makeglossaries
+
+\glsenableentrycount
+
+\setacronymstyle{long-short}
+
+\newacronym{html}{HTML}{hypertext markup language}
+\newacronym{css}{CSS}{cascading style sheets}
+\newacronym{xml}{XML}{extensible markup language}
+\newacronym{sql}{SQL}{structured query language}
+\newacronym{rdbms}{RDBMS}{relational database management system}
+\newacronym{rdsms}{RDSMS}{relational data stream management system}
+
+\begin{document}
+These entries are only used once: \cgls{sql}, \cgls{rdbms},
+\cgls{xml}. These entries are used multiple times:
+\cgls{html}, \cgls{html}, \cgls{css}, \cgls{css}, \cgls{css},
+\cgls{rdsms}, \cgls{rdsms}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-entryfmt.pdf b/macros/latex/contrib/glossaries/samples/sample-entryfmt.pdf
new file mode 100644
index 0000000000..407ea6961f
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-entryfmt.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-entryfmt.tex b/macros/latex/contrib/glossaries/samples/sample-entryfmt.tex
new file mode 100644
index 0000000000..a057805db1
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-entryfmt.tex
@@ -0,0 +1,28 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=tree]{glossaries}
+
+\makeglossaries
+
+\renewcommand*{\glsentryfmt}{%
+ \glsgenentryfmt
+ \ifglsused{\glslabel}{}{\space (\glsentrysymbol{\glslabel})}%
+}
+
+\newglossaryentry{distance}{name=distance,
+description={The length between two points},
+symbol={km}}
+
+\begin{document}
+
+First use: \gls{distance}. Next use: \gls{distance}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-font-abbr.pdf b/macros/latex/contrib/glossaries/samples/sample-font-abbr.pdf
new file mode 100644
index 0000000000..8a9ee959e1
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-font-abbr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-font-abbr.tex b/macros/latex/contrib/glossaries/samples/sample-font-abbr.tex
new file mode 100644
index 0000000000..c7b04e192b
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-font-abbr.tex
@@ -0,0 +1,63 @@
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey{font}{}{\entryfont}
+
+\newacronymstyle{long-font-short}
+{%
+ \GlsUseAcrEntryDispStyle{long-short}%
+}
+{%
+ \GlsUseAcrStyleDefs{long-short}%
+ \renewcommand*{\genacrfullformat}[2]{%
+ \glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \Glsentrylong{##1}##2\space
+ ({\entryfont{##1}\glsentryshort{##1}})%
+ }%
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \glsentrylongpl{##1}##2\space
+ ({\entryfont{##1}\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \Glsentrylongpl{##1}##2\space
+ ({\entryfont{##1}\glsentryshortpl{##1}})%
+ }%
+ \renewcommand*{\acronymfont}[1]{{\entryfont{\glslabel}##1}}%
+ \renewcommand*{\acronymentry}[1]{{\entryfont{##1}\glsentryshort{##1}}}%
+}
+
+\setacronymstyle{long-font-short}
+
+\newcommand*{\newitabbr}[1][]{\newacronym[font=\em,#1]}
+\newcommand*{\newupabbr}[1][]{\newacronym[#1]}
+
+\newitabbr{eg}{e.g.}{exempli gratia}
+\newitabbr{ie}{i.e.}{id est}
+
+\newupabbr{bsc}{BSc}{Bachelor of Science}
+\newupabbr{ba}{BA}{Bachelor of Arts}
+\newupabbr{agm}{AGM}{annual general meeting}
+
+\begin{document}
+
+First use: \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm}.
+
+Next use: \gls{eg} \gls{ie} \gls{bsc} \gls{ba} \gls{agm}.
+
+Short: \acrshort{eg} \acrshort{ie} \acrshort{bsc} \acrshort{ba}
+\acrshort{agm}.
+
+Full: \acrfull{eg} \acrfull{ie} \acrfull{bsc} \acrfull{ba}
+\acrfull{agm}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-ignored.pdf b/macros/latex/contrib/glossaries/samples/sample-ignored.pdf
new file mode 100644
index 0000000000..23bf60a938
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-ignored.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-ignored.tex b/macros/latex/contrib/glossaries/samples/sample-ignored.tex
new file mode 100644
index 0000000000..090c755c95
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-ignored.tex
@@ -0,0 +1,25 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\newignoredglossary{common}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\newglossaryentry{commonex}{type=common,name={common term}}
+
+\begin{document}
+
+\gls{sample}. \gls{commonex}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-index.pdf b/macros/latex/contrib/glossaries/samples/sample-index.pdf
new file mode 100644
index 0000000000..80f293a51b
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-index.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-index.tex b/macros/latex/contrib/glossaries/samples/sample-index.tex
new file mode 100644
index 0000000000..1f2441dbed
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-index.tex
@@ -0,0 +1,61 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,index,nohypertypes={index}]{glossaries}
+\usepackage{glossary-mcols}
+
+\makeglossaries
+
+ % define terms for the index
+
+\newterm[plural={stegosauruses}]{stegosaurus}
+\newterm[plural={triceratopses}]{triceratops}
+\newterm[plural={apatosauruses}]{apatosaurus}
+
+ % To avoid labels conflicting with the same name in the main glossary
+ % prefix the index label with "ind-". (This means that the name must
+ % be set independently.)
+\newterm[name={dinosaur}]{ind-dinosaur}
+\newterm[name={Triassic}]{ind-triassic}
+
+ % define terms for the main glossary
+
+\newglossaryentry{dinosaur}%
+{%
+ name={dinosaur\glsadd{ind-dinosaur}},%
+ description={One of a group of dinosauria}%
+}
+
+\newglossaryentry{Triassic}%
+{%
+ name={Triassic\glsadd{ind-triassic}},%
+ description={The first period of the Mesozoic Era}
+}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Dinosaurs}
+
+\Glspl{dinosaur} are now extinct. They first appeared during the
+\gls{Triassic} period. Examples of \glspl{dinosaur} include the
+\gls{triceratops}, the \gls{apatosaurus} and the \gls{stegosaurus}.
+
+Indexed term: \gls{ind-dinosaur}.
+
+\renewcommand*{\glsnamefont}[1]{\textbf{\makefirstuc{#1}}}
+
+\printglossary[style=long,nogroupskip]
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\printindex[style=mcolindexgroup]
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-inline.pdf b/macros/latex/contrib/glossaries/samples/sample-inline.pdf
new file mode 100644
index 0000000000..b6050b20cc
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-inline.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-inline.tex b/macros/latex/contrib/glossaries/samples/sample-inline.tex
new file mode 100644
index 0000000000..08a4198aa5
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-inline.tex
@@ -0,0 +1,146 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[toc,order=word,subentrycounter]{glossaries}
+
+\usepackage{glossary-inline}
+
+\renewcommand*{\glossarysection}[2][]{\textbf{#1}: }
+\renewcommand{\glsnamefont}[1]{\textsc{#1}}
+\setglossarystyle{inline}
+
+\makeglossaries
+
+\newglossaryentry{Perl}{name=\texttt{Perl},
+sort=Perl, % need a sort key because name contains a command
+description=A scripting language}
+
+\newglossaryentry{glossary}{name=glossary,
+description={\nopostdesc},
+plural={glossaries}}
+
+\newglossaryentry{glossarycol}{
+description={collection of glosses},
+sort={2},
+parent={glossary}}
+
+\newglossaryentry{glossarylist}{
+description={list of technical words},
+sort={1},
+parent={glossary}}
+
+\newglossaryentry{pagelist}{name=page list,
+ % description value has to be enclosed in braces
+ % because it contains commas
+description={a list of individual pages or page ranges
+(e.g.\ 1,2,4,7-9)}}
+
+\newglossaryentry{mtrx}{name=matrix,
+description={rectangular array of quantities},
+ % plural is not simply obtained by appending an s, so specify
+plural=matrices}
+
+ % entry with a paragraph break in the description
+
+\newglossaryentry{par}{name=paragraph,
+description={distinct section of piece of
+writing. Beginning on new, usually indented, line}}
+
+ % entry with two types of plural. Set the plural form to the
+ % form most likely to be used. If you want to use a different
+ % plural, you will need to explicity specify it in \glslink
+\newglossaryentry{cow}{name=cow,
+ % this isn't necessary, as this form (appending an s) is
+ % the default
+plural=cows,
+ % description:
+description={(\emph{pl.}\ cows, \emph{archaic} kine) an adult
+female of any bovine animal}}
+
+\newglossaryentry{bravo}{name={bravo},
+description={\nopostdesc}}
+
+\newglossaryentry{bravo1}{description={cry of approval (pl.\ bravos)},
+sort={1},
+plural={bravos},
+parent=bravo}
+
+\newglossaryentry{bravo2}{description={hired ruffian or killer (pl.\ bravoes)},
+sort={2},
+plural={bravoes},
+parent=bravo}
+
+\newglossaryentry{seal}{name=seal,description={sea mammal with
+flippers that eats fish}}
+
+\newglossaryentry{sealion}{name={sea lion},
+description={large seal}}
+
+\begin{document}
+
+\title{Sample Document Using glossary Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}% prevent duplicate page link names if using PDF
+\maketitle
+
+\pagenumbering{roman}
+\tableofcontents
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+This document has a glossary in a footnote\footnote{\printglossaries}.
+
+A \gls{glossarylist} (definition~\glsrefentry{glossarylist}) is a
+very useful addition to any technical document, although a
+\gls{glossarycol} (definition~\glsrefentry{glossarycol}) can also
+simply be a collection of glosses, which is another thing entirely.
+Some documents have multiple \glspl{glossarylist}.
+
+Once you have run your document through \LaTeX, you
+will then need to run the \texttt{.glo} file through
+\texttt{makeindex}. You will need to set the output
+file so that it creates a \texttt{.gls} file instead
+of an \texttt{.ind} file, and change the name of
+the log file so that it doesn't overwrite the index
+log file (if you have an index for your document).
+Rather than having to remember all the command line
+switches, you can call the \gls{Perl} script
+\texttt{makeglossaries} which provides a convenient
+wrapper.
+
+If a comma appears within the name or description, grouping
+must be used, e.g.\ in the description of \gls{pagelist}.
+
+\chapter{Plurals and Paragraphs}
+
+Plurals are assumed to have the letter s appended, but if this is
+not the case, as in \glspl{mtrx}, then you need to specify the
+plural when you define the entry. If a term may have multiple
+plurals (for example \glspl{cow}/\glslink{cow}{kine}) then
+define the entry with the plural form most likely to be used and
+explicitly specify the alternative form using \verb|\glslink|.
+\Glspl{seal} and \glspl{sealion} have regular plural forms.
+
+\Gls{bravo} is a homograph, but the plural forms are spelt
+differently. The plural of \gls{bravo1}, a cry of approval
+(definition~\glsrefentry{bravo1}), is \glspl{bravo1}, whereas the
+plural of \gls{bravo2}, a hired ruffian or killer
+(definition~\glsrefentry{bravo2}), is \glspl{bravo2}.
+
+\Glspl{par} can cause a problem in commands, so care is needed
+when having a paragraph break in a \gls{glossarylist} entry.
+
+\chapter{Ordering}
+
+There are two types of ordering: word ordering (which places
+``\gls{sealion}'' before ``\gls{seal}'') and letter ordering
+(which places ``\gls{seal}'' before ``\gls{sealion}'').
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-langdict.pdf b/macros/latex/contrib/glossaries/samples/sample-langdict.pdf
new file mode 100644
index 0000000000..300afc33cf
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-langdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-langdict.tex b/macros/latex/contrib/glossaries/samples/sample-langdict.tex
new file mode 100644
index 0000000000..5c1484c93e
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-langdict.tex
@@ -0,0 +1,46 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+
+ % This file also requires the glossaries-english
+ % and glossaries-french language modules. These must
+ % be installed in addition to installing the glossaries package.
+\documentclass[english,french]{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{babel}
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+\usepackage[nomain]{glossaries}
+
+\newglossary[glg]{english}{gls}{glo}{English to French}
+\newglossary[flg]{french}{flx}{flo}{French to English}
+
+\makeglossaries
+
+ % \newword{label}{english}{determiner}{french}
+\newcommand*{\newword}[4]{%
+ \newglossaryentry{en-#1}{type=english,name={#2},description={#3 #4}}%
+ \newglossaryentry{fr-#1}{type=french,name={#3 #4},text={#4},sort={#4},description={#2}}%
+}
+
+\newword{cat}{cat}{le}{chat}
+\newword{mat}{mat}{la}{natte}
+
+\begin{document}
+\selectlanguage{english}
+The \gls{en-cat} sat on the \gls{en-mat}.
+
+\selectlanguage{french}
+Le \gls{fr-cat} s'est repos\'e sur la \gls{fr-mat}.
+
+\selectlanguage{english}
+\printglossary[type=english]
+
+\selectlanguage{french}
+\printglossary[type=french]
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-newkeys.pdf b/macros/latex/contrib/glossaries/samples/sample-newkeys.pdf
new file mode 100644
index 0000000000..300767a45d
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-newkeys.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-newkeys.tex b/macros/latex/contrib/glossaries/samples/sample-newkeys.tex
new file mode 100644
index 0000000000..323b28665c
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-newkeys.tex
@@ -0,0 +1,64 @@
+ % This file is public domain
+ % If you are using arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[nopostdot,nogroupskip]{glossaries}
+
+\glsaddkey*% star version needed as default value needs expanding
+ {ed}% key
+ {\glsentrytext{\glslabel}ed}% default value
+ {\glsentryed}% command analogous to \glsentrytext
+ {\Glsentryed}% command analogous to \Glsentrytext
+ {\glsed}% command analogous to \glstext
+ {\Glsed}% command analogous to \Glstext
+ {\GLSed}% command analogous to \GLStext
+
+\glsaddkey*
+ {ing}% key
+ {\glsentrytext{\glslabel}ing}% default value
+ {\glsentrying}% command analogous to \glsentrytext
+ {\Glsentrying}% command analogous to \Glsentrytext
+ {\glsing}% command analogous to \glstext
+ {\Glsing}% command analogous to \Glstext
+ {\GLSing}% command analogous to \GLStext
+
+\makeglossaries
+
+\newglossaryentry{jump}{name={jump},description={}}
+
+\newglossaryentry{run}{name={run},%
+ ed={ran},%
+ ing={running},
+ description={}}
+
+\newglossaryentry{waddle}{name={waddle},%
+ ed={waddled},%
+ ing={waddling},%
+ description={}}
+
+\begin{document}
+
+This is a sample document illustrating how to add new glossary entry
+keys.
+
+The dog \glsed{jump} over the duck.
+
+The duck was \glsing{waddle} round the dog.
+
+The dog \glsed{run} away from the duck.
+
+First letter uppercase: \Glsed{jump}, \Glsing{jump},
+\Glsed{waddle}, \Glsing{waddle},
+\Glsed{run}, \Glsing{run}.
+
+All uppercase: \GLSed{jump}, \GLSing{jump},
+\GLSed{waddle}, \GLSing{waddle},
+\GLSed{run}, \GLSing{run}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.pdf b/macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.pdf
new file mode 100644
index 0000000000..7a922cd6ea
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.tex b/macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.tex
new file mode 100644
index 0000000000..e8d2bfb8b6
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-noidxapp-utf8.tex
@@ -0,0 +1,148 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[index,symbols,nohypertypes={index}]{glossaries}
+\usepackage{glossary-mcols}
+
+\makenoidxglossaries
+
+\renewcommand{\theHequation}{\theequation}
+
+ % main entries
+
+\newglossaryentry{elite}{%
+ name={{é}lite},
+ description={select group of people}
+}
+
+\newglossaryentry{elephant}{%
+ name={elephant},
+ description={very large mammal with tusks}
+}
+
+\newglossaryentry{elk}{%
+ name={elk},
+ description={large northern deer}
+}
+
+\newglossaryentry{emigre}{%
+ name={{é}migré},
+ description={person who has emigrated to another country,
+ especially for political reasons}
+}
+
+ % Symbols
+
+\newglossaryentry{set}{%
+ type=symbols,
+ name={$\mathcal{S}$},
+ text={\mathcal{S}},
+ sort={S},
+ description={A set}}
+
+\newglossaryentry{U}{%
+ type=symbols,
+ name={$\mathcal{U}$},
+ text={\mathcal{U}},
+ sort={U},
+ description={The universal set}}
+
+\newglossaryentry{card}{%
+ type=symbols,
+ name={$|\glsentrytext{set}|$},
+ text={|\glsentrytext{set}|},
+ sort={|},
+ description={cardinality of $\gls{set}$}}
+
+\newglossaryentry{factorial}{%
+ type=symbols,
+ name={$!$},
+ text={!},
+ sort={!},
+ description={factorial}}
+
+ % index entries
+
+\newterm{seal}
+
+\newterm{dinosaur}
+
+\newterm[parent=dinosaur]{ceratopsidae}
+
+\newterm[parent=dinosaur,plural={stegosauruses}]{stegosaurus}
+\newterm[parent=ceratopsidae,plural={triceratopses}]{triceratops}
+\newterm[parent=ceratopsidae,plural={styracosauruses}]{styracosaurus}
+\newterm[parent=dinosaur,plural={apatosauruses}]{apatosaurus}
+
+\newterm{Triassic}
+
+\newterm{Devonian}
+
+\newterm[see={[see also]seal}]{sea lion}
+
+\begin{document}
+
+\chapter{Mathematical Notation}
+
+The cardinality of a set $\gls{set}$ is denoted $\gls{card}$
+The $\gls{factorial}$ symbol indicates factorial.
+$\gls{U}$ is the universal set.
+
+\glsaddall[types=main]
+
+\chapter{Dinosaurs}
+
+\Glspl{dinosaur} are now extinct. They first appeared during the
+\gls{Triassic} period. Examples of \glspl{dinosaur} include the
+\gls{triceratops}, the \gls{styracosaurus}, the \gls{apatosaurus} and the \gls{stegosaurus}.
+
+\Glspl{seal} and \glspl{sea lion} are marine mammals.
+The \gls{Devonian} period was the age of fish.
+
+\glsaddall[types=main]
+
+\chapter{Location Lists}
+
+Dinosaur: \glsdisplaynumberlist{dinosaur}.
+
+Set: \glsdisplaynumberlist{set}.
+
+\Gls{elite}: \glsdisplaynumberlist{elite}.
+
+\begin{equation}
+3\gls[counter=equation]{factorial} = 3 \times 2 \times 1
+\end{equation}
+
+\newcommand{\myhandler}[4]{%
+ Prefix: #1.
+ Counter: #2.
+ Format: #3.
+ Value: #4.
+ Link: \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}.
+ \par
+}
+\newcommand{\myxrhandler}[2][]{XR (#1): #2. }
+
+Factorial locations:
+\glsnumberlistloop{factorial}{\myhandler}{\myxrhandler}
+
+Sea lion locations:
+\glsnumberlistloop{sea lion}{\myhandler}{\myxrhandler}
+
+\printnoidxglossary[type=main,sort=word]
+
+\printnoidxglossary[type=symbols,sort=use]
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\printnoidxglossary[type=index,style=mcolindexgroup,sort=word]
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-noidxapp.pdf b/macros/latex/contrib/glossaries/samples/sample-noidxapp.pdf
new file mode 100644
index 0000000000..9ed8e6191a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-noidxapp.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-noidxapp.tex b/macros/latex/contrib/glossaries/samples/sample-noidxapp.tex
new file mode 100644
index 0000000000..d2891729d3
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-noidxapp.tex
@@ -0,0 +1,145 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[index,symbols,nohypertypes={index}]{glossaries}
+\usepackage{glossary-mcols}
+
+\makenoidxglossaries
+
+\renewcommand{\theHequation}{\theequation}
+
+ % main entries
+
+\newglossaryentry{elite}{%
+ name={{\'e}lite},
+ description={select group of people}
+}
+
+\newglossaryentry{elephant}{%
+ name={elephant},
+ description={very large mammal with tusks}
+}
+
+\newglossaryentry{elk}{%
+ name={elk},
+ description={large northern deer}
+}
+
+\newglossaryentry{emigre}{%
+ name={{\'e}migr\'e},
+ description={person who has emigrated to another country,
+ especially for political reasons}
+}
+
+ % Symbols
+
+\newglossaryentry{set}{%
+ type=symbols,
+ name={$\mathcal{S}$},
+ text={\mathcal{S}},
+ sort={S},
+ description={A set}}
+
+\newglossaryentry{U}{%
+ type=symbols,
+ name={$\mathcal{U}$},
+ text={\mathcal{U}},
+ sort={U},
+ description={The universal set}}
+
+\newglossaryentry{card}{%
+ type=symbols,
+ name={$|\glsentrytext{set}|$},
+ text={|\glsentrytext{set}|},
+ sort={|},
+ description={cardinality of $\gls{set}$}}
+
+\newglossaryentry{factorial}{%
+ type=symbols,
+ name={$!$},
+ text={!},
+ sort={!},
+ description={factorial}}
+
+ % index entries
+
+\newterm{seal}
+
+\newterm{dinosaur}
+
+\newterm[parent=dinosaur]{ceratopsidae}
+
+\newterm[parent=dinosaur,plural={stegosauruses}]{stegosaurus}
+\newterm[parent=ceratopsidae,plural={triceratopses}]{triceratops}
+\newterm[parent=ceratopsidae,plural={styracosauruses}]{styracosaurus}
+\newterm[parent=dinosaur,plural={apatosauruses}]{apatosaurus}
+
+\newterm{Triassic}
+
+\newterm{Devonian}
+
+\newterm[see={[see also]seal}]{sea lion}
+
+\begin{document}
+
+\chapter{Mathematical Notation}
+
+The cardinality of a set $\gls{set}$ is denoted $\gls{card}$
+The $\gls{factorial}$ symbol indicates factorial.
+$\gls{U}$ is the universal set.
+
+\glsaddall[types=main]
+
+\chapter{Dinosaurs}
+
+\Glspl{dinosaur} are now extinct. They first appeared during the
+\gls{Triassic} period. Examples of \glspl{dinosaur} include the
+\gls{triceratops}, the \gls{styracosaurus}, the \gls{apatosaurus} and the \gls{stegosaurus}.
+
+\Glspl{seal} and \glspl{sea lion} are marine mammals.
+The \gls{Devonian} period was the age of fish.
+
+\glsaddall[types=main]
+
+\chapter{Location Lists}
+
+Dinosaur: \glsdisplaynumberlist{dinosaur}.
+
+Set: \glsdisplaynumberlist{set}.
+
+\Gls{elite}: \glsdisplaynumberlist{elite}.
+
+\begin{equation}
+3\gls[counter=equation]{factorial} = 3 \times 2 \times 1
+\end{equation}
+
+\newcommand{\myhandler}[4]{%
+ Prefix: #1.
+ Counter: #2.
+ Format: #3.
+ Value: #4.
+ Link: \setentrycounter[#1]{#2}%
+ \csuse{#3}{#4}.
+ \par
+}
+\newcommand{\myxrhandler}[2][]{XR (#1): #2. }
+
+Factorial locations:
+\glsnumberlistloop{factorial}{\myhandler}{\myxrhandler}
+
+Sea lion locations:
+\glsnumberlistloop{sea lion}{\myhandler}{\myxrhandler}
+
+\printnoidxglossary[type=main,sort=word]
+
+\printnoidxglossary[type=symbols,sort=use]
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\printnoidxglossary[type=index,style=mcolindexgroup,sort=letter]
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-nomathhyper.pdf b/macros/latex/contrib/glossaries/samples/sample-nomathhyper.pdf
new file mode 100644
index 0000000000..68f48c57ab
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-nomathhyper.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-nomathhyper.tex b/macros/latex/contrib/glossaries/samples/sample-nomathhyper.tex
new file mode 100644
index 0000000000..16cc511eee
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-nomathhyper.tex
@@ -0,0 +1,42 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries}
+
+\GlsDeclareNoHyperList{main}
+
+\makeglossaries
+
+ % redefine \glsentryfmt so that it adds a hyperlink
+ % if not in math mode and the hyperlinks haven't been forced on
+\renewcommand*{\glsentryfmt}{%
+ \ifmmode
+ \glsgenentryfmt
+ \else
+ \glsifhyperon
+ {\glsgenentryfmt}% hyperlink already on
+ {\glshyperlink[\glsgenentryfmt]{\glslabel}}%
+ \fi
+}
+
+ % define a sample entry:
+\newglossaryentry{x}{name={x},description={sample entry}}
+
+\begin{document}
+\chapter{Sample}
+In text mode: \gls{x}. Inline maths: $\gls{x}$. Displayed
+maths:
+\[
+ \gls{x}
+\]
+
+Back to text mode again: \gls{x}. Don't check the first use flag:
+\glstext{x}. Force on the hyperlink: \glstext+{x}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-numberlist.pdf b/macros/latex/contrib/glossaries/samples/sample-numberlist.pdf
new file mode 100644
index 0000000000..b9a77de1ad
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-numberlist.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-numberlist.tex b/macros/latex/contrib/glossaries/samples/sample-numberlist.tex
new file mode 100644
index 0000000000..24b93edb49
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-numberlist.tex
@@ -0,0 +1,40 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[savenumberlist,counter=chapter]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name=sample,description=an example}
+
+\begin{document}
+\chapter{Introduction}
+
+This is a \glsentryname{sample} document. \Glsentryplural{sample}
+are discussed in chapters~\glsdisplaynumberlist{sample}.
+
+\chapter{Sample Documents}
+
+\Gls{sample} documents are provided for testing and illustration
+purposes.
+
+\chapter{More About Samples}
+
+Here's more information about \glspl{sample}.
+
+\chapter{Another chapter}
+
+A chapter about something else.
+
+\chapter{Another About Samples}
+
+Here's some more information about \glspl{sample}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-prefix.pdf b/macros/latex/contrib/glossaries/samples/sample-prefix.pdf
new file mode 100644
index 0000000000..661bdee4eb
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-prefix.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-prefix.tex b/macros/latex/contrib/glossaries/samples/sample-prefix.tex
new file mode 100644
index 0000000000..ab1260cc72
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-prefix.tex
@@ -0,0 +1,73 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,acronym]{glossaries-prefix}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},
+ description={an example},
+ prefix={a~},
+ prefixplural={the\space}%
+}
+
+\newglossaryentry{oeil}{name={oeil},
+ plural={yeux},
+ description={eye},
+ prefix={l'},
+ prefixplural={les\space}}
+
+\newacronym
+ [%
+ prefix={an\space},prefixfirst={a~}%
+ ]{svm}{SVM}{support vector machine}
+
+\newglossarystyle{plist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \Glsentryprefix{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+}
+
+\begin{document}
+
+\tableofcontents
+
+\section{Sample}
+
+First use: \pgls{sample}, \pgls{svm}, \pgls{oeil}. Next use: \pgls{sample}, \pgls{svm}, \pgls{oeil}.
+
+Reset. \glsresetall
+
+First use: \pglspl{sample}, \pglspl{svm}, \pglspl{oeil}. Next use:
+\pglspl{sample}, \pglspl{svm}, \pglspl{oeil}.
+
+Reset. \glsresetall
+
+First use: \Pgls{sample}, \Pgls{svm}. Next use: \Pgls{sample}, \Pgls{svm}.
+
+Reset. \glsresetall
+
+First use: \Pglspl{sample}, \Pglspl{svm}. Next use: \Pglspl{sample}, \Pglspl{svm}.
+
+Reset. \glsresetall
+
+First use: \PGLS{sample}, \PGLS{svm}. Next use: \PGLS{sample}, \PGLS{svm}.
+
+Reset. \glsresetall
+
+First use: \PGLSpl{sample}, \PGLSpl{svm}. Next use: \PGLSpl{sample}, \PGLSpl{svm}.
+
+\printglossary[style=plist]
+
+\printacronyms
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-si.pdf b/macros/latex/contrib/glossaries/samples/sample-si.pdf
new file mode 100644
index 0000000000..f8214a62e4
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-si.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-si.tex b/macros/latex/contrib/glossaries/samples/sample-si.tex
new file mode 100644
index 0000000000..f304dab711
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-si.tex
@@ -0,0 +1,22 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+\usepackage{siunitx}
+\usepackage[style=long4col]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{ohm}{%
+ name=ohm,
+ symbol={\si{\ohm}},
+ description=unit of electrical resistance%
+}
+
+\begin{document}
+\glsaddallunused
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.pdf b/macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.pdf
new file mode 100644
index 0000000000..85f8fdb628
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.tex b/macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.tex
new file mode 100644
index 0000000000..cccfad6397
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-storage-abbr-desc.tex
@@ -0,0 +1,147 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey
+ {abbrtype}% key/field name
+ {acronym}% default value if not explicitly set
+ {\abbrtype}% custom command to access the value if required
+
+\newacronymstyle
+ {mystyle}% style name
+ {% Use the generic display
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+ }
+ {% User needs to explicitly set the description
+ \renewcommand*{\GenericAcronymFields}{}%
+ % For the full format, test the value of the "abbrtype" key.
+ % If it's set to "acronym" put the short form first with
+ % the long form in brackets.
+ \renewcommand*{\genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % first letter upper case version:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % plural
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % plural and first letter upper case
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{acronym}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % Just use the short form as the name part in the glossary:
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ % Sort by the short form:
+ \renewcommand*{\acronymsort}[2]{##1}%
+ % Just use the surrounding font for the short form:
+ \renewcommand*{\acronymfont}[1]{##1}%
+ % Same for first use:
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ % Default plural suffix if the plural isn't explicitly set
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ }
+
+\setacronymstyle{mystyle}
+
+ % The default for "abbrtype" is "acronym" so we don't need
+ % this new key for acronyms:
+\newacronym[description={system for detecting the position and
+speed of aircraft, ships, etc}]{radar}{radar}{radio detecting
+and ranging}
+
+\newacronym[description={device that creates a narrow beam
+of intense light}]{laser}{laser}{light amplification by
+stimulated emission of radiation}
+
+\newacronym[description={portable breathing device for
+divers}]{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+\newcommand*{\newinitialism}[4][]{%
+ \newacronym[abbrtype=initialism,#1]{#2}{#3}{#4}%
+}
+
+\newinitialism[description={mathematical manipulation of an
+information signal}]{dsp}{DSP}{digital signal processing}
+\newinitialism[description={device that allows customers of
+financial institutions to perform transactions, such as
+cash withdrawal, without the need for a teller}]{atm}{ATM}
+{automated teller machine}
+
+\newcommand*{\newcontraction}[4][]{%
+ \newacronym[abbrtype=contraction,#1]{#2}{#3}{#4}%
+}
+
+\newcontraction[description={front part of a ship below the
+deck}]{focsle}{fo'c's'le}{forecastle}
+
+\newglossaryentry{apple}{name={apple},description={a fruit}}
+
+\newglossarystyle
+ {mystyle}% style name
+ {% base it on the "list" style
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \ifglshaslong{##1}%
+ { (\abbrtype{##1}: \glsentrylong{##1})\space}{}%
+ \glossentrydesc{##1}\glspostdescription\space ##2}%
+ }
+
+\setglossarystyle{mystyle}
+
+\begin{document}
+
+First use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}, \gls{focsle}.
+
+Next use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}, \gls{focsle}.
+
+Regular term: \gls{apple}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample-storage-abbr.pdf b/macros/latex/contrib/glossaries/samples/sample-storage-abbr.pdf
new file mode 100644
index 0000000000..8b5d4e4ff9
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-storage-abbr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample-storage-abbr.tex b/macros/latex/contrib/glossaries/samples/sample-storage-abbr.tex
new file mode 100644
index 0000000000..36949a2a6c
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample-storage-abbr.tex
@@ -0,0 +1,112 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex
+ % arara: makeglossaries
+ % arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsaddstoragekey
+ {abbrtype}% key/field name
+ {word}% default value if not explicitly set
+ {\abbrtype}% custom command to access the value if required
+
+\newacronymstyle
+ {mystyle}% style name
+ {% Use the generic display
+ \ifglshaslong{\glslabel}{\glsgenacfmt}{\glsgenentryfmt}%
+ }
+ {% Put the long form in the description
+ \renewcommand*{\GenericAcronymFields}{description={\the\glslongtok}}%
+ % For the full format, test the value of the "abbrtype" key.
+ % If it's set to "word" put the short form first with
+ % the long form in brackets.
+ \renewcommand*{\genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % first letter upper case version:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshort{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylong{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshort{##1}})%
+ }%
+ }%
+ % plural
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % plural and first letter upper case
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \ifglsfieldeq{##1}{abbrtype}{word}
+ {% is a proper acronym
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2\space
+ (\glsentrylong{##1})%
+ }
+ {% is another form of abbreviation
+ \Glsentrylongpl{##1}##2\space
+ (\protect\firstacronymfont{\glsentryshortpl{##1}})%
+ }%
+ }%
+ % Just use the short form as the name part in the glossary:
+ \renewcommand*{\acronymentry}[1]{\acronymfont{\glsentryshort{##1}}}%
+ % Sort by the short form:
+ \renewcommand*{\acronymsort}[2]{##1}%
+ % Just use the surrounding font for the short form:
+ \renewcommand*{\acronymfont}[1]{##1}%
+ % Same for first use:
+ \renewcommand*{\firstacronymfont}[1]{\acronymfont{##1}}%
+ % Default plural suffix if the plural isn't explicitly set
+ \renewcommand*{\acrpluralsuffix}{\glspluralsuffix}%
+ }
+
+\setacronymstyle{mystyle}
+
+ % The default for "abbrtype" is "acronym" so we don't need
+ % this new key for acronyms:
+\newacronym{radar}{radar}{radio detecting and ranging}
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+\newacronym{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+\newcommand*{\newinitialism}[4][]{%
+ \newacronym[abbrtype=initialism,#1]{#2}{#3}{#4}%
+}
+
+\newinitialism{dsp}{DSP}{digital signal processing}
+\newinitialism{atm}{ATM}{automated teller machine}
+
+\begin{document}
+
+First use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}.
+
+Next use: \gls{radar}, \gls{laser}, \gls{scuba}, \gls{dsp},
+\gls{atm}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample.pdf b/macros/latex/contrib/glossaries/samples/sample.pdf
new file mode 100644
index 0000000000..9b1748e0da
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample.tex b/macros/latex/contrib/glossaries/samples/sample.tex
new file mode 100644
index 0000000000..282eb7912b
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample.tex
@@ -0,0 +1,166 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[toc,style=treenoname,order=word,subentrycounter]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{Perl}{name=\texttt{Perl},
+sort=Perl, % need a sort key because name contains a command
+description=A scripting language}
+
+\newglossaryentry{glossary}{name=glossary,
+description={\nopostdesc},
+plural={glossaries}}
+
+\newglossaryentry{glossarycol}{
+description={collection of glosses},
+sort={2},
+parent={glossary}}
+
+\newglossaryentry{glossarylist}{
+description={list of technical words},
+sort={1},
+parent={glossary}}
+
+\newglossaryentry{pagelist}{name=page list,
+ % description value has to be enclosed in braces
+ % because it contains commas
+description={a list of individual pages or page ranges
+(e.g.\ 1,2,4,7-9)}}
+
+\newglossaryentry{mtrx}{name=matrix,
+description={rectangular array of quantities},
+ % plural is not simply obtained by appending an s, so specify
+plural=matrices}
+
+ % Entry with a paragraph break in the description:
+ % (If you use \newglossaryentry, the paragraph break
+ % must be identified with \glspar not with \par or a blank line.
+ % It's easier to use \longnewglossaryentry.)
+
+\longnewglossaryentry{par}% label
+{name=paragraph}% options
+{% multi-paragraph description
+distinct section of a piece of writing.
+
+Beginning on new, usually indented, line}
+
+ % entry with two types of plural. Set the plural form to the
+ % form most likely to be used. If you want to use a different
+ % plural, you will need to explicity specify it in \glslink
+\newglossaryentry{cow}{name=cow,
+ % this isn't necessary, as this form (appending an s) is
+ % the default
+plural=cows,
+ % description:
+description={(\emph{pl.}\ cows, \emph{archaic} kine) an adult
+female of any bovine animal}}
+
+\newglossaryentry{bravo}{name={bravo},
+description={\nopostdesc}}
+
+\newglossaryentry{bravo1}{description={cry of approval (pl.\ bravos)},
+sort={1},
+plural={bravos},
+parent=bravo}
+
+\newglossaryentry{bravo2}{description={hired ruffian or killer (pl.\ bravoes)},
+sort={2},
+plural={bravoes},
+parent=bravo}
+
+\newglossaryentry{seal}{%
+ name=seal,%
+ description={sea mammal with flippers that eats fish}
+}
+
+\newglossaryentry{sealion}{%
+ name={sea lion},%
+ description={large seal}%
+}
+
+ % If a value contains a comma, you must use braces to hide
+ % it from the key=value list parser. Take care to avoid
+ % accidentally introducing unwanted space as leading and trailing
+ % spaces within the braces aren't stripped. For example,
+ % text={ spurious space } will result in extra space appearing
+ % when the entry is referenced.
+\newglossaryentry{spuriousspace}{%
+ name={space, spurious},
+ text={spurious space},
+ description={unwanted spaces accidentally introduced by
+uncommented line breaks or attempts to pretty-print the \LaTeX\ code}
+}
+
+\begin{document}
+
+\title{Sample Document Using the glossaries Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}% prevent duplicate page link names if using PDF
+\maketitle
+
+\pagenumbering{roman}
+\tableofcontents
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+A \gls{glossarylist} (definition~\glsrefentry{glossarylist}) is a
+very useful addition to any technical document, although a
+\gls{glossarycol} (definition~\glsrefentry{glossarycol}) can also
+simply be a collection of glosses, which is another thing entirely.
+Some documents have multiple \glspl{glossarylist}.
+
+Once you have run your document through \LaTeX, you will then need
+to run the \texttt{.glo} file through \texttt{makeindex} (default)
+or \texttt{xindy}. You will need to set the output file so that the
+indexing application
+creates a \texttt{.gls} file instead of an \texttt{.ind} file, and
+change the name of the log file so that it doesn't overwrite the
+index log file (if you have an index for your document). Rather
+than having to remember all the command line switches, you can call
+the \gls{Perl} script \texttt{makeglossaries} which provides a
+convenient wrapper. See
+\href{https://www.dickimaw-books.com/latex/buildglossaries}{Incorporating makeglossaries or makeglossaries-lite or bib2gls into the document build} for help.
+
+If a comma appears within the name or description, grouping
+must be used, e.g.\ in the description of \gls{pagelist}.
+Be careful about \glspl{spuriousspace} appearing in your code.
+
+\chapter{Plurals and Paragraphs}
+
+Plurals are assumed to have the letter s appended, but if this is
+not the case, as in \glspl{mtrx}, then you need to specify the
+plural when you define the entry. If a term may have multiple
+plurals (for example \glspl{cow}/\glslink{cow}{kine}) then
+define the entry with the plural form most likely to be used and
+explicitly specify the alternative form using \verb|\glslink|
+(e.g.\ \glslink{cow}{kine})
+or \verb|\glsdisp| (e.g.\ \glsdisp{cow}{kine}).
+\Glspl{seal} and \glspl{sealion} have regular plural forms.
+
+\Gls{bravo} is a homograph, but the plural forms are spelt
+differently. The plural of \gls{bravo1}, a cry of approval
+(definition~\glsrefentry{bravo1}), is \glspl{bravo1}, whereas the
+plural of \gls{bravo2}, a hired ruffian or killer
+(definition~\glsrefentry{bravo2}), is \glspl{bravo2}.
+
+\Glspl{par} can cause a problem in commands, so care is needed
+when having a paragraph break in a \gls{glossarylist} entry.
+
+\chapter{Ordering}
+
+There are two types of ordering: word ordering (which places
+``\gls{sealion}'' before ``\gls{seal}'') and letter ordering
+(which places ``\gls{seal}'' before ``\gls{sealion}'').
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sample4col.pdf b/macros/latex/contrib/glossaries/samples/sample4col.pdf
new file mode 100644
index 0000000000..be3e4a1b2a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample4col.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sample4col.tex b/macros/latex/contrib/glossaries/samples/sample4col.tex
new file mode 100644
index 0000000000..1f6125dc1d
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sample4col.tex
@@ -0,0 +1,29 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{article}
+
+\usepackage[style=long4colheaderborder]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{w}{name={$w$},
+sort=w,
+description={width},
+symbol=m}
+
+\newglossaryentry{M}{name={$M$},
+sort=M,
+description={mass},
+symbol=kg}
+
+\begin{document}
+
+\printglossaries
+
+The width, \gls{w}, is measured in meters. The mass, \gls{M} is
+measured in kilograms.
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleAcr.pdf b/macros/latex/contrib/glossaries/samples/sampleAcr.pdf
new file mode 100644
index 0000000000..94e1cad38a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleAcr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleAcr.tex b/macros/latex/contrib/glossaries/samples/sampleAcr.tex
new file mode 100644
index 0000000000..41ae5fab96
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleAcr.tex
@@ -0,0 +1,88 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[style=long,% use 'long' style for the glossary
+ toc,% add glossary to table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Set the acronym style
+\setacronymstyle{long-sc-short}
+
+\newacronym{svm}% label
+{svm}% abbreviation
+{support vector machine}% long form
+
+\newacronym{ksvm}{ksvm}{kernel support vector machine}
+
+\newacronym{rna}{rna}{ribonukleins\"aure}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+\Glspl{svm} are used widely in the area of pattern recognition.
+Subsequent use: \gls{svm}.
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. Plural: \glspl{ksvm}. Resetting
+acronyms.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{ksvm}.
+
+\chapter{Short, Long and Full Forms}
+
+These commands don't affect the first use flag:
+
+\begin{center}
+\begin{tabular}{lll}
+ & Unstarred & Starred\\
+acrshort & \acrshort{svm} & \acrshort*{svm}\\
+Acrshort & \Acrshort{svm} & \Acrshort*{svm}\\
+ACRshort & \ACRshort{svm} & \ACRshort*{svm}\\
+acrlong & \acrlong{svm} & \acrlong*{svm}\\
+Acrlong & \Acrlong{svm} & \Acrlong*{svm}\\
+ACRlong & \ACRlong{svm} & \ACRlong*{svm}\\
+acrfull & \acrfull{svm} & \acrfull*{svm}\\
+Acrfull & \Acrfull{svm} & \Acrfull*{svm}\\
+ACRfull & \ACRfull{svm} & \ACRfull*{svm}\\
+\\
+& Insert Unstarred & Insert Starred\\
+acrshort & \acrshort{svm}['s] & \acrshort*{svm}['s]\\
+Acrshort & \Acrshort{svm}['s] & \Acrshort*{svm}['s]\\
+ACRshort & \ACRshort{svm}['s] & \ACRshort*{svm}['s]\\
+acrlong & \acrlong{svm}['s] & \acrlong*{svm}['s]\\
+Acrlong & \Acrlong{svm}['s] & \Acrlong*{svm}['s]\\
+ACRlong & \ACRlong{svm}['s] & \ACRlong*{svm}['s]\\
+acrfull & \acrfull{svm}['s] & \acrfull*{svm}['s]\\
+Acrfull & \Acrfull{svm}['s] & \Acrfull*{svm}['s]\\
+ACRfull & \ACRfull{svm}['s] & \ACRfull*{svm}['s]
+\end{tabular}
+\end{center}
+
+\chapter{Another chapter}
+
+You don't need to worry about makeindex's special characters:
+\gls{rna}.
+
+\printglossary[title={List of Acronyms}]
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleAcrDesc.pdf b/macros/latex/contrib/glossaries/samples/sampleAcrDesc.pdf
new file mode 100644
index 0000000000..e5e2bc6c4a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleAcrDesc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleAcrDesc.tex b/macros/latex/contrib/glossaries/samples/sampleAcrDesc.tex
new file mode 100644
index 0000000000..896bbbb1fb
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleAcrDesc.tex
@@ -0,0 +1,76 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[acronym,% create 'acronym' glossary type
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain,%
+ style=altlist, % use altlist style
+ toc, % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Change the acronym style to long-sc-short-desc:
+\setacronymstyle{long-sc-short-desc}
+
+ % Change the "see" items so that they use \acronymfont:
+\renewcommand*{\glsseeitemformat}[1]{\acronymfont{\glsentrytext{#1}}}
+
+ % Not using a font that supports bold smallcaps so change the way
+ % the name is formatted in the glossary:
+
+\renewcommand*{\glsnamefont}[1]{\textmd{#1}}
+
+\newacronym[description={Statistical pattern recognition
+technique~\protect\cite{svm}}, % acronym's description
+]{svm}{svm}{support vector machine}
+
+\newacronym
+ [description={Statistical pattern recognition technique
+ using the ``kernel trick''},% acronym's description
+ see={[see also]{svm}},
+]
+{ksvm}{ksvm}{kernel support vector machine}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots\ (but beware, converting the initial letter to
+upper case for a small caps acronym is sometimes considered
+poor style).
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleCustomAcr.pdf b/macros/latex/contrib/glossaries/samples/sampleCustomAcr.pdf
new file mode 100644
index 0000000000..04654f3a9e
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleCustomAcr.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleCustomAcr.tex b/macros/latex/contrib/glossaries/samples/sampleCustomAcr.tex
new file mode 100644
index 0000000000..084f5b7c98
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleCustomAcr.tex
@@ -0,0 +1,115 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[acronym,% create 'acronym' glossary type
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain,
+ style=altlist, % use altlist style
+ toc, % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Define a new acronym style called "altfn" that's based on the
+ % footnote-sc-desc style
+
+\newacronymstyle
+ {altfn}% style name
+ {% Inherit display style from "footnote-sc-desc"
+ \GlsUseAcrEntryDispStyle{footnote-sc-desc}%
+ }%
+ {% Inherit definitions from "footnote-sc-desc"
+ \GlsUseAcrStyleDefs{footnote-sc-desc}%
+ % Modify the first use display styles so they put the long form
+ % followed by the description in the footnote:
+ %
+ % First use of \gls:
+ \renewcommand*{\genacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % First use of \Gls:
+ \renewcommand*{\Genacrfullformat}[2]{%
+ \firstacronymfont{\Glsentryshort{##1}}##2%
+ \protect\footnote{\glsentrylong{##1}: \glsentrydesc{##1}}%
+ }%
+ % First use of \glspl:
+ \renewcommand*{\genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % First use of \Glspl:
+ \renewcommand*{\Genplacrfullformat}[2]{%
+ \protect\firstacronymfont{\Glsentryshortpl{##1}}##2%
+ \protect\footnote{\glsentrylongpl{##1}: \glsentrydesc{##1}}%
+ }%
+ % Sort according to long form:
+ \renewcommand*{\acronymsort}[2]{##2}%
+ % Set the name (as displayed in the glossary) to long (short)
+ \renewcommand*{\acronymentry}[1]{%
+ \glsentrylong{##1} (\acronymfont{\glsentryshort{##1}})}%
+ % Since bold small caps isn't supported with this document's
+ % fonts, adjust \acronymfont so that it switches to medium
+ % small caps:
+ \renewcommand{\acronymfont}[1]{\textmd{\scshape ##1}}%
+ }
+
+ % Now use this new style:
+\setacronymstyle{altfn}
+
+ % Change the "see" items so that they use \acronymfont:
+\renewcommand*{\glsseeitemformat}[1]{\acronymfont{\glsentrytext{#1}}}
+
+\newacronym[description={Statistical pattern recognition
+technique~\protect\cite{svm}}, % acronym's description
+]{svm}{svm}{support vector machine}
+
+\newacronym[description={Statistical pattern recognition technique
+using the ``kernel trick''},% acronym's description
+see={[see also]{svm}},
+]{ksvm}{ksvm}{kernel
+support vector machine}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots\ (but beware, converting the initial letter to
+upper case for a small caps acronym is sometimes considered
+poor style).
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
+
+\glsresetall
+(Reset all.)
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleDB.pdf b/macros/latex/contrib/glossaries/samples/sampleDB.pdf
new file mode 100644
index 0000000000..6845e69aca
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleDB.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleDB.tex b/macros/latex/contrib/glossaries/samples/sampleDB.tex
new file mode 100644
index 0000000000..cbcd1723b9
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleDB.tex
@@ -0,0 +1,24 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[nonumberlist]{glossaries}
+
+\newglossary[nlg]{symbols}{not}{ntn}{Symbols}
+
+\makeglossaries
+
+\loadglsentries{database1}
+\loadglsentries[symbols]{database2}
+
+\begin{document}
+
+\glsaddall
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleDesc.pdf b/macros/latex/contrib/glossaries/samples/sampleDesc.pdf
new file mode 100644
index 0000000000..e7c833d7a2
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleDesc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleDesc.tex b/macros/latex/contrib/glossaries/samples/sampleDesc.tex
new file mode 100644
index 0000000000..4f69d980a0
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleDesc.tex
@@ -0,0 +1,71 @@
+ % This file is public domain
+ %
+ % See also sampleAcrDesc.tex
+ %
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+
+\usepackage[style=altlist, % use altlist style
+ toc % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{svm}{
+ % how the entry name should appear in the glossary
+name={Support vector machine (SVM)},
+ % how the description should appear in the glossary
+description={Statistical pattern recognition
+technique~\cite{svm}},
+ % how the entry should appear in the document text
+text={svm},
+ % how the entry should appear the first time it is
+ % used in the document text
+first={support vector machine (svm)}}
+
+\newglossaryentry{ksvm}{
+name={Kernel support vector machine (KSVM)},
+description={Statistical pattern recognition technique
+using the ``kernel trick'' (see also SVM)},
+text={ksvm},
+first={kernel support vector machine}}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots
+
+This is the text produced without a link: \glsentrytext{svm}.
+This is the text produced on first use without a link:
+\glsentryfirst{svm}. This is the entry's description without
+a link: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary[title={Acronyms}]
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleEq.pdf b/macros/latex/contrib/glossaries/samples/sampleEq.pdf
new file mode 100644
index 0000000000..37a7d5cfe8
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleEq.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleEq.tex b/macros/latex/contrib/glossaries/samples/sampleEq.tex
new file mode 100644
index 0000000000..9fb85acaad
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleEq.tex
@@ -0,0 +1,239 @@
+ % This file is public domain
+\documentclass[a4paper,12pt]{report}
+
+\usepackage{amsmath}
+\usepackage[colorlinks]{hyperref}
+\usepackage[xindy,toc,ucmark,style=long3colheader,counter=equation]{glossaries}
+
+\makeglossaries
+
+\newcommand{\erf}{\operatorname{erf}}
+\newcommand{\erfc}{\operatorname{erfc}}
+
+\pagestyle{headings}
+
+ % redefine the way hyperref creates the target for equations
+ % so that the glossary links to equation numbers work
+
+ \renewcommand*\theHequation{\theHchapter.\arabic{equation}}
+
+ % Change the glossary headings
+
+\renewcommand{\entryname}{Notation}
+\renewcommand{\descriptionname}{Function Name}
+\renewcommand{\pagelistname}{Number of Formula}
+
+ % define glossary entries
+
+\newglossaryentry{Gamma}{name=\ensuremath{\Gamma(z)},
+description=Gamma function,
+sort=Gamma}
+
+\newglossaryentry{gamma}{name={\ensuremath{\gamma(\alpha,x)}},
+description=Incomplete gamma function,
+sort=gamma1}
+
+\newglossaryentry{iGamma}{name={\ensuremath{\Gamma(\alpha,x)}},
+description=Incomplete gamma function,
+sort=Gamma2}
+
+\newglossaryentry{psi}{name=\ensuremath{\psi(x)},
+description=Psi function,sort=psi}
+
+\newglossaryentry{erf}{name=\ensuremath{\erf(x)},
+description=Error function,sort=erf}
+
+\newglossaryentry{erfc}{name=\ensuremath{\erfc},
+description=Complementary error function,sort=erfc}
+
+\newglossaryentry{B}{name={\ensuremath{B(x,y)}},
+description=Beta function,sort=B}
+
+\newglossaryentry{Bx}{name={\ensuremath{B_x(p,q)}},
+description=Incomplete beta function,sort=Bx}
+
+\newglossaryentry{Tn}{name=\ensuremath{T_n(x)},
+description=Chebyshev's polynomials of the first kind,sort=Tn}
+
+\newglossaryentry{Un}{name=\ensuremath{U_n(x)},
+description=Chebyshev's polynomials of the second kind,sort=Un}
+
+\newglossaryentry{Hn}{name=\ensuremath{H_n(x)},
+description=Hermite polynomials,sort=Hn}
+
+\newglossaryentry{Ln}{name=\ensuremath{L_n^\alpha(x)},
+description=Laguerre polynomials,sort=Lna}
+
+\newglossaryentry{Znu}{name=\ensuremath{Z_\nu(z)},
+description=Bessel functions,sort=Z}
+
+\newglossaryentry{Phi}{name={\ensuremath{\Phi(\alpha,\gamma;z)}},
+description=confluent hypergeometric function,sort=Pagz}
+
+\newglossaryentry{knu}{name=\ensuremath{k_\nu(x)},
+description=Bateman's function,sort=kv}
+
+\newglossaryentry{Dp}{name=\ensuremath{D_p(z)},
+description=Parabolic cylinder functions,sort=Dp}
+
+\newglossaryentry{F}{name={\ensuremath{F(\phi,k)}},
+description=Elliptical integral of the first kind,sort=Fpk}
+
+\newglossaryentry{C}{name=\ensuremath{C},
+description=Euler's constant,sort=C}
+
+\newglossaryentry{G}{name=\ensuremath{G},
+description=Catalan's constant,sort=G}
+
+\begin{document}
+\title{A Sample Document Using glossaries.sty}
+\author{Nicola Talbot}
+\maketitle
+
+\begin{abstract}
+This is a sample document illustrating the use of the \textsf{glossaries}
+package. The functions here have been taken from ``Tables of
+Integrals, Series, and Products'' by I.S.~Gradshteyn and I.M~Ryzhik.
+The glossary is a list of special functions, so
+the equation number has been used rather than the page number. This
+can be done using the \texttt{counter=equation} package
+option.
+\end{abstract}
+
+\printglossary[title={Index of Special Functions and Notations}]
+
+\chapter{Gamma Functions}
+
+\begin{equation}
+\gls{Gamma} = \int_{0}^{\infty}e^{-t}t^{z-1}\,dt
+\end{equation}
+
+\verb|\ensuremath| is only required here if using
+hyperlinks.
+\begin{equation}
+\glslink{Gamma}{\ensuremath{\Gamma(x+1)}} = x\Gamma(x)
+\end{equation}
+
+\begin{equation}
+\gls{gamma} = \int_0^x e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{iGamma} = \int_x^\infty e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\newpage
+
+\begin{equation}
+\gls{Gamma} = \Gamma(\alpha, x) + \gamma(\alpha, x)
+\end{equation}
+
+\begin{equation}
+\gls{psi} = \frac{d}{dx}\ln\Gamma(x)
+\end{equation}
+
+\chapter{Error Functions}
+
+\begin{equation}
+\gls{erf} = \frac{2}{\surd\pi}\int_0^x e^{-t^2}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{erfc} = 1 - \erf(x)
+\end{equation}
+
+\chapter{Beta Function}
+
+\begin{equation}
+\gls{B} = 2\int_0^1 t^{x-1}(1-t^2)^{y-1}\,dt
+\end{equation}
+Alternatively:
+\begin{equation}
+\gls{B} = 2\int_0^{\frac\pi2}\sin^{2x-1}\phi\cos^{2y-1}\phi\,d\phi
+\end{equation}
+
+\begin{equation}
+\gls{B} = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} = B(y,x)
+\end{equation}
+
+\begin{equation}
+\gls{Bx} = \int_0^x t^{p-1}(1-t)^{q-1}\,dt
+\end{equation}
+
+\chapter{Polynomials}
+
+\section{Chebyshev's polynomials}
+
+\begin{equation}
+\gls{Tn} = \cos(n\arccos x)
+\end{equation}
+
+\begin{equation}
+\gls{Un} = \frac{\sin[(n+1)\arccos x]}{\sin[\arccos x]}
+\end{equation}
+
+\section{Hermite polynomials}
+
+\begin{equation}
+\gls{Hn} = (-1)^n e^{x^2} \frac{d^n}{dx^n}(e^{-x^2})
+\end{equation}
+
+\section{Laguerre polynomials}
+
+\begin{equation}
+L_n^{\alpha} (x) = \frac{1}{n!}e^x x^{-\alpha}
+\frac{d^n}{dx^n}(e^{-x}x^{n+\alpha})
+\end{equation}
+
+\chapter{Bessel Functions}
+
+Bessel functions $Z_\nu$ are solutions of
+\begin{equation}
+\frac{d^2\glslink{Znu}{Z_\nu}}{dz^2}
++ \frac{1}{z}\,\frac{dZ_\nu}{dz} +
+\left( 1-\frac{\nu^2}{z^2}Z_\nu = 0 \right)
+\end{equation}
+
+\chapter{Confluent hypergeometric function}
+
+\begin{equation}
+\gls{Phi} = 1 + \frac{\alpha}{\gamma}\,\frac{z}{1!}
++ \frac{\alpha(\alpha+1)}{\gamma(\gamma+1)}\,\frac{z^2}{2!}
++\frac{\alpha(\alpha+1)(\alpha+2)}{\gamma(\gamma+1)(\gamma+2)}\,
+\frac{z^3}{3!} + \cdots
+\end{equation}
+
+\begin{equation}
+\gls{knu} = \frac{2}{\pi}\int_0^{\pi/2}
+\cos(x \tan\theta - \nu\theta)\,d\theta
+\end{equation}
+
+\chapter{Parabolic cylinder functions}
+
+\begin{equation}
+\gls{Dp} = 2^{\frac{p}{2}}e^{-\frac{z^2}{4}}
+\left\{
+\frac{\surd\pi}{\Gamma\left(\frac{1-p}{2}\right)}
+\Phi\left(-\frac{p}{2},\frac{1}{2};\frac{z^2}{2}\right)
+-\frac{\sqrt{2\pi}z}{\Gamma\left(-\frac{p}{2}\right)}
+\Phi\left(\frac{1-p}{2},\frac{3}{2};\frac{z^2}{2}\right)
+\right\}
+\end{equation}
+
+\chapter{Elliptical Integral of the First Kind}
+
+\begin{equation}
+\gls{F} = \int_0^\phi \frac{d\alpha}{\sqrt{1-k^2\sin^2\alpha}}
+\end{equation}
+
+\chapter{Constants}
+
+\begin{equation}
+\gls{C} = 0.577\,215\,664\,901\ldots
+\end{equation}
+
+\begin{equation}
+\gls{G} = 0.915\,965\,594\ldots
+\end{equation}
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleEqPg.pdf b/macros/latex/contrib/glossaries/samples/sampleEqPg.pdf
new file mode 100644
index 0000000000..48cf778f0a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleEqPg.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleEqPg.tex b/macros/latex/contrib/glossaries/samples/sampleEqPg.tex
new file mode 100644
index 0000000000..d00d89ccaf
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleEqPg.tex
@@ -0,0 +1,295 @@
+ % This file is public domain
+ %
+ % To ensure that the page numbers are up-to-date:
+ %
+ % latex sampleEqPg
+ % makeglossaries sampleEqPg
+ % latex sampleEqPg
+ % makeglossaries sampleEqPg
+ % latex sampleEqPg
+ %
+ % The extra makeglossaries run is required because adding the
+ % glossary in the second LaTeX run shifts the page numbers on
+ % which means that the glossary needs to be updated again.
+ % (Note that this problem is avoided if the page numbering is
+ % reset after the glossary. For example, if the glossary has
+ % roman numbering and the subsequent pages have arabic numbering)
+ %
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper,12pt]{report}
+
+\usepackage{amsmath}
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=long3colheader,toc,
+ counter=equation]{glossaries}
+
+\newcommand{\erf}{\operatorname{erf}}
+\newcommand{\erfc}{\operatorname{erfc}}
+
+ % redefine the way hyperref creates the target for equations
+ % so that the glossary links to equation numbers work
+
+\renewcommand*\theHequation{\thechapter.\arabic{equation}}
+
+\renewcommand{\glossaryname}{Index of Special Functions and Notations}
+
+\renewcommand{\glossarypreamble}{Numbers in italic indicate the equation number,
+numbers in bold indicate page numbers where the main definition occurs.\par}
+
+ % set the glossary number style to italic
+ % hyperit is used instead of textit because
+ % the hyperref package is being used.
+\renewcommand{\glsnumberformat}[1]{\hyperit{#1}}
+
+ % 1st column heading
+\renewcommand{\entryname}{Notation}
+
+ % 2nd column heading
+\renewcommand{\descriptionname}{Function Name}
+
+ % 3rd column heading
+\renewcommand{\pagelistname}{}
+
+ % Redefine header row so that it
+ % adds a blank row after the title row
+\renewcommand{\glossaryheader}{\bfseries\entryname &
+\bfseries\descriptionname&\bfseries\pagelistname\\
+& & \\\endhead}
+
+ % Define glossary entries
+
+\newglossaryentry{Gamma}{name=\ensuremath{\Gamma(z)},
+description=Gamma function,sort=Gamma}
+
+\newglossaryentry{gamma}{name=\ensuremath{\gamma(\alpha,x)},
+description=Incomplete gamma function,sort=gamma}
+
+\newglossaryentry{iGamma}{name=\ensuremath{\Gamma(\alpha,x)},
+description=Incomplete gamma function,sort=Gamma}
+
+\newglossaryentry{psi}{name=\ensuremath{\psi(x)},
+description=Psi function,sort=psi}
+
+\newglossaryentry{erf}{name=\ensuremath{\erf(x)},
+description=Error function,sort=erf}
+
+\newglossaryentry{erfc}{name=\ensuremath{\erfc(x)},
+description=Complementary error function,sort=erfc}
+
+\newglossaryentry{beta}{name=\ensuremath{B(x,y)},
+description=Beta function,sort=B}
+
+\newglossaryentry{Bx}{name=\ensuremath{B_x(p,q)},
+description=Incomplete beta function,sort=Bx}
+
+\newglossaryentry{Tn}{name=\ensuremath{T_n(x)},
+description=Chebyshev's polynomials of the first kind,
+sort=Tn}
+
+\newglossaryentry{Un}{name=\ensuremath{U_n(x)},
+description=Chebyshev's polynomials of the second kind,
+sort=Un}
+
+\newglossaryentry{Hn}{name=\ensuremath{H_n(x)},
+description=Hermite polynomials,sort=Hn}
+
+\newglossaryentry{Lna}{name=\ensuremath{L_n^\alpha(x)},
+description=Laguerre polynomials,sort=Lna}
+
+\newglossaryentry{Znu}{name=\ensuremath{Z_\nu(z)},
+description=Bessel functions,sort=Z}
+
+\newglossaryentry{Pagz}{name=\ensuremath{\Phi(\alpha,\gamma;z)},
+description=confluent hypergeometric function,sort=Pagz}
+
+\newglossaryentry{kv}{name=\ensuremath{k_\nu(x)},
+description=Bateman's function,sort=kv}
+
+\newglossaryentry{Dp}{name=\ensuremath{D_p(z)},
+description=Parabolic cylinder functions,sort=Dp}
+
+\newglossaryentry{Fpk}{name=\ensuremath{F(\phi,k)},
+description=Elliptical integral of the first kind,sort=Fpk}
+
+\newglossaryentry{C}{name=\ensuremath{C},
+description=Euler's constant,sort=C}
+
+\newglossaryentry{G}{name=\ensuremath{G},
+description=Catalan's constant,sort=G}
+
+\makeglossaries
+
+\pagestyle{headings}
+
+\begin{document}
+
+\title{Sample Document Using Interchangable Numbering}
+\author{Nicola Talbot}
+\maketitle
+
+\begin{abstract}
+This is a sample document illustrating the use of the \textsf{glossaries}
+package. The functions here have been taken from ``Tables of
+Integrals, Series, and Products'' by I.S.~Gradshteyn and I.M~Ryzhik.
+
+The glossary lists both page numbers and equation numbers.
+Since the majority of the entries use the equation number,
+\texttt{counter=equation} was used as a package option.
+Note that this example will only work where the
+page number and equation number compositor is the same. So
+it won't work if, say, the page numbers are of the form
+2-4 and the equation numbers are of the form 4.6.
+As most of the glossary entries should have an italic
+format, it is easiest to set the default format to
+italic.
+
+\end{abstract}
+
+\tableofcontents
+
+\printglossary[toctitle={Special Functions}]
+
+\chapter{Gamma Functions}
+
+The \glslink[format=hyperbf,counter=page]{Gamma}{gamma function} is
+defined as
+\begin{equation}
+\gls{Gamma} = \int_{0}^{\infty}e^{-t}t^{z-1}\,dt
+\end{equation}
+
+\begin{equation}
+\glslink{Gamma}{\ensuremath{\Gamma(x+1)}} = x\Gamma(x)
+\end{equation}
+
+\begin{equation}
+\gls{gamma} = \int_0^x e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{iGamma} = \int_x^\infty e^{-t}t^{\alpha-1}\,dt
+\end{equation}
+
+\newpage
+
+\begin{equation}
+\glslink{Gamma}{\ensuremath{\Gamma(\alpha)}} =
+\Gamma(\alpha, x) + \gamma(\alpha, x)
+\end{equation}
+
+\begin{equation}
+\gls{psi} = \frac{d}{dx}\ln\Gamma(x)
+\end{equation}
+
+\chapter{Error Functions}
+
+The \glslink[format=hyperbf,counter=page]{erf}{error function} is defined as:
+\begin{equation}
+\gls{erf} = \frac{2}{\surd\pi}\int_0^x e^{-t^2}\,dt
+\end{equation}
+
+\begin{equation}
+\gls{erfc} = 1 - \erf(x)
+\end{equation}
+
+\chapter{Beta Function}
+
+\begin{equation}
+\gls{beta} = 2\int_0^1 t^{x-1}(1-t^2)^{y-1}\,dt
+\end{equation}
+Alternatively:
+\begin{equation}
+\gls{beta} = 2\int_0^{\frac\pi2}\sin^{2x-1}\phi\cos^{2y-1}\phi\,d\phi
+\end{equation}
+
+\begin{equation}
+\gls{beta} = \frac{\Gamma(x)\Gamma(y)}{\Gamma(x+y)} = B(y,x)
+\end{equation}
+
+\begin{equation}
+\gls{Bx} = \int_0^x t^{p-1}(1-t)^{q-1}\,dt
+\end{equation}
+
+\chapter{Chebyshev's polynomials}
+
+\begin{equation}
+\gls{Tn} = \cos(n\arccos x)
+\end{equation}
+
+\begin{equation}
+\gls{Un} = \frac{\sin[(n+1)\arccos x]}{\sin[\arccos x]}
+\end{equation}
+
+\chapter{Hermite polynomials}
+
+\begin{equation}
+\gls{Hn} = (-1)^n e^{x^2} \frac{d^n}{dx^n}(e^{-x^2})
+\end{equation}
+
+\chapter{Laguerre polynomials}
+
+\begin{equation}
+\gls{Lna} = \frac{1}{n!}e^x x^{-\alpha}
+\frac{d^n}{dx^n}(e^{-x}x^{n+\alpha})
+\end{equation}
+
+\chapter{Bessel Functions}
+
+Bessel functions $Z_\nu(z)$ are solutions of
+\begin{equation}
+\frac{d^2\glslink{Znu}{Z_\nu}}{dz^2} + \frac{1}{z}\,\frac{dZ_\nu}{dz} +
+\left(
+1-\frac{\nu^2}{z^2}Z_\nu = 0
+\right)
+\end{equation}
+
+\chapter{Confluent hypergeometric function}
+
+\begin{equation}
+\gls{Pagz} = 1 + \frac{\alpha}{\gamma}\,\frac{z}{1!}
++ \frac{\alpha(\alpha+1)}{\gamma(\gamma+1)}\,\frac{z^2}{2!}
++\frac{\alpha(\alpha+1)(\alpha+2)}
+ {\gamma(\gamma+1)(\gamma+2)}
+\,\frac{z^3}{3!}
++ \cdots
+\end{equation}
+
+\begin{equation}
+\gls{kv} = \frac{2}{\pi}\int_0^{\pi/2}
+\cos(x \tan\theta - \nu\theta)\,d\theta
+\end{equation}
+
+\chapter{Parabolic cylinder functions}
+
+\begin{equation}
+\gls{Dp} = 2^{\frac{p}{2}}e^{-\frac{z^2}{4}}
+\left\{
+\frac{\surd\pi}{\Gamma\left(\frac{1-p}{2}\right)}
+\Phi\left(-\frac{p}{2},\frac{1}{2};\frac{z^2}{2}\right)
+-\frac{\sqrt{2\pi}z}{\Gamma\left(-\frac{p}{2}\right)}
+\Phi\left(\frac{1-p}{2},\frac{3}{2};\frac{z^2}{2}\right)
+\right\}
+\end{equation}
+
+\chapter{Elliptical Integral of the First Kind}
+
+\begin{equation}
+\gls{Fpk} = \int_0^\phi
+\frac{d\alpha}{\sqrt{1-k^2\sin^2\alpha}}
+\end{equation}
+
+\chapter{Constants}
+
+\begin{equation}
+\gls{C} = 0.577\,215\,664\,901\ldots
+\end{equation}
+
+\begin{equation}
+\gls{G} = 0.915\,965\,594\ldots
+\end{equation}
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.pdf b/macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.pdf
new file mode 100644
index 0000000000..72b64c8359
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.tex b/macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.tex
new file mode 100644
index 0000000000..8ea1f3883c
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleFnAcrDesc.tex
@@ -0,0 +1,79 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{report}
+
+\usepackage[colorlinks,plainpages=false]{hyperref}
+\usepackage[acronym,% create 'acronym' glossary type
+ % The package option "nomain" is used here to suppress the
+ % main glossary, since this example doesn't use it. If you
+ % want to use the main glossary, remove the "nomain" option.
+ nomain,
+ style=altlist, % use altlist style
+ toc, % add the glossary to the table of contents
+ ]{glossaries}
+
+\makeglossaries
+
+ % Change the acronym style to a small-caps footnote style:
+\setacronymstyle{footnote-sc-desc}
+
+ % Make some minor adjustments to the style:
+\renewcommand*{\acronymsort}[2]{#1}% sort by short form
+\renewcommand*{\acronymentry}[1]{%
+ \acronymfont{\glsentryshort{#1}}\space (\glsentrylong{#1})}
+
+ % Not using a font that supports bold smallcaps so ensure
+ % the acronym is always in medium weight.
+\renewcommand*{\acronymfont}[1]{\textmd{\scshape #1}}
+
+ % Change the "see" items so that they use \acronymfont:
+\renewcommand*{\glsseeitemformat}[1]{\acronymfont{\glsentrytext{#1}}}
+
+\newacronym[description={Statistical pattern recognition
+technique~\protect\cite{svm}}, % acronym's description
+]{svm}{svm}{support vector machine}
+
+\newacronym[description={Statistical pattern recognition technique
+using the ``kernel trick''},% acronym's description
+see={[see also]{svm}},
+]{ksvm}{ksvm}{kernel
+support vector machine}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Support Vector Machines}
+
+The \gls{svm} is used widely in the area of pattern recognition.
+ % plural form with initial letter in uppercase:
+\Glspl{svm} are \ldots\ (but beware, converting the initial letter to
+upper case for a small caps acronym is sometimes considered
+poor style).
+
+Short version: \acrshort{svm}. Long version: \acrlong{svm}. Full
+version: \acrfull{svm}. Description: \glsentrydesc{svm}.
+
+This is the entry in uppercase: \GLS{svm}.
+
+\chapter{Kernel Support Vector Machines}
+
+The \gls{ksvm} is \ifglsused{svm}{an}{a} \gls{svm} that uses
+the so called ``kernel trick''. This is the entry's description without
+a link: \glsentrydesc{ksvm}.
+
+\glsresetall
+Possessive: \gls{ksvm}['s].
+Make the glossary entry number bold for this
+one \gls[format=hyperbf]{svm}.
+
+\begin{thebibliography}{1}
+\bibitem{svm} \ldots
+\end{thebibliography}
+
+\printglossary
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleNtn.pdf b/macros/latex/contrib/glossaries/samples/sampleNtn.pdf
new file mode 100644
index 0000000000..27c58518cc
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleNtn.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleNtn.tex b/macros/latex/contrib/glossaries/samples/sampleNtn.tex
new file mode 100644
index 0000000000..639e6d0c7a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleNtn.tex
@@ -0,0 +1,90 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+ % If you want to add babel to this document, you may have to
+ % replace the : character in the labels if you are using a
+ % language setting (e.g. french) that makes : active.
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage{html}
+\usepackage[toc,xindy]{glossaries}
+
+ % Define a new glossary type called notation
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+
+\makeglossaries
+
+ % Notation definitions
+
+\newglossaryentry{not:set}{type=notation, % glossary type
+name={$\mathcal{S}$},
+description={A set},
+sort={S}}
+
+\newglossaryentry{not:U}{type=notation,
+name={$\mathcal{U}$},
+description={The universal set},
+sort=U}
+
+\newglossaryentry{not:card}{type=notation,
+name={$|\mathcal{S}|$},
+description={cardinality of $\mathcal{S}$},
+sort=cardinality}
+
+\newglossaryentry{not:fact}{type=notation,
+name={$!$},
+description={factorial},
+sort=factorial}
+
+ % Main glossary definitions
+
+\newglossaryentry{gls:set}{name=set,
+description={A collection of distinct objects}}
+
+\newglossaryentry{gls:card}{name=cardinality,
+description={The number of elements in the specified set}}
+
+\begin{document}
+\title{Sample Document using the glossaries Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}
+\maketitle
+
+\begin{abstract}
+ %stop hyperref complaining about duplicate page identifiers:
+\pagenumbering{Alph}
+This is a sample document illustrating the use of the
+\textsf{glossaries} package. In this example, a new glossary type
+called \texttt{notation} is defined, so that the document can have a
+separate glossary of terms and index of notation. The index of notation
+doesn't have associated numbers.
+\end{abstract}
+
+\pagenumbering{roman}
+\tableofcontents
+
+\printglossaries
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+\Glspl{gls:set} are denoted by a calligraphic font
+e.g.\ \gls{not:set}.
+
+Let \gls[format=hyperit]{not:U} denote the universal set.
+
+The \gls{gls:card} of a set $\mathcal{S}$ is denoted
+\gls{not:card}.
+
+\chapter{Another Chapter}
+
+Another mention of the universal set \gls{not:U}.
+
+The factorial symbol: \gls{not:fact}.
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/samplePeople.pdf b/macros/latex/contrib/glossaries/samples/samplePeople.pdf
new file mode 100644
index 0000000000..48760f5264
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplePeople.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/samplePeople.tex b/macros/latex/contrib/glossaries/samples/samplePeople.tex
new file mode 100644
index 0000000000..258dc3e8eb
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplePeople.tex
@@ -0,0 +1,57 @@
+ % This file is public domain
+ % If you are using arara, you need the following directives:
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[toc,style=listgroup]{glossaries}
+
+\makeglossaries
+
+\newcommand{\sortname}[2]{#2, #1}
+\newcommand{\textname}[2]{#1 #2}
+
+ % Syntax: \name{first name}{surname}
+ \let\name\textname
+
+\renewcommand{\glsprestandardsort}[3]{%
+ \let\name\sortname
+ \edef#1{\expandafter\expandonce\expandafter{#1}}%
+ \let\name\textname
+ \glsdosanitizesort
+}
+
+\newglossaryentry{joebloggs}{name={\name{Joe}{Bloggs}},description={\nopostdesc}}
+
+\newglossaryentry{johnsmith}{name={\name{John}{Smith}},description={\nopostdesc}}
+
+\newglossaryentry{zoeadams}{name={\name{Zo\'e}{Adams}},description={\nopostdesc}}
+
+\newglossaryentry{maryadams}{name={\name{Mary}{Adams}},description={\nopostdesc}}
+
+\begin{document}
+\tableofcontents
+
+\chapter{\glsentrytext{joebloggs}}
+
+\gls{joebloggs} was a fairly ordinary person.
+
+\chapter{\glsentrytext{johnsmith}}
+
+\gls{johnsmith} was great friends with \gls{joebloggs}.
+
+\chapter{\glsentrytext{maryadams}}
+
+\gls{maryadams} worked with \gls{johnsmith} but never met
+\gls{joebloggs}.
+
+\chapter{\glsentrytext{zoeadams}}
+
+\gls{zoeadams} was \gls{maryadams}['s] sister.
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleSec.pdf b/macros/latex/contrib/glossaries/samples/sampleSec.pdf
new file mode 100644
index 0000000000..cd9ac522fe
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleSec.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleSec.tex b/macros/latex/contrib/glossaries/samples/sampleSec.tex
new file mode 100644
index 0000000000..f9e5696671
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleSec.tex
@@ -0,0 +1,64 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[style=altlist,toc,counter=section]{glossaries}
+
+\makeglossaries
+
+\newglossaryentry{ident}{name=identity matrix,
+description=diagonal matrix with 1s along the leading diagonal,
+plural=identity matrices}
+
+\newglossaryentry{diag}{name=diagonal matrix,
+description=matrix whose only non-zero entries are along
+the leading diagonal,
+plural=diagonal matrices}
+
+\newglossaryentry{sing}{name=singular matrix,
+description=matrix with zero determinant,
+plural=singular matrices}
+
+\begin{document}
+
+\pagenumbering{roman}
+\tableofcontents
+
+\printglossaries
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+This is a sample document illustrating the use of the
+\textsf{glossaries} package.
+
+\chapter{Diagonal matrices}
+
+A \gls[format=hyperit]{diag} is a matrix where all elements not on the
+leading diagonal are zero. This is the
+primary definition, so an italic font is used for the page number.
+
+\newpage
+\section{Identity matrix}
+The \gls[format=hyperit]{ident} is a \gls{diag} whose leading
+diagonal elements are all equal to 1.
+
+Here is another entry for a \gls{diag}. And this is the
+plural: \glspl{ident}.
+
+This adds an entry into the glossary with a bold number, but
+it doesn't create a hyperlink: \gls*[format=hyperbf]{ident}.
+
+\chapter{Singular Matrices}
+
+A \gls{sing} is a matrix with zero determinant.
+\Glspl{sing} are non-invertible. Possessive:
+a \gls{sing}['s] dimensions are not necessarily equal.
+
+Another \gls{ident} entry.
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleSort.pdf b/macros/latex/contrib/glossaries/samples/sampleSort.pdf
new file mode 100644
index 0000000000..107107912e
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleSort.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleSort.tex b/macros/latex/contrib/glossaries/samples/sampleSort.tex
new file mode 100644
index 0000000000..ee6350a360
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleSort.tex
@@ -0,0 +1,105 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+ % If you want to add babel to this document, you may have to
+ % replace the : character in the labels if you are using a
+ % language setting (e.g. french) that makes : active.
+
+\usepackage[plainpages=false,colorlinks]{hyperref}
+\usepackage[toc,acronym]{glossaries}
+
+ % Define a new glossary type called notation
+\newglossary[nlg]{notation}{not}{ntn}{Notation}
+
+\makeglossaries
+
+\newcounter{sortcount}
+
+\renewcommand{\glsprestandardsort}[3]{%
+ \ifdefstring{#2}{notation}%
+ {%
+ \stepcounter{sortcount}%
+ \edef#1{\glssortnumberfmt{\arabic{sortcount}}}%
+ }%
+ {%
+ \glsdosanitizesort
+ }%
+}
+
+ % Notation definitions
+
+\newglossaryentry{not:set}{type=notation, % glossary type
+name={$\mathcal{S}$},
+text={\mathcal{S}},
+description={A set}}
+
+\newglossaryentry{not:emptyset}{type=notation,
+name={$\emptyset$},
+text={\emptyset},
+description={The empty set}}
+
+\newglossaryentry{not:card}{type=notation,
+name={$|\mathcal{S}|$},
+text={|\mathcal{S}|},
+description={cardinality of $\mathcal{S}$}}
+
+ % Main glossary definitions
+
+\newglossaryentry{gls:set}{name=set,
+description={A collection of distinct objects}}
+
+\newglossaryentry{gls:card}{name=cardinality,
+description={The number of elements in the specified set}}
+
+ % Acronym definitions
+
+\newacronym{zfc}{ZFC}{Zermelo-Fraenkel set theory}
+
+\newacronym{ad}{AD}{axiom of determinacy}
+
+\newacronym{nf}{NF}{new foundations}
+
+\begin{document}
+\title{Sample Document using the glossaries Package}
+\author{Nicola Talbot}
+\pagenumbering{alph}
+\maketitle
+
+\begin{abstract}
+ %stop hyperref complaining about duplicate page identifiers:
+\pagenumbering{Alph}
+This is a sample document illustrating the use of the
+\textsf{glossaries} package. In this example, a new glossary type
+called \texttt{notation} is defined, so that the document can have a
+separate glossary of terms, list of acronyms and index of notation.
+\end{abstract}
+
+\pagenumbering{roman}
+\tableofcontents
+
+\printglossaries
+
+\chapter{Introduction}
+\pagenumbering{arabic}
+
+\Glspl{gls:set} are denoted by a calligraphic font
+e.g.\ $\gls{not:set}$.
+
+The \gls{gls:card} of a set $\mathcal{S}$ is denoted
+$\gls{not:card}$. The empty set is denoted
+$\gls{not:emptyset}$.
+
+Here are some acronyms: \gls{nf}, \gls{zfc} and \gls{ad}.
+
+\chapter{Another Chapter}
+
+Another mention of the empty set $\gls{not:emptyset}$.
+
+Here are the acronyms again: \gls{nf}, \gls{zfc} and \gls{ad}.
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleaccsupp.pdf b/macros/latex/contrib/glossaries/samples/sampleaccsupp.pdf
new file mode 100644
index 0000000000..13b261d835
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleaccsupp.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleaccsupp.tex b/macros/latex/contrib/glossaries/samples/sampleaccsupp.tex
new file mode 100644
index 0000000000..342902d8e5
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleaccsupp.tex
@@ -0,0 +1,43 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass[a4paper]{article}
+
+\usepackage[margin=0.5in]{geometry}
+\usepackage{booktabs}
+\usepackage[acronym]{glossaries-accsupp}
+
+\makeglossaries
+
+\newglossaryentry{dr}{name=Dr,description={Doctor},access={Doctor}}
+
+\newacronym[shortaccess=S V M]{svm}{svm}{support vector machine}
+
+\newacronym{eg}{e.g.}{for example}
+
+\newcommand*{\samplerow}[1]{%
+ \gls{#1} & \gls{#1} & \acrshort{#1} & \acrlong{#1}\\
+ \glsreset{#1}\Gls{#1} & \Gls{#1} & \Acrshort{#1} & \Acrlong{#1}\\
+ \glsreset{#1}\GLS{#1} & \GLS{#1} & \ACRshort{#1} & \ACRlong{#1}\\
+}
+
+\begin{document}
+
+\begin{center}
+\begin{tabular}{lllll}
+\toprule
+\bfseries First & \bfseries Next & \bfseries Short & \bfseries Long
+\\\midrule
+\samplerow{dr}
+\midrule
+\samplerow{eg}
+\midrule
+\samplerow{svm}
+\bottomrule
+\end{tabular}
+\end{center}
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleacronyms.pdf b/macros/latex/contrib/glossaries/samples/sampleacronyms.pdf
new file mode 100644
index 0000000000..3c1aef6115
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleacronyms.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleacronyms.tex b/macros/latex/contrib/glossaries/samples/sampleacronyms.tex
new file mode 100644
index 0000000000..f36d71ca1e
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleacronyms.tex
@@ -0,0 +1,42 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[acronym,acronymlists={main,acronym2}]{glossaries}
+
+\newglossary[alg2]{acronym2}{acr2}{acn2}{Statistical Acronyms}
+
+\makeglossaries
+
+ % Use long (short) acronym style:
+\setacronymstyle{long-short}
+
+ % Main glossary is a list of calculus acronyms
+
+\renewcommand{\glossaryname}{Calculus Acronyms}
+
+\newacronym[type=main]{vc}{VC}{Vector Calculus}
+\newacronym[type=main]{ftoc}{FTOC}{Fundamental Theorem of Calculus}
+
+ % "acronym" glossary is a list of computer related acronyms
+
+\renewcommand{\acronymname}{Computer Acronyms}
+
+\newacronym{kb}{kb}{KiloBit}
+\newacronym{kB}{kB}{KiloByte}
+
+ % "acronym2" glossary is a list of statistical acronyms
+
+\newacronym[type=acronym2]{svm}{SVM}{Support Vector Machine}
+
+\begin{document}
+\section{Sample Section}
+\gls{kb}. \gls{kB}. \gls{vc}. \gls{ftoc}. \gls{svm}.
+
+\gls{kb}. \gls{kB}. \gls{vc}. \gls{ftoc}. \gls{svm}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampletree.pdf b/macros/latex/contrib/glossaries/samples/sampletree.pdf
new file mode 100644
index 0000000000..ff20680ff1
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampletree.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampletree.tex b/macros/latex/contrib/glossaries/samples/sampletree.tex
new file mode 100644
index 0000000000..59f8ecd490
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampletree.tex
@@ -0,0 +1,69 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=alttreehypergroup,nolong,nosuper]{glossaries}
+
+ % The alttree type of glossary styles need to know the
+ % widest entry name for each level
+\glssetwidest{Roman letters} % level 0 widest name
+\glssetwidest[1]{Sigma} % level 1 widest name
+
+\makeglossaries
+
+\newglossaryentry{greekletter}{name={Greek letters},
+text={Greek letter},
+description={\nopostdesc}}
+
+\newglossaryentry{sigma}{name={Sigma},
+text={\ensuremath{\Sigma}},
+first={\ensuremath{\Sigma} (uppercase sigma)},
+symbol={\ensuremath{\Sigma}},
+description={Used to indicate summation},
+parent=greekletter}
+
+\newglossaryentry{pi}{name={pi},
+text={\ensuremath{\pi}},
+first={\ensuremath{\pi} (lowercase pi)},
+symbol={\ensuremath{\pi}},
+description={Transcendental number},
+parent=greekletter}
+
+\newglossaryentry{romanletter}{name={Roman letters},
+text={Roman letter},
+description={\nopostdesc}}
+
+\newglossaryentry{e}{name={e},
+description={Unique real number such that the derivative of
+the function $e^x$ is the function itself},
+parent=romanletter}
+
+\newglossaryentry{C}{name={C},
+description={Euler's constant},
+parent=romanletter}
+
+\begin{document}
+This is a sample document illustrating hierarchical glossary
+entries.
+
+\chapter{Greek Letters Used in Mathematics}
+
+Some information about \glspl{greekletter}.
+The letter \gls{pi} is used to represent the ratio of a circle's
+circumference to its diameter.
+The letter \gls{sigma} is used to represent summation.
+
+\chapter{Roman Letters Used in Mathematics}
+
+Some information about \glspl{romanletter}.
+The letter \gls{e} is the unique real number such that
+the derivative of the function $e^x$ is the function itself.
+The letter \gls{C} represents Euler's constant.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/sampleutf8.pdf b/macros/latex/contrib/glossaries/samples/sampleutf8.pdf
new file mode 100644
index 0000000000..935922047a
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleutf8.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/sampleutf8.tex b/macros/latex/contrib/glossaries/samples/sampleutf8.tex
new file mode 100644
index 0000000000..ae3fea7ed0
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/sampleutf8.tex
@@ -0,0 +1,53 @@
+ % This file is public domain
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[xindy,nonumberlist,style=listgroup]{glossaries}
+
+\makeglossaries
+
+ % Note that because the é is the first letter of the
+ % name, it needs to be grouped or it will cause a
+ % problem for \makefirstuc due to expansion issues.
+\newglossaryentry{elite}{name={{é}lite},
+description={select group or class}}
+
+\newglossaryentry{elephant}{name=elephant,
+description={large animal with trunk and tusks}}
+
+\newglossaryentry{elk}{name=elk,
+description=large deer}
+
+\newglossaryentry{mannerly}{name=mannerly,
+description=polite}
+
+ % The œ is not the first letter, so it doesn't need to
+ % be grouped.
+\newglossaryentry{manoeuvre}{name={manœuvre},
+description=planned and controlled movement}
+
+\newglossaryentry{manor}{name=manor,
+description=large landed estate or its house}
+
+\newglossaryentry{odometer}{name=odometer,
+description=instrument for measuring distance travelled by
+a wheeled vehicle}
+
+\newglossaryentry{oesophagus}{name={{œ}sophagus},
+plural={{œ}sophagi},
+description={canal from mouth to stomach}}
+
+\newglossaryentry{ogre}{name=ogre,
+description=man-eating giant}
+
+\begin{document}
+\glsaddall
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy-mc.xdy b/macros/latex/contrib/glossaries/samples/samplexdy-mc.xdy
new file mode 100644
index 0000000000..22f392f9aa
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy-mc.xdy
@@ -0,0 +1,852 @@
+;; xindy style file for samplexdy.tex that has Mc letter group
+
+(define-letter-group "A" :prefixes ("€"))
+(define-letter-group "B" :after "A" :prefixes ("„"))
+(define-letter-group "C" :after "B" :prefixes ("†"))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes ("—"))
+(define-letter-group "F" :after "E" :prefixes ("œ"))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes ("¤"))
+(define-letter-group "I" :after "H" :prefixes ("¨"))
+(define-letter-group "J" :after "I" :prefixes ("¬"))
+(define-letter-group "K" :after "J" :prefixes ("®"))
+(define-letter-group "L" :after "K" :prefixes ("´"))
+(define-letter-group "Mc" :after "L" :prefixes ("Ƞ"))
+(define-letter-group "M" :after "Mc" :prefixes ("»"))
+(define-letter-group "N" :after "M" :prefixes ("¼"))
+(define-letter-group "O" :after "N" :prefixes ("Ã"))
+(define-letter-group "P" :after "O" :prefixes ("È"))
+(define-letter-group "Q" :after "P" :prefixes ("Ê"))
+(define-letter-group "R" :after "Q" :prefixes ("Ë"))
+(define-letter-group "S" :after "R" :prefixes ("Ð"))
+(define-letter-group "T" :after "S" :prefixes ("Ú"))
+(define-letter-group "U" :after "T" :prefixes ("à"))
+(define-letter-group "V" :after "U" :prefixes ("å"))
+(define-letter-group "W" :after "V" :prefixes ("æ"))
+(define-letter-group "X" :after "W" :prefixes ("ë"))
+(define-letter-group "Y" :after "X" :prefixes ("í"))
+(define-letter-group "Ȝ" :after "Y" :prefixes ("ï"))
+(define-letter-group "Z" :after "Ȝ" :prefixes ("ð"))
+(define-letter-group "Þ" :after "Z" :prefixes ("ö"))
+(define-letter-group "Æ¿" :after "Þ" :prefixes ("÷"))
+
+(define-rule-set "en-alphabetize"
+
+ :rules (("à" "€" :string)
+ ("À" "€" :string)
+ ("Æ" "€—" :string)
+ ("æ" "€—" :string)
+ ("Ç" "†" :string)
+ ("ç" "†" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("É" "—" :string)
+ ("Ê" "—" :string)
+ ("È" "—" :string)
+ ("Ë" "—" :string)
+ ("è" "—" :string)
+ ("ë" "—" :string)
+ ("ê" "—" :string)
+ ("é" "—" :string)
+ ("Ï" "¨" :string)
+ ("ï" "¨" :string)
+ ("Ñ" "¼" :string)
+ ("ñ" "¼" :string)
+ ("Ö" "Ã" :string)
+ ("Ô" "Ã" :string)
+ ("ô" "Ã" :string)
+ ("ö" "Ã" :string)
+ ("œ" "×" :string)
+ ("Œ" "×" :string)
+ ("ȝ" "ï" :string)
+ ("Ȝ" "ï" :string)
+ ("þ" "ö" :string)
+ ("Þ" "ö" :string)
+ ("Ç·" "÷" :string)
+ ("Æ¿" "÷" :string)
+ ("a" "€" :string)
+ ("A" "€" :string)
+ ("b" "„" :string)
+ ("B" "„" :string)
+ ("C" "†" :string)
+ ("c" "†" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("E" "—" :string)
+ ("e" "—" :string)
+ ("F" "œ" :string)
+ ("f" "œ" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("H" "¤" :string)
+ ("h" "¤" :string)
+ ("I" "¨" :string)
+ ("i" "¨" :string)
+ ("J" "¬" :string)
+ ("j" "¬" :string)
+ ("K" "®" :string)
+ ("k" "®" :string)
+ ("L" "´" :string)
+ ("l" "´" :string)
+ ("Mc" "Ƞ" :string)
+ ("Mac" "Ƞ" :string)
+ ("M" "»" :string)
+ ("m" "»" :string)
+ ("N" "¼" :string)
+ ("n" "¼" :string)
+ ("O" "Ã" :string)
+ ("o" "Ã" :string)
+ ("P" "È" :string)
+ ("p" "È" :string)
+ ("q" "Ê" :string)
+ ("Q" "Ê" :string)
+ ("r" "Ë" :string)
+ ("R" "Ë" :string)
+ ("S" "Ð" :string)
+ ("s" "Ð" :string)
+ ("T" "Ú" :string)
+ ("t" "Ú" :string)
+ ("u" "à" :string)
+ ("U" "à" :string)
+ ("v" "å" :string)
+ ("V" "å" :string)
+ ("w" "æ" :string)
+ ("W" "æ" :string)
+ ("X" "ë" :string)
+ ("x" "ë" :string)
+ ("Y" "í" :string)
+ ("y" "í" :string)
+ ("z" "ð" :string)
+ ("Z" "ð" :string)
+ ))
+
+(define-rule-set "en-resolve-diacritics"
+
+ :rules (("ȝ" "¢" :string)
+ ("þ" "¢" :string)
+ ("Ç·" "¢" :string)
+ ("Þ" "¢" :string)
+ ("Ȝ" "¢" :string)
+ ("Æ¿" "¢" :string)
+ ("Ö" "£" :string)
+ ("Ñ" "£" :string)
+ ("ð" "£" :string)
+ ("Ç" "£" :string)
+ ("É" "£" :string)
+ ("Ï" "£" :string)
+ ("ï" "£" :string)
+ ("ö" "£" :string)
+ ("ñ" "£" :string)
+ ("ç" "£" :string)
+ ("à" "£" :string)
+ ("À" "£" :string)
+ ("é" "£" :string)
+ ("Ð" "£" :string)
+ ("Ô" "¤" :string)
+ ("ô" "¤" :string)
+ ("È" "¤" :string)
+ ("è" "¤" :string)
+ ("Ë" "¥" :string)
+ ("ë" "¥" :string)
+ ("Ê" "¦" :string)
+ ("ê" "¦" :string)
+ ("œ" "ÿ" :string)
+ ("Æ" "ÿ" :string)
+ ("Œ" "ÿ" :string)
+ ("æ" "ÿ" :string)
+ ("S" "¢" :string)
+ ("K" "¢" :string)
+ ("d" "¢" :string)
+ ("Y" "¢" :string)
+ ("E" "¢" :string)
+ ("y" "¢" :string)
+ ("g" "¢" :string)
+ ("e" "¢" :string)
+ ("J" "¢" :string)
+ ("q" "¢" :string)
+ ("D" "¢" :string)
+ ("b" "¢" :string)
+ ("z" "¢" :string)
+ ("w" "¢" :string)
+ ("Q" "¢" :string)
+ ("M" "¢" :string)
+ ("C" "¢" :string)
+ ("L" "¢" :string)
+ ("X" "¢" :string)
+ ("P" "¢" :string)
+ ("T" "¢" :string)
+ ("a" "¢" :string)
+ ("N" "¢" :string)
+ ("j" "¢" :string)
+ ("Z" "¢" :string)
+ ("u" "¢" :string)
+ ("k" "¢" :string)
+ ("t" "¢" :string)
+ ("W" "¢" :string)
+ ("v" "¢" :string)
+ ("s" "¢" :string)
+ ("B" "¢" :string)
+ ("H" "¢" :string)
+ ("c" "¢" :string)
+ ("I" "¢" :string)
+ ("G" "¢" :string)
+ ("U" "¢" :string)
+ ("F" "¢" :string)
+ ("r" "¢" :string)
+ ("x" "¢" :string)
+ ("V" "¢" :string)
+ ("h" "¢" :string)
+ ("f" "¢" :string)
+ ("i" "¢" :string)
+ ("A" "¢" :string)
+ ("O" "¢" :string)
+ ("n" "¢" :string)
+ ("m" "¢" :string)
+ ("l" "¢" :string)
+ ("p" "¢" :string)
+ ("R" "¢" :string)
+ ("o" "¢" :string)
+ ))
+
+(define-rule-set "en-resolve-case"
+
+ :rules (("Ö" "8" :string)
+ ("Ñ" "8" :string)
+ ("Ô" "8" :string)
+ ("Ç" "8" :string)
+ ("É" "8" :string)
+ ("Ï" "8" :string)
+ ("Ê" "8" :string)
+ ("È" "8" :string)
+ ("Ë" "8" :string)
+ ("Ç·" "8" :string)
+ ("À" "8" :string)
+ ("Þ" "8" :string)
+ ("Ȝ" "8" :string)
+ ("Ð" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ð" "9" :string)
+ ("ô" "9" :string)
+ ("ȝ" "9" :string)
+ ("ï" "9" :string)
+ ("ö" "9" :string)
+ ("ñ" "9" :string)
+ ("ç" "9" :string)
+ ("à" "9" :string)
+ ("þ" "9" :string)
+ ("è" "9" :string)
+ ("ë" "9" :string)
+ ("ê" "9" :string)
+ ("é" "9" :string)
+ ("Æ¿" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("S" "8" :string)
+ ("K" "8" :string)
+ ("Y" "8" :string)
+ ("E" "8" :string)
+ ("J" "8" :string)
+ ("D" "8" :string)
+ ("Q" "8" :string)
+ ("M" "8" :string)
+ ("C" "8" :string)
+ ("L" "8" :string)
+ ("X" "8" :string)
+ ("P" "8" :string)
+ ("T" "8" :string)
+ ("N" "8" :string)
+ ("Z" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("H" "8" :string)
+ ("I" "8" :string)
+ ("G" "8" :string)
+ ("U" "8" :string)
+ ("F" "8" :string)
+ ("V" "8" :string)
+ ("A" "8" :string)
+ ("O" "8" :string)
+ ("R" "8" :string)
+ ("d" "9" :string)
+ ("y" "9" :string)
+ ("g" "9" :string)
+ ("e" "9" :string)
+ ("q" "9" :string)
+ ("b" "9" :string)
+ ("z" "9" :string)
+ ("w" "9" :string)
+ ("a" "9" :string)
+ ("j" "9" :string)
+ ("u" "9" :string)
+ ("k" "9" :string)
+ ("t" "9" :string)
+ ("v" "9" :string)
+ ("s" "9" :string)
+ ("c" "9" :string)
+ ("r" "9" :string)
+ ("x" "9" :string)
+ ("h" "9" :string)
+ ("f" "9" :string)
+ ("i" "9" :string)
+ ("n" "9" :string)
+ ("m" "9" :string)
+ ("l" "9" :string)
+ ("p" "9" :string)
+ ("o" "9" :string)
+ ))
+
+(define-rule-set "en-ignore-special"
+
+ :rules (("-" "" :string)
+ ("!" "" :string)
+ ("{" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ("?" "" :string)
+ ("." "" :string)
+ ))
+
+(define-rule-set "en-resolve-special"
+
+ :rules (("Ö" "¤" :string)
+ ("Ñ" "¤" :string)
+ ("ð" "¤" :string)
+ ("Ô" "¤" :string)
+ ("Ç" "¤" :string)
+ ("É" "¤" :string)
+ ("ô" "¤" :string)
+ ("Ï" "¤" :string)
+ ("ȝ" "¤" :string)
+ ("ï" "¤" :string)
+ ("Ê" "¤" :string)
+ ("ö" "¤" :string)
+ ("ñ" "¤" :string)
+ ("È" "¤" :string)
+ ("ç" "¤" :string)
+ ("Ë" "¤" :string)
+ ("à" "¤" :string)
+ ("þ" "¤" :string)
+ ("Ç·" "¤" :string)
+ ("è" "¤" :string)
+ ("À" "¤" :string)
+ ("ë" "¤" :string)
+ ("Þ" "¤" :string)
+ ("ê" "¤" :string)
+ ("é" "¤" :string)
+ ("Ȝ" "¤" :string)
+ ("Æ¿" "¤" :string)
+ ("Ð" "¤" :string)
+ ("œ" "¤¤" :string)
+ ("Æ" "¤¤" :string)
+ ("Œ" "¤¤" :string)
+ ("æ" "¤¤" :string)
+ ("?" "¡" :string)
+ ("!" "¢" :string)
+ ("." "£" :string)
+ ("S" "¤" :string)
+ ("K" "¤" :string)
+ ("d" "¤" :string)
+ ("Y" "¤" :string)
+ ("E" "¤" :string)
+ ("y" "¤" :string)
+ ("g" "¤" :string)
+ ("e" "¤" :string)
+ ("J" "¤" :string)
+ ("q" "¤" :string)
+ ("D" "¤" :string)
+ ("b" "¤" :string)
+ ("z" "¤" :string)
+ ("w" "¤" :string)
+ ("Q" "¤" :string)
+ ("M" "¤" :string)
+ ("C" "¤" :string)
+ ("L" "¤" :string)
+ ("X" "¤" :string)
+ ("P" "¤" :string)
+ ("T" "¤" :string)
+ ("a" "¤" :string)
+ ("N" "¤" :string)
+ ("j" "¤" :string)
+ ("Z" "¤" :string)
+ ("u" "¤" :string)
+ ("k" "¤" :string)
+ ("t" "¤" :string)
+ ("W" "¤" :string)
+ ("v" "¤" :string)
+ ("s" "¤" :string)
+ ("B" "¤" :string)
+ ("H" "¤" :string)
+ ("c" "¤" :string)
+ ("I" "¤" :string)
+ ("G" "¤" :string)
+ ("U" "¤" :string)
+ ("F" "¤" :string)
+ ("r" "¤" :string)
+ ("x" "¤" :string)
+ ("V" "¤" :string)
+ ("h" "¤" :string)
+ ("f" "¤" :string)
+ ("i" "¤" :string)
+ ("A" "¤" :string)
+ ("O" "¤" :string)
+ ("n" "¤" :string)
+ ("m" "¤" :string)
+ ("l" "¤" :string)
+ ("p" "¤" :string)
+ ("R" "¤" :string)
+ ("o" "¤" :string)
+ ("-" "¥" :string)
+ ("'" "¦" :string)
+ ("{" "§" :string)
+ ("}" "¨" :string)
+ ))
+
+; The following section is customised for samplexdy.tex
+; (copied from samplexdy.xdy automatically generated by
+; samplexdy.tex)
+
+; required styles
+
+(require "tex.xdy")
+
+; list of allowed attributes (number formats)
+
+(define-attributes (("default"
+ "hyperbfit"
+ "pagehyperbfit"
+ "glsnumberformat"
+ "pageglsnumberformat"
+ "textrm"
+ "pagetextrm"
+ "textsf"
+ "pagetextsf"
+ "texttt"
+ "pagetexttt"
+ "textbf"
+ "pagetextbf"
+ "textmd"
+ "pagetextmd"
+ "textit"
+ "pagetextit"
+ "textup"
+ "pagetextup"
+ "textsl"
+ "pagetextsl"
+ "textsc"
+ "pagetextsc"
+ "emph"
+ "pageemph"
+ "glshypernumber"
+ "pageglshypernumber"
+ "hyperrm"
+ "pagehyperrm"
+ "hypersf"
+ "pagehypersf"
+ "hypertt"
+ "pagehypertt"
+ "hyperbf"
+ "pagehyperbf"
+ "hypermd"
+ "pagehypermd"
+ "hyperit"
+ "pagehyperit"
+ "hyperup"
+ "pagehyperup"
+ "hypersl"
+ "pagehypersl"
+ "hypersc"
+ "pagehypersc"
+ "hyperemph"
+ "pagehyperemph")))
+
+; user defined alphabets
+
+; location class definitions
+
+(define-location-class "roman-page-numbers"
+ ( :sep "{}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-roman-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-roman-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-roman-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-lowercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers"
+ ( :sep "{}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-Roman-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-Roman-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-Roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-Roman-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-Roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-Roman-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-Roman-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "roman-numbers-uppercase" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers"
+ ( :sep "{}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-arabic-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-arabic-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-arabic-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-arabic-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-arabic-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-arabic-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-arabic-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers"
+ ( :sep "{}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-alpha-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-alpha-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-alpha-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "alpha" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers"
+ ( :sep "{}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-Alpha-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-Alpha-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers"
+ ( :sep "{}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "alpha" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-Appendix-page-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-Appendix-page-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "ALPHA" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers"
+ ( :sep "{}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "roman-page-numbers-arabic-section-numbers"
+ ( :sep "{" "roman-numbers-lowercase" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Roman-page-numbers-arabic-section-numbers"
+ ( :sep "{" "roman-numbers-uppercase" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-page-numbers-arabic-section-numbers"
+ ( :sep "{" "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "alpha-page-numbers-arabic-section-numbers"
+ ( :sep "{" "alpha" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Alpha-page-numbers-arabic-section-numbers"
+ ( :sep "{" "ALPHA" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "Appendix-page-numbers-arabic-section-numbers"
+ ( :sep "{" "ALPHA" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+(define-location-class "arabic-section-numbers-arabic-section-numbers"
+ ( :sep "{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}{" "arabic-numbers" :sep "." "arabic-numbers" :sep "}" )
+ :min-range-length 2
+)
+
+; user defined location classes
+
+(define-location-class "Numberstring"
+ (:sep "{}{" :sep "\protect \Numberstringnum {" "arabic-numbers" :sep "}" :sep "}"))
+
+; define cross-reference class
+
+(define-crossref-class "see" :unverified )
+(markup-crossref-list :class "see"
+ :open "\glsseeformat" :close "{}")
+
+; define the order of the location classes
+(define-location-class-order (
+ "roman-page-numbers"
+ "arabic-page-numbers"
+ "arabic-section-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "Appendix-page-numbers"
+ "see" ))
+
+; define the glossary markup
+
+(markup-index
+ :open "\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble
+\providecommand*\glsXpageXhyperbfit[2]{\setentrycounter[#1]{page}\hyperbfit{#2}}
+\providecommand*\glsXpageXglsnumberformat[2]{\setentrycounter[#1]{page}\glsnumberformat{#2}}
+\providecommand*\glsXpageXtextrm[2]{\setentrycounter[#1]{page}\textrm{#2}}
+\providecommand*\glsXpageXtextsf[2]{\setentrycounter[#1]{page}\textsf{#2}}
+\providecommand*\glsXpageXtexttt[2]{\setentrycounter[#1]{page}\texttt{#2}}
+\providecommand*\glsXpageXtextbf[2]{\setentrycounter[#1]{page}\textbf{#2}}
+\providecommand*\glsXpageXtextmd[2]{\setentrycounter[#1]{page}\textmd{#2}}
+\providecommand*\glsXpageXtextit[2]{\setentrycounter[#1]{page}\textit{#2}}
+\providecommand*\glsXpageXtextup[2]{\setentrycounter[#1]{page}\textup{#2}}
+\providecommand*\glsXpageXtextsl[2]{\setentrycounter[#1]{page}\textsl{#2}}
+\providecommand*\glsXpageXtextsc[2]{\setentrycounter[#1]{page}\textsc{#2}}
+\providecommand*\glsXpageXemph[2]{\setentrycounter[#1]{page}\emph{#2}}
+\providecommand*\glsXpageXglshypernumber[2]{\setentrycounter[#1]{page}\glshypernumber{#2}}
+\providecommand*\glsXpageXhyperrm[2]{\setentrycounter[#1]{page}\hyperrm{#2}}
+\providecommand*\glsXpageXhypersf[2]{\setentrycounter[#1]{page}\hypersf{#2}}
+\providecommand*\glsXpageXhypertt[2]{\setentrycounter[#1]{page}\hypertt{#2}}
+\providecommand*\glsXpageXhyperbf[2]{\setentrycounter[#1]{page}\hyperbf{#2}}
+\providecommand*\glsXpageXhypermd[2]{\setentrycounter[#1]{page}\hypermd{#2}}
+\providecommand*\glsXpageXhyperit[2]{\setentrycounter[#1]{page}\hyperit{#2}}
+\providecommand*\glsXpageXhyperup[2]{\setentrycounter[#1]{page}\hyperup{#2}}
+\providecommand*\glsXpageXhypersl[2]{\setentrycounter[#1]{page}\hypersl{#2}}
+\providecommand*\glsXpageXhypersc[2]{\setentrycounter[#1]{page}\hypersc{#2}}
+\providecommand*\glsXpageXhyperemph[2]{\setentrycounter[#1]{page}\hyperemph{#2}}
+\begin{theglossary}\glossaryheader~n"
+ :close "%~n\end{theglossary}\glossarypostamble~n"
+ :tree)
+(markup-letter-group-list :sep "\glsgroupskip~n")
+(markup-indexentry :open "\relax\glsresetentrylist~n")
+(markup-locclass-list :open "{\glossaryentrynumbers{\relax "
+ :sep ", " :close "}}")
+(markup-locref-list :sep "\delimN ")
+(markup-range :sep "\delimR ")
+
+; define format to use for locations
+
+(markup-locref :open "~n\glsXpageXhyperbfit"
+ :close ""
+ :attr "pagehyperbfit")
+(markup-locref :open "~n\glsXpageXglsnumberformat"
+ :close ""
+ :attr "pageglsnumberformat")
+(markup-locref :open "~n\glsXpageXtextrm"
+ :close ""
+ :attr "pagetextrm")
+(markup-locref :open "~n\glsXpageXtextsf"
+ :close ""
+ :attr "pagetextsf")
+(markup-locref :open "~n\glsXpageXtexttt"
+ :close ""
+ :attr "pagetexttt")
+(markup-locref :open "~n\glsXpageXtextbf"
+ :close ""
+ :attr "pagetextbf")
+(markup-locref :open "~n\glsXpageXtextmd"
+ :close ""
+ :attr "pagetextmd")
+(markup-locref :open "~n\glsXpageXtextit"
+ :close ""
+ :attr "pagetextit")
+(markup-locref :open "~n\glsXpageXtextup"
+ :close ""
+ :attr "pagetextup")
+(markup-locref :open "~n\glsXpageXtextsl"
+ :close ""
+ :attr "pagetextsl")
+(markup-locref :open "~n\glsXpageXtextsc"
+ :close ""
+ :attr "pagetextsc")
+(markup-locref :open "~n\glsXpageXemph"
+ :close ""
+ :attr "pageemph")
+(markup-locref :open "~n\glsXpageXglshypernumber"
+ :close ""
+ :attr "pageglshypernumber")
+(markup-locref :open "~n\glsXpageXhyperrm"
+ :close ""
+ :attr "pagehyperrm")
+(markup-locref :open "~n\glsXpageXhypersf"
+ :close ""
+ :attr "pagehypersf")
+(markup-locref :open "~n\glsXpageXhypertt"
+ :close ""
+ :attr "pagehypertt")
+(markup-locref :open "~n\glsXpageXhyperbf"
+ :close ""
+ :attr "pagehyperbf")
+(markup-locref :open "~n\glsXpageXhypermd"
+ :close ""
+ :attr "pagehypermd")
+(markup-locref :open "~n\glsXpageXhyperit"
+ :close ""
+ :attr "pagehyperit")
+(markup-locref :open "~n\glsXpageXhyperup"
+ :close ""
+ :attr "pagehyperup")
+(markup-locref :open "~n\glsXpageXhypersl"
+ :close ""
+ :attr "pagehypersl")
+(markup-locref :open "~n\glsXpageXhypersc"
+ :close ""
+ :attr "pagehypersc")
+(markup-locref :open "~n\glsXpageXhyperemph"
+ :close ""
+ :attr "pagehyperemph")
+
+; define letter group list format
+
+(markup-letter-group-list :sep "\glsgroupskip~n")
+
+; letter group headings
+
+(markup-letter-group :open-head "\glsgroupheading{"
+ :close-head "}")
+
+; additional letter groups
+
+(define-letter-group "glsnumbers"
+ :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+ :before "A")
+
+; additional sort rules
+
+; The following is copied from xindy/lang/english/utf8-lang.xdy
+
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("en-alphabetize" "en-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("en-resolve-diacritics" "en-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("en-resolve-case" "en-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("en-resolve-special"))
+
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy-mc207.xdy b/macros/latex/contrib/glossaries/samples/samplexdy-mc207.xdy
new file mode 100644
index 0000000000..7c8d2b9e48
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy-mc207.xdy
@@ -0,0 +1,591 @@
+;; xindy style file for samplexdy.tex that has Mc letter group
+
+(define-letter-group "A" :prefixes ("€"))
+(define-letter-group "B" :after "A" :prefixes ("„"))
+(define-letter-group "C" :after "B" :prefixes ("†"))
+(define-letter-group "D" :after "C" :prefixes (""))
+(define-letter-group "E" :after "D" :prefixes ("—"))
+(define-letter-group "F" :after "E" :prefixes ("œ"))
+(define-letter-group "G" :after "F" :prefixes (""))
+(define-letter-group "H" :after "G" :prefixes ("¤"))
+(define-letter-group "I" :after "H" :prefixes ("¨"))
+(define-letter-group "J" :after "I" :prefixes ("¬"))
+(define-letter-group "K" :after "J" :prefixes ("®"))
+(define-letter-group "L" :after "K" :prefixes ("´"))
+(define-letter-group "Mc" :after "L" :prefixes ("Ƞ"))
+(define-letter-group "M" :after "Mc" :prefixes ("»"))
+(define-letter-group "N" :after "M" :prefixes ("¼"))
+(define-letter-group "O" :after "N" :prefixes ("Ã"))
+(define-letter-group "P" :after "O" :prefixes ("È"))
+(define-letter-group "Q" :after "P" :prefixes ("Ê"))
+(define-letter-group "R" :after "Q" :prefixes ("Ë"))
+(define-letter-group "S" :after "R" :prefixes ("Ð"))
+(define-letter-group "T" :after "S" :prefixes ("Ú"))
+(define-letter-group "U" :after "T" :prefixes ("à"))
+(define-letter-group "V" :after "U" :prefixes ("å"))
+(define-letter-group "W" :after "V" :prefixes ("æ"))
+(define-letter-group "X" :after "W" :prefixes ("ë"))
+(define-letter-group "Y" :after "X" :prefixes ("í"))
+(define-letter-group "Ȝ" :after "Y" :prefixes ("ï"))
+(define-letter-group "Z" :after "Ȝ" :prefixes ("ð"))
+(define-letter-group "Þ" :after "Z" :prefixes ("ö"))
+(define-letter-group "Æ¿" :after "Þ" :prefixes ("÷"))
+
+(define-rule-set "en-alphabetize"
+
+ :rules (("à" "€" :string)
+ ("À" "€" :string)
+ ("Æ" "€—" :string)
+ ("æ" "€—" :string)
+ ("Ç" "†" :string)
+ ("ç" "†" :string)
+ ("ð" "" :string)
+ ("Ð" "" :string)
+ ("É" "—" :string)
+ ("Ê" "—" :string)
+ ("È" "—" :string)
+ ("Ë" "—" :string)
+ ("è" "—" :string)
+ ("ë" "—" :string)
+ ("ê" "—" :string)
+ ("é" "—" :string)
+ ("Ï" "¨" :string)
+ ("ï" "¨" :string)
+ ("Ñ" "¼" :string)
+ ("ñ" "¼" :string)
+ ("Ö" "Ã" :string)
+ ("Ô" "Ã" :string)
+ ("ô" "Ã" :string)
+ ("ö" "Ã" :string)
+ ("œ" "×" :string)
+ ("Œ" "×" :string)
+ ("ȝ" "ï" :string)
+ ("Ȝ" "ï" :string)
+ ("þ" "ö" :string)
+ ("Þ" "ö" :string)
+ ("Ç·" "÷" :string)
+ ("Æ¿" "÷" :string)
+ ("a" "€" :string)
+ ("A" "€" :string)
+ ("b" "„" :string)
+ ("B" "„" :string)
+ ("C" "†" :string)
+ ("c" "†" :string)
+ ("d" "" :string)
+ ("D" "" :string)
+ ("E" "—" :string)
+ ("e" "—" :string)
+ ("F" "œ" :string)
+ ("f" "œ" :string)
+ ("g" "" :string)
+ ("G" "" :string)
+ ("H" "¤" :string)
+ ("h" "¤" :string)
+ ("I" "¨" :string)
+ ("i" "¨" :string)
+ ("J" "¬" :string)
+ ("j" "¬" :string)
+ ("K" "®" :string)
+ ("k" "®" :string)
+ ("L" "´" :string)
+ ("l" "´" :string)
+ ("Mc" "Ƞ" :string)
+ ("Mac" "Ƞ" :string)
+ ("M" "»" :string)
+ ("m" "»" :string)
+ ("N" "¼" :string)
+ ("n" "¼" :string)
+ ("O" "Ã" :string)
+ ("o" "Ã" :string)
+ ("P" "È" :string)
+ ("p" "È" :string)
+ ("q" "Ê" :string)
+ ("Q" "Ê" :string)
+ ("r" "Ë" :string)
+ ("R" "Ë" :string)
+ ("S" "Ð" :string)
+ ("s" "Ð" :string)
+ ("T" "Ú" :string)
+ ("t" "Ú" :string)
+ ("u" "à" :string)
+ ("U" "à" :string)
+ ("v" "å" :string)
+ ("V" "å" :string)
+ ("w" "æ" :string)
+ ("W" "æ" :string)
+ ("X" "ë" :string)
+ ("x" "ë" :string)
+ ("Y" "í" :string)
+ ("y" "í" :string)
+ ("z" "ð" :string)
+ ("Z" "ð" :string)
+ ))
+
+(define-rule-set "en-resolve-diacritics"
+
+ :rules (("ȝ" "¢" :string)
+ ("þ" "¢" :string)
+ ("Ç·" "¢" :string)
+ ("Þ" "¢" :string)
+ ("Ȝ" "¢" :string)
+ ("Æ¿" "¢" :string)
+ ("Ö" "£" :string)
+ ("Ñ" "£" :string)
+ ("ð" "£" :string)
+ ("Ç" "£" :string)
+ ("É" "£" :string)
+ ("Ï" "£" :string)
+ ("ï" "£" :string)
+ ("ö" "£" :string)
+ ("ñ" "£" :string)
+ ("ç" "£" :string)
+ ("à" "£" :string)
+ ("À" "£" :string)
+ ("é" "£" :string)
+ ("Ð" "£" :string)
+ ("Ô" "¤" :string)
+ ("ô" "¤" :string)
+ ("È" "¤" :string)
+ ("è" "¤" :string)
+ ("Ë" "¥" :string)
+ ("ë" "¥" :string)
+ ("Ê" "¦" :string)
+ ("ê" "¦" :string)
+ ("œ" "ÿ" :string)
+ ("Æ" "ÿ" :string)
+ ("Œ" "ÿ" :string)
+ ("æ" "ÿ" :string)
+ ("S" "¢" :string)
+ ("K" "¢" :string)
+ ("d" "¢" :string)
+ ("Y" "¢" :string)
+ ("E" "¢" :string)
+ ("y" "¢" :string)
+ ("g" "¢" :string)
+ ("e" "¢" :string)
+ ("J" "¢" :string)
+ ("q" "¢" :string)
+ ("D" "¢" :string)
+ ("b" "¢" :string)
+ ("z" "¢" :string)
+ ("w" "¢" :string)
+ ("Q" "¢" :string)
+ ("M" "¢" :string)
+ ("C" "¢" :string)
+ ("L" "¢" :string)
+ ("X" "¢" :string)
+ ("P" "¢" :string)
+ ("T" "¢" :string)
+ ("a" "¢" :string)
+ ("N" "¢" :string)
+ ("j" "¢" :string)
+ ("Z" "¢" :string)
+ ("u" "¢" :string)
+ ("k" "¢" :string)
+ ("t" "¢" :string)
+ ("W" "¢" :string)
+ ("v" "¢" :string)
+ ("s" "¢" :string)
+ ("B" "¢" :string)
+ ("H" "¢" :string)
+ ("c" "¢" :string)
+ ("I" "¢" :string)
+ ("G" "¢" :string)
+ ("U" "¢" :string)
+ ("F" "¢" :string)
+ ("r" "¢" :string)
+ ("x" "¢" :string)
+ ("V" "¢" :string)
+ ("h" "¢" :string)
+ ("f" "¢" :string)
+ ("i" "¢" :string)
+ ("A" "¢" :string)
+ ("O" "¢" :string)
+ ("n" "¢" :string)
+ ("m" "¢" :string)
+ ("l" "¢" :string)
+ ("p" "¢" :string)
+ ("R" "¢" :string)
+ ("o" "¢" :string)
+ ))
+
+(define-rule-set "en-resolve-case"
+
+ :rules (("Ö" "8" :string)
+ ("Ñ" "8" :string)
+ ("Ô" "8" :string)
+ ("Ç" "8" :string)
+ ("É" "8" :string)
+ ("Ï" "8" :string)
+ ("Ê" "8" :string)
+ ("È" "8" :string)
+ ("Ë" "8" :string)
+ ("Ç·" "8" :string)
+ ("À" "8" :string)
+ ("Þ" "8" :string)
+ ("Ȝ" "8" :string)
+ ("Ð" "8" :string)
+ ("Æ" "89" :string)
+ ("Œ" "89" :string)
+ ("ð" "9" :string)
+ ("ô" "9" :string)
+ ("ȝ" "9" :string)
+ ("ï" "9" :string)
+ ("ö" "9" :string)
+ ("ñ" "9" :string)
+ ("ç" "9" :string)
+ ("à" "9" :string)
+ ("þ" "9" :string)
+ ("è" "9" :string)
+ ("ë" "9" :string)
+ ("ê" "9" :string)
+ ("é" "9" :string)
+ ("Æ¿" "9" :string)
+ ("œ" "99" :string)
+ ("æ" "99" :string)
+ ("S" "8" :string)
+ ("K" "8" :string)
+ ("Y" "8" :string)
+ ("E" "8" :string)
+ ("J" "8" :string)
+ ("D" "8" :string)
+ ("Q" "8" :string)
+ ("M" "8" :string)
+ ("C" "8" :string)
+ ("L" "8" :string)
+ ("X" "8" :string)
+ ("P" "8" :string)
+ ("T" "8" :string)
+ ("N" "8" :string)
+ ("Z" "8" :string)
+ ("W" "8" :string)
+ ("B" "8" :string)
+ ("H" "8" :string)
+ ("I" "8" :string)
+ ("G" "8" :string)
+ ("U" "8" :string)
+ ("F" "8" :string)
+ ("V" "8" :string)
+ ("A" "8" :string)
+ ("O" "8" :string)
+ ("R" "8" :string)
+ ("d" "9" :string)
+ ("y" "9" :string)
+ ("g" "9" :string)
+ ("e" "9" :string)
+ ("q" "9" :string)
+ ("b" "9" :string)
+ ("z" "9" :string)
+ ("w" "9" :string)
+ ("a" "9" :string)
+ ("j" "9" :string)
+ ("u" "9" :string)
+ ("k" "9" :string)
+ ("t" "9" :string)
+ ("v" "9" :string)
+ ("s" "9" :string)
+ ("c" "9" :string)
+ ("r" "9" :string)
+ ("x" "9" :string)
+ ("h" "9" :string)
+ ("f" "9" :string)
+ ("i" "9" :string)
+ ("n" "9" :string)
+ ("m" "9" :string)
+ ("l" "9" :string)
+ ("p" "9" :string)
+ ("o" "9" :string)
+ ))
+
+(define-rule-set "en-ignore-special"
+
+ :rules (("-" "" :string)
+ ("!" "" :string)
+ ("{" "" :string)
+ ("'" "" :string)
+ ("}" "" :string)
+ ("?" "" :string)
+ ("." "" :string)
+ ))
+
+(define-rule-set "en-resolve-special"
+
+ :rules (("Ö" "¤" :string)
+ ("Ñ" "¤" :string)
+ ("ð" "¤" :string)
+ ("Ô" "¤" :string)
+ ("Ç" "¤" :string)
+ ("É" "¤" :string)
+ ("ô" "¤" :string)
+ ("Ï" "¤" :string)
+ ("ȝ" "¤" :string)
+ ("ï" "¤" :string)
+ ("Ê" "¤" :string)
+ ("ö" "¤" :string)
+ ("ñ" "¤" :string)
+ ("È" "¤" :string)
+ ("ç" "¤" :string)
+ ("Ë" "¤" :string)
+ ("à" "¤" :string)
+ ("þ" "¤" :string)
+ ("Ç·" "¤" :string)
+ ("è" "¤" :string)
+ ("À" "¤" :string)
+ ("ë" "¤" :string)
+ ("Þ" "¤" :string)
+ ("ê" "¤" :string)
+ ("é" "¤" :string)
+ ("Ȝ" "¤" :string)
+ ("Æ¿" "¤" :string)
+ ("Ð" "¤" :string)
+ ("œ" "¤¤" :string)
+ ("Æ" "¤¤" :string)
+ ("Œ" "¤¤" :string)
+ ("æ" "¤¤" :string)
+ ("?" "¡" :string)
+ ("!" "¢" :string)
+ ("." "£" :string)
+ ("S" "¤" :string)
+ ("K" "¤" :string)
+ ("d" "¤" :string)
+ ("Y" "¤" :string)
+ ("E" "¤" :string)
+ ("y" "¤" :string)
+ ("g" "¤" :string)
+ ("e" "¤" :string)
+ ("J" "¤" :string)
+ ("q" "¤" :string)
+ ("D" "¤" :string)
+ ("b" "¤" :string)
+ ("z" "¤" :string)
+ ("w" "¤" :string)
+ ("Q" "¤" :string)
+ ("M" "¤" :string)
+ ("C" "¤" :string)
+ ("L" "¤" :string)
+ ("X" "¤" :string)
+ ("P" "¤" :string)
+ ("T" "¤" :string)
+ ("a" "¤" :string)
+ ("N" "¤" :string)
+ ("j" "¤" :string)
+ ("Z" "¤" :string)
+ ("u" "¤" :string)
+ ("k" "¤" :string)
+ ("t" "¤" :string)
+ ("W" "¤" :string)
+ ("v" "¤" :string)
+ ("s" "¤" :string)
+ ("B" "¤" :string)
+ ("H" "¤" :string)
+ ("c" "¤" :string)
+ ("I" "¤" :string)
+ ("G" "¤" :string)
+ ("U" "¤" :string)
+ ("F" "¤" :string)
+ ("r" "¤" :string)
+ ("x" "¤" :string)
+ ("V" "¤" :string)
+ ("h" "¤" :string)
+ ("f" "¤" :string)
+ ("i" "¤" :string)
+ ("A" "¤" :string)
+ ("O" "¤" :string)
+ ("n" "¤" :string)
+ ("m" "¤" :string)
+ ("l" "¤" :string)
+ ("p" "¤" :string)
+ ("R" "¤" :string)
+ ("o" "¤" :string)
+ ("-" "¥" :string)
+ ("'" "¦" :string)
+ ("{" "§" :string)
+ ("}" "¨" :string)
+ ))
+
+; The following section is customised for samplexdy.tex
+; (copied from samplexdy.xdy automatically generated by
+; samplexdy.tex)
+
+; required styles
+
+(require "tex.xdy")
+
+; list of allowed attributes (number formats)
+
+(define-attributes (("default"
+ "glsnumberformat"
+ "textrm"
+ "textsf"
+ "texttt"
+ "textbf"
+ "textmd"
+ "textit"
+ "textup"
+ "textsl"
+ "textsc"
+ "emph"
+ "glshypernumber"
+ "hyperrm"
+ "hypersf"
+ "hypertt"
+ "hyperbf"
+ "hypermd"
+ "hyperit"
+ "hyperup"
+ "hypersl"
+ "hypersc"
+ "hyperemph"
+ "hyperbfit")))
+
+; user defined alphabets
+
+; location class definitions
+
+(define-location-class "roman-page-numbers"
+ ("roman-numbers-lowercase"))
+(define-location-class "Roman-page-numbers"
+ ("roman-numbers-uppercase"))
+(define-location-class "arabic-page-numbers"
+ ("arabic-numbers"))
+(define-location-class "alpha-page-numbers"
+ ("alpha"))
+(define-location-class "Alpha-page-numbers"
+ ("ALPHA"))
+(define-location-class "Appendix-page-numbers"
+ ("ALPHA" :sep "." "arabic-numbers"))
+(define-location-class "arabic-section-numbers"
+ ("arabic-numbers" :sep "." "arabic-numbers"))
+
+; user defined location classes
+
+(define-location-class "Numberstring"
+ (:sep "\protect \Numberstringnum {" "arabic-numbers" :sep "}"))
+
+; define cross-reference class
+
+(define-crossref-class "see" :unverified )
+(markup-crossref-list :class "see"
+ :open "\glsseeformat" :close "{}")
+
+; define the order of the location classes
+(define-location-class-order (
+ "roman-page-numbers"
+ "arabic-page-numbers"
+ "arabic-section-numbers"
+ "alpha-page-numbers"
+ "Roman-page-numbers"
+ "Alpha-page-numbers"
+ "Appendix-page-numbers"
+ "see" ))
+
+; define the glossary markup
+
+(markup-index
+ :open "\glossarysection[\glossarytoctitle]{\glossarytitle}\glossarypreamble~n\begin{theglossary}\glossaryheader~n"
+ :close "~n\end{theglossary}~n\glossarypostamble~n"
+ :tree)
+(markup-letter-group-list :sep "\glsgroupskip~n")
+(markup-indexentry :open "~n" :depth 0)
+(markup-locclass-list :open "{\glossaryentrynumbers{\relax "
+ :sep ", " :close "}}")
+(markup-locref-list :sep "\delimN ")
+(markup-range :sep "\delimR ")
+
+; define format to use for locations
+
+(markup-locref :open "~n\setentrycounter{page}\glsnumberformat{"
+ :close "}"
+ :attr "glsnumberformat")
+(markup-locref :open "~n\setentrycounter{page}\textrm{"
+ :close "}"
+ :attr "textrm")
+(markup-locref :open "~n\setentrycounter{page}\textsf{"
+ :close "}"
+ :attr "textsf")
+(markup-locref :open "~n\setentrycounter{page}\texttt{"
+ :close "}"
+ :attr "texttt")
+(markup-locref :open "~n\setentrycounter{page}\textbf{"
+ :close "}"
+ :attr "textbf")
+(markup-locref :open "~n\setentrycounter{page}\textmd{"
+ :close "}"
+ :attr "textmd")
+(markup-locref :open "~n\setentrycounter{page}\textit{"
+ :close "}"
+ :attr "textit")
+(markup-locref :open "~n\setentrycounter{page}\textup{"
+ :close "}"
+ :attr "textup")
+(markup-locref :open "~n\setentrycounter{page}\textsl{"
+ :close "}"
+ :attr "textsl")
+(markup-locref :open "~n\setentrycounter{page}\textsc{"
+ :close "}"
+ :attr "textsc")
+(markup-locref :open "~n\setentrycounter{page}\emph{"
+ :close "}"
+ :attr "emph")
+(markup-locref :open "~n\setentrycounter{page}\glshypernumber{"
+ :close "}"
+ :attr "glshypernumber")
+(markup-locref :open "~n\setentrycounter{page}\hyperrm{"
+ :close "}"
+ :attr "hyperrm")
+(markup-locref :open "~n\setentrycounter{page}\hypersf{"
+ :close "}"
+ :attr "hypersf")
+(markup-locref :open "~n\setentrycounter{page}\hypertt{"
+ :close "}"
+ :attr "hypertt")
+(markup-locref :open "~n\setentrycounter{page}\hyperbf{"
+ :close "}"
+ :attr "hyperbf")
+(markup-locref :open "~n\setentrycounter{page}\hypermd{"
+ :close "}"
+ :attr "hypermd")
+(markup-locref :open "~n\setentrycounter{page}\hyperit{"
+ :close "}"
+ :attr "hyperit")
+(markup-locref :open "~n\setentrycounter{page}\hyperup{"
+ :close "}"
+ :attr "hyperup")
+(markup-locref :open "~n\setentrycounter{page}\hypersl{"
+ :close "}"
+ :attr "hypersl")
+(markup-locref :open "~n\setentrycounter{page}\hypersc{"
+ :close "}"
+ :attr "hypersc")
+(markup-locref :open "~n\setentrycounter{page}\hyperemph{"
+ :close "}"
+ :attr "hyperemph")
+(markup-locref :open "~n\setentrycounter{page}\hyperbfit{"
+ :close "}"
+ :attr "hyperbfit")
+
+; define letter group list format
+
+(markup-letter-group-list :sep "\glsgroupskip~n")
+
+; letter group headings
+
+(markup-letter-group :open-head "\glsgroupheading{"
+ :close-head "}")
+
+(define-letter-group "glsnumbers"
+ :prefixes ("0" "1" "2" "3" "4" "5" "6" "7" "8" "9")
+ :before "A")
+
+; The following is copied from xindy/lang/english/utf8-lang.xdy
+
+(define-sort-rule-orientations (forward backward forward forward))
+(use-rule-set :run 0
+ :rule-set ("en-alphabetize" "en-ignore-special"))
+(use-rule-set :run 1
+ :rule-set ("en-resolve-diacritics" "en-ignore-special"))
+(use-rule-set :run 2
+ :rule-set ("en-resolve-case" "en-ignore-special"))
+(use-rule-set :run 3
+ :rule-set ("en-resolve-special"))
+
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy.pdf b/macros/latex/contrib/glossaries/samples/samplexdy.pdf
new file mode 100644
index 0000000000..09ed5d568e
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy.tex b/macros/latex/contrib/glossaries/samples/samplexdy.tex
new file mode 100644
index 0000000000..808a1ac5ee
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy.tex
@@ -0,0 +1,300 @@
+% This file is public domain.
+%
+% This is a sample document illustrating how to use the
+% glossaries package with xindy. To create the document:
+%
+% latex samplexdy
+% makeglossaries samplexdy
+% latex samplexdy
+%
+% If you don't have Perl installed, then use one of the
+% following instead of makeglossaries:
+%
+% If you want to have a separate "Mc" letter group do:
+%
+% xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% Otherwise do:
+%
+% xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% If you want to use arara, you need the following directives:
+% arara: pdflatex: { synctex: on }
+% arara: makeglossaries
+% arara: pdflatex: { synctex: on }
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[notext,notextcomp]{stix}
+
+\usepackage[colorlinks,plainpages]{hyperref}
+\usepackage[xindy,style=altlistgroup]{glossaries}
+
+% Define a new command to do bold italic:
+
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+
+% Need to add this to the list of attributes in order
+% to use it with xindy:
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyAttribute{hyperbfit}
+
+% Redefine the page numbers to a custom format (requires stix
+% package for the dice commands):
+
+% \tallynum{n} displays a die or dice where the dots add up to n
+\newrobustcmd{\tallynum}[1]{%
+ \ifnum\number#1<7
+ $\csname dice\romannumeral#1\endcsname$%
+ \else
+ $\dicevi$%
+ \expandafter\tallynum\expandafter{\numexpr#1-6}%
+ \fi
+}
+
+% \tally{counter} expands to \tallynum{n} where n is the counter
+% value. In order to work with glossaries and xindy this requires
+% a very specific format. (See the glossaries user manual for more
+% details.)
+
+\newcommand{\tally}[1]{\tallynum{\arabic{page}}}
+
+% Now redefine \thepage
+% (\texorpdfstring is used in case the page number ends up in a PDF
+% bookmark, although this is unlikely)
+\renewcommand*{\thepage}{\texorpdfstring{\tally{page}}{\arabic{page}}}
+
+% Need to add this to the list of location styles.
+% This requires knowing how \thepage expands when written to a file.
+% You can check by inspecting the ':locref' attributes in the .glo
+% file. In this case, \thepage expands to \tallynum {n}
+% (the space is significant) where n is an arabic number.
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyLocation{tally}{% tally location format
+ :sep "\string\tallynum\space\glsopenbrace" % -> \tallynum {
+ "arabic-numbers" % -> arabic number (0, 1, 2, etc)
+ :sep "\glsclosebrace" % -> }
+}
+
+% If the definition of \tally changes so that it expands to
+% something slightly different then the above will have to be
+% changed accordingly.
+
+% (Need to redefine \glsXpageXhyperbfit and
+% \glsXpageXglsnumberformat after \makeglossaries to get the
+% hyperlinks working correctly.)
+
+% To have Mc as a separate group uncomment the following three
+% lines:
+
+%\setStyleFile{samplexdy-mc} % note no extension
+%\noist
+%\GlsSetXdyLanguage{}
+
+% The above three lines specify to use samplexdy-mc.xdy (supplied
+% with this file) and don't overwrite it. The language is
+% unset using \GlsSetXdyLanguage{} as all the language
+% dependent information is contained in samplexdy-mc.xdy
+% Note that using \noist means that commands like
+% \GlsAddXdyAttribute and \GlsAddXdyLocation will no longer have
+% an effect.
+
+% Write the style file (if \noist isn't used)
+% and activate glossary entries
+
+\makeglossaries
+
+% Each page location will be specified in the form:
+%
+% "\glsXpageXglsnumberformat{}{\tallynum {" number "}}"
+% or
+% "\glsXpageXhyperbfit{}{\tallynum {" number "}}"
+%
+% Knowing this, we can redefine \glsXpageXglsnumberformat
+% and \glsXpageXhyperbfit to grab the number part to work out the
+% location's numeric value. If the definition of \tally changes
+% so that it expands to something slightly different then this
+% code will no longer work.
+%
+% Redefine to allow hyperlinks:
+
+\renewcommand{\glsXpageXglsnumberformat}[2]{%
+ % remember that #2 is in the form \tallynum {n}
+ % so this does \linkpagenumber\tallynum{n}
+ \linkpagenumber#2%
+}
+
+\renewcommand{\glsXpageXhyperbfit}[2]{%
+ \textbf{\em\linkpagenumber#2}%
+}
+
+% Syntax: \linkpagenumber\tallynum{page number}
+% This creates hyperlink to the given page.
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+
+% Define glossary entries
+% \glshyperlink is used instead of \gls to prevent the glossary
+% page numbers also appear in the locations, however I need
+% to ensure that the referenced entries are added to the
+% glossary via commands that use \glslink, \glsadd or \glssee
+
+\newglossaryentry{mcadam}{name={McAdam, John Loudon},
+first={John Loudon McAdam},text={McAdam},
+description={Scottish engineer}}
+
+\newglossaryentry{maclaurin}{name={Maclaurin, Colin},
+first={Colin Maclaurin},text={Maclaurin},
+description={Scottish mathematician best known for the
+\gls{maclaurinseries}}}
+
+\newglossaryentry{maclaurinseries}{name={Maclaurin series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylorstheorem}{name={Taylor's theorem},
+description={Theorem expressing a function $f(x)$ as the sum of
+a polynomial and a remainder:
+\[f(x) = f(a)+f'(a)(x-a)+f''(a)(x-a^2)/2!+\cdots+R_n\]
+If $n\to\infty$ the expansion is a \glshyperlink{taylorseries}
+and if $a=0$, the series is called a
+\gls{maclaurinseries}}}
+
+\newglossaryentry{taylorseries}{name={Taylor series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylor}{name={Taylor, Brook},
+first={Brook Taylor},text={Taylor},
+description={English mathematician}}
+
+\newglossaryentry{mcnemar}{name={McNemar, Quinn},
+first={Quinn McNemar},text={McNemar},
+description={Mathematician who introduced
+\gls{mcnemarstest}. This entry has the number list
+suppressed},nonumberlist}
+
+\newglossaryentry{mcnemarstest}{name={McNemar's test},
+description={A nonparametric test introduced by
+\gls{mcnemar} in 1947}}
+
+\newglossaryentry{mach}{name={Mach, Ernst},
+first={Ernst Mach},text={Mach},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach, Ernst},
+description={Czech/Austrian physicist and philosopher}}
+
+\newglossaryentry{machnumber}{name={Mach number},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach number},
+description={Ratio of the speed of a body in a fluid to the
+speed of sound in that fluid named after \gls{mach}}}
+
+\newglossaryentry{malthus}{name={Malthus, Thomas Robert},
+first={Thomas Robert Malthus},text={Malthus},
+description={English mathematician, sociologist and classicist}}
+
+\newglossaryentry{ampereandre}{name={Ampère, André-Marie},
+first={André-Marie Ampère},text={Ampère},
+description={French mathematician and physicist}}
+
+\newglossaryentry{ampere}{name={ampere},
+description={SI unit of electric current named after
+\gls{ampereandre}}}
+
+\newglossaryentry{archimedes}{name={Archimedes of Syracuse},
+first={Archimedes of Syracuse},text={Archimedes},
+description={Greek mathematician}}
+
+\newglossaryentry{archimedesprinciple}{name={Archimedes' principle},
+description={Principle that if a body is submerged in a fluid
+it experiences upthrust equal to the weight of the displaced
+fluid. Named after \gls{archimedes}}}
+
+\newglossaryentry{galton}{name={Galton, Sir Francis},
+first={Sir Francis Galton},text={Galton},
+description={English anthropologist}}
+
+\newglossaryentry{gauss}{name={Gauss, Karl Friedrich},
+first={Karl Friedrich Gauss},text={Gauss},
+description={German mathematician}}
+
+\newglossaryentry{gaussianint}{name={Gaussian integer},
+description={Complex number where both real and imaginary
+parts are integers}}
+
+\newglossaryentry{gaussianfn}{name={Gaussian function},
+ description={A function of the form:
+ \[f(x) = a \exp\left(-\frac{(x-b)^2}{2c^2}\right)\]
+ for some constants $a$, $b$ and $c$}}
+
+\newglossaryentry{peano}{name={Peano, Giuseppe},
+first={Giuseppe Peano},text={Peano},
+description={Italian mathematician}}
+
+\newglossaryentry{peanoscurve}{name={Peano's curve},
+description={A space-filling curve discovered by
+\gls{peano}}}
+
+\newglossaryentry{pearson}{name={Pearson, Karl},
+first={Karl Pearson},text={Pearson},
+description={English mathematician}}
+
+\newglossaryentry{pearspmcc}{name={Pearson's product moment
+correlation coefficient},description={Product moment correlation
+coefficient named after \gls{pearson}}}
+
+\begin{document}
+\title{Sample Document Using the Glossaries Package With Xindy}
+\author{Nicola Talbot}
+\maketitle
+
+\section{\glsentryfirst{gauss}}
+
+This is a section on \gls[format=(]{gauss}. This section spans
+several pages.
+
+\rule{1pt}{0.6\textheight}
+
+This paragraph has been shoved to the bottom of the page using a rule.
+This paragraph spans a page break for testing purposes to ensure the
+glossary entry in this paragraph has the correct location. Here's
+the glossary entry: \gls{gaussianfn}. Check that the location is
+correct.
+
+This page talks about \glspl[format=hyperbfit]{gaussianint}. Since
+it's the principle definition, the user-defined hyperbfit format is
+used.
+
+\newpage
+
+The section on \gls[format=)]{gauss} ends here.
+
+\section{Series Expansions}
+
+This section is about series expansions. It mentions
+\gls{maclaurin} and \gls{taylor}. It also discusses
+\gls{taylorstheorem} which is related to the \gls{taylorseries}.
+The \gls{maclaurinseries} is a special case of the
+\gls{taylorseries}.
+
+\section{\glsentryname{archimedesprinciple}}
+
+This section discusses \gls{archimedesprinciple} which was
+introduced by \gls{archimedes}.
+
+\section{Another section}
+
+This section covers \gls{mach} who introduced the \gls{machnumber}.
+It also mentions \gls{ampereandre} after whom the
+SI unit \gls{ampere} is named. It then discusses \gls{galton}
+and \gls{malthus}. Finally it mentions \gls{mcadam}.
+
+\newpage
+This page discusses \gls{mcnemar} who introduced
+\gls{mcnemarstest} and \gls{peano} who discovered \gls{peanoscurve}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy2.pdf b/macros/latex/contrib/glossaries/samples/samplexdy2.pdf
new file mode 100644
index 0000000000..029f4bfb79
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy2.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy2.tex b/macros/latex/contrib/glossaries/samples/samplexdy2.tex
new file mode 100644
index 0000000000..4ed7bd7244
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy2.tex
@@ -0,0 +1,73 @@
+ % This file is public domain
+ %
+ % This is a sample document illustrating how to use the
+ % glossaries package with xindy. To create the document:
+ %
+ % pdflatex samplexdy2
+ % makeglossaries samplexdy2
+ % pdflatex samplexdy2
+ %
+ % This sample file won't work with makeindex
+ %
+ % If you want to use arara, you need the following directives:
+ % arara: pdflatex: { synctex: on }
+ % arara: makeglossaries
+ % arara: pdflatex: { synctex: on }
+\documentclass{report}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage[xindy,counter=section]{glossaries}
+
+ % Set up somewhat eccentric section numbering system:
+
+\renewcommand*{\thesection}{[\thechapter]\arabic{section}}
+
+\renewcommand*{\theHsection}{\thepart.\thesection}
+\renewcommand*{\thepart}{\Roman{part}}
+
+\GlsAddXdyLocation["roman-numbers-uppercase"]{section}{:sep "["
+ "arabic-numbers" :sep "]" "arabic-numbers"
+}
+
+ % If part is 0, then \thepart will be empty, so add an extra
+ % case to catch this:
+
+\GlsAddXdyLocation{zero.section}{:sep "["
+ "arabic-numbers" :sep "]" "arabic-numbers"
+}
+
+ % (Note that the above will stop xindy giving a warning, but the
+ % location hyper links will be invalid if no \part is used.)
+
+\makeglossaries
+
+\newglossaryentry{sample}{name=sample,description={an example}}
+\newglossaryentry{sample2}{name=sample2,description={another example}}
+
+\begin{document}
+This is a sample document illustrating Xindy specific commands in
+the glossaries package.
+
+\part{First Part}
+
+\chapter{Sample Chapter}
+This example document has an eccentric section numbering system
+where the section number is prefixed by the chapter number in square
+brackets.
+
+\section{First Section}
+
+\gls{sample}. \gls{sample2}.
+
+\section{Second Section}
+
+\gls{sample2}.
+
+\section{Third Section}
+
+\gls{sample}. \gls{sample2}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy3.pdf b/macros/latex/contrib/glossaries/samples/samplexdy3.pdf
new file mode 100644
index 0000000000..14c420dcf3
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy3.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries/samples/samplexdy3.tex b/macros/latex/contrib/glossaries/samples/samplexdy3.tex
new file mode 100644
index 0000000000..dcdc327b37
--- /dev/null
+++ b/macros/latex/contrib/glossaries/samples/samplexdy3.tex
@@ -0,0 +1,269 @@
+% This file is public domain.
+%
+% This is a sample document illustrating how to use the
+% glossaries package with xindy. To create the document:
+%
+% latex samplexdy
+% makeglossaries samplexdy
+% latex samplexdy
+%
+% If you don't have Perl installed, then use one of the
+% following instead of makeglossaries:
+%
+% If you want to have a separate "Mc" letter group do:
+%
+% xindy -I xindy -M samplexdy-mc -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% Otherwise do:
+%
+% xindy -L english -C utf8 -I xindy -M samplexdy -t samplexdy.glg -o samplexdy.gls samplexdy.glo
+%
+% If you want to use arara, you need the following directives:
+% arara: pdflatex: { synctex: on }
+% arara: makeglossaries
+% arara: pdflatex: { synctex: on }
+ \documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{fmtcount}
+
+\usepackage[colorlinks,plainpages]{hyperref}
+\usepackage[xindy,style=altlistgroup]{glossaries}
+
+% Define a new command to do bold italic:
+
+\newcommand*{\hyperbfit}[1]{\textit{\hyperbf{#1}}}
+
+% Need to add this to the list of attributes in order
+% to use it with xindy:
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyAttribute{hyperbfit}
+
+% Redefine the page numbers so that they appear as a word:
+
+\renewcommand*{\thepage}{\texorpdfstring{\customfmt{page}}{\arabic{page}}}
+
+\newcommand{\customfmt}[1]{\customfmtnum{\arabic{#1}}}
+\newrobustcmd{\customfmtnum}[1]{\Numberstringnum{#1}}
+
+% Need to add this to the list of location styles.
+% \customfmt{page} gets expanded to
+% \custommfmtnum {<n>} (where <n> is the page number)
+% so need to define the location in that format:
+% (This command will have no effect if \noist is used)
+
+\GlsAddXdyLocation{customfmt}{:sep "\string\customfmtnum\space\glsopenbrace"
+ "arabic-numbers" :sep "\glsclosebrace"}
+
+% (Need to redefine \glsXpageXhyperbfit and
+% \glsXpageXglsnumberformat after \makeglossaries to get the
+% hyperlinks working correctly.)
+
+% To have Mc as a separate group uncomment the following three
+% lines:
+
+%\setStyleFile{samplexdy-mc} % note no extension
+%\noist
+%\GlsSetXdyLanguage{}
+
+% The above three lines specify to use samplexdy-mc.xdy (supplied
+% with this file) and don't overwrite it. The language is
+% unset using \GlsSetXdyLanguage{} as all the language
+% dependent information is contained in samplexdy-mc.xdy
+% Note that using \noist means that commands like
+% \GlsAddXdyAttribute and \GlsAddXdyLocation will no longer have
+% an effect.
+
+% Write the style file (if \noist isn't used)
+% and activate glossary entries
+
+\makeglossaries
+
+% Each page location will be specified in the form:
+%
+% "\glsXpageXglsnumberformat{}{\customfmtnum "\marg{n}"}"
+% or
+% "\glsXpageXhyperbfit{}{\customfmtnum "\marg{n}"}"
+%
+% Redefine to allow hyperlinks:
+
+\renewcommand{\glsXpageXglsnumberformat}[2]{%
+ \linkpagenumber#2%
+}
+
+\renewcommand{\glsXpageXhyperbfit}[2]{%
+ \textbf{\em\linkpagenumber#2}%
+}
+
+% The arguments of \linkpagenumber will be
+% #1 -> \customfmtnum
+% #2 -> n
+% This means that the page number (n) can be used to
+% form the hyperlink target.
+\newcommand{\linkpagenumber}[2]{\hyperlink{page.#2}{#1{#2}}}
+
+% Define glossary entries
+% \glshyperlink is used instead of \gls to prevent the glossary
+% page numbers also appear in the locations, however I need
+% to ensure that the referenced entries are added to the
+% glossary via commands that use \glslink, \glsadd or \glssee
+
+\newglossaryentry{mcadam}{name={McAdam, John Loudon},
+first={John Loudon McAdam},text={McAdam},
+description={Scottish engineer}}
+
+\newglossaryentry{maclaurin}{name={Maclaurin, Colin},
+first={Colin Maclaurin},text={Maclaurin},
+description={Scottish mathematician best known for the
+\gls{maclaurinseries}}}
+
+\newglossaryentry{maclaurinseries}{name={Maclaurin series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylorstheorem}{name={Taylor's theorem},
+description={Theorem expressing a function $f(x)$ as the sum of
+a polynomial and a remainder:
+\[f(x) = f(a)+f'(a)(x-a)+f''(a)(x-a^2)/2!+\cdots+R_n\]
+If $n\to\infty$ the expansion is a \glshyperlink{taylorseries}
+and if $a=0$, the series is called a
+\gls{maclaurinseries}}}
+
+\newglossaryentry{taylorseries}{name={Taylor series},
+description={Series expansion},see={taylorstheorem}}
+
+\newglossaryentry{taylor}{name={Taylor, Brook},
+first={Brook Taylor},text={Taylor},
+description={English mathematician}}
+
+\newglossaryentry{mcnemar}{name={McNemar, Quinn},
+first={Quinn McNemar},text={McNemar},
+description={Mathematician who introduced
+\gls{mcnemarstest}. This entry has the number list
+suppressed},nonumberlist}
+
+\newglossaryentry{mcnemarstest}{name={McNemar's test},
+description={A nonparametric test introduced by
+\gls{mcnemar} in 1947}}
+
+\newglossaryentry{mach}{name={Mach, Ernst},
+first={Ernst Mach},text={Mach},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach, Ernst},
+description={Czech/Austrian physicist and philosopher}}
+
+\newglossaryentry{machnumber}{name={Mach number},
+% if using samplexdy-mc.xdy, the following line is needed
+% to prevent this entry being put in the "Mc" group
+sort={mach number},
+description={Ratio of the speed of a body in a fluid to the
+speed of sound in that fluid named after \gls{mach}}}
+
+\newglossaryentry{malthus}{name={Malthus, Thomas Robert},
+first={Thomas Robert Malthus},text={Malthus},
+description={English mathematician, sociologist and classicist}}
+
+\newglossaryentry{ampereandre}{name={Ampère, André-Marie},
+first={André-Marie Ampère},text={Ampère},
+description={French mathematician and physicist}}
+
+\newglossaryentry{ampere}{name={ampere},
+description={SI unit of electric current named after
+\gls{ampereandre}}}
+
+\newglossaryentry{archimedes}{name={Archimedes of Syracuse},
+first={Archimedes of Syracuse},text={Archimedes},
+description={Greek mathematician}}
+
+\newglossaryentry{archimedesprinciple}{name={Archimedes' principle},
+description={Principle that if a body is submerged in a fluid
+it experiences upthrust equal to the weight of the displaced
+fluid. Named after \gls{archimedes}}}
+
+\newglossaryentry{galton}{name={Galton, Sir Francis},
+first={Sir Francis Galton},text={Galton},
+description={English anthropologist}}
+
+\newglossaryentry{gauss}{name={Gauss, Karl Friedrich},
+first={Karl Friedrich Gauss},text={Gauss},
+description={German mathematician}}
+
+\newglossaryentry{gaussianint}{name={Gaussian integer},
+description={Complex number where both real and imaginary
+parts are integers}}
+
+\newglossaryentry{gaussianfn}{name={Gaussian function},
+ description={A function of the form:
+ \[f(x) = a \exp\left(-\frac{(x-b)^2}{2c^2}\right)\]
+ for some constants $a$, $b$ and $c$}}
+
+\newglossaryentry{peano}{name={Peano, Giuseppe},
+first={Giuseppe Peano},text={Peano},
+description={Italian mathematician}}
+
+\newglossaryentry{peanoscurve}{name={Peano's curve},
+description={A space-filling curve discovered by
+\gls{peano}}}
+
+\newglossaryentry{pearson}{name={Pearson, Karl},
+first={Karl Pearson},text={Pearson},
+description={English mathematician}}
+
+\newglossaryentry{pearspmcc}{name={Pearson's product moment
+correlation coefficient},description={Product moment correlation
+coefficient named after \gls{pearson}}}
+
+\begin{document}
+\title{Sample Document Using the Glossaries Package With Xindy}
+\author{Nicola Talbot}
+\maketitle
+
+\section{\glsentryfirst{gauss}}
+
+This is a section on
+\gls[format=(]{gauss}. This section spans
+several pages.
+
+\rule{1pt}{0.6\textheight}
+
+This paragraph has been shoved to the bottom of the page using a rule.
+This paragraph spans a page break for testing purposes to ensure the
+glossary entry in this paragraph has the correct location. Here's
+the glossary entry: \gls{gaussianfn}.
+
+This page talks about \glspl[format=hyperbfit]{gaussianint}. Since
+it's the principle definition, the user-defined hyperbfit format is
+used.
+
+\newpage
+
+The section on \gls[format=)]{gauss} ends here.
+
+\section{Series Expansions}
+
+This section is about series expansions. It mentions
+\gls{maclaurin} and \gls{taylor}. It also discusses
+\gls{taylorstheorem} which is related to the \gls{taylorseries}.
+The \gls{maclaurinseries} is a special case of the
+\gls{taylorseries}.
+
+\section{\glsentryname{archimedesprinciple}}
+
+This section discusses \gls{archimedesprinciple} which was
+introduced by \gls{archimedes}.
+
+\section{Another section}
+
+This section covers \gls{mach} who introduced the \gls{machnumber}.
+It also mentions \gls{ampereandre} after whom the
+SI unit \gls{ampere} is named. It then discusses \gls{galton}
+and \gls{malthus}. Finally it mentions \gls{mcadam}.
+
+\newpage
+This page discusses \gls{mcnemar} who introduced
+\gls{mcnemarstest} and \gls{peano} who discovered \gls{peanoscurve}.
+
+\printglossaries
+\end{document}