From f8984c096c7871551016e012a01478e1a193fccd Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 14 Feb 2020 22:32:40 +0000 Subject: glossaries-extra (14feb20) git-svn-id: svn://tug.org/texlive/trunk@53780 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/latex/glossaries-extra/CHANGES | 120 + .../texmf-dist/doc/latex/glossaries-extra/README | 25 +- .../glossaries-extra/glossaries-extra-code.pdf | Bin 898453 -> 1358261 bytes .../glossaries-extra/glossaries-extra-manual.html | 25345 +++++++++---------- .../glossaries-extra/glossaries-extra-manual.pdf | Bin 787643 -> 784782 bytes .../glossaries-extra/glossaries-extra-manual.tex | 3930 +-- .../latex/glossaries-extra/sample-abbr-styles.pdf | Bin 512876 -> 537720 bytes .../latex/glossaries-extra/sample-abbr-styles.tex | 10 + .../doc/latex/glossaries-extra/sample-abbrv.pdf | Bin 44761 -> 44742 bytes .../doc/latex/glossaries-extra/sample-accsupp.pdf | Bin 82623 -> 82832 bytes .../latex/glossaries-extra/sample-acronym-desc.pdf | Bin 50368 -> 50350 bytes .../doc/latex/glossaries-extra/sample-acronym.pdf | Bin 36745 -> 36728 bytes .../doc/latex/glossaries-extra/sample-alias.pdf | Bin 43875 -> 43857 bytes .../latex/glossaries-extra/sample-altmodifier.pdf | Bin 35308 -> 35290 bytes .../glossaries-extra/sample-alttree-marginpar.pdf | Bin 91061 -> 90979 bytes .../latex/glossaries-extra/sample-alttree-sym.pdf | Bin 69498 -> 69519 bytes .../doc/latex/glossaries-extra/sample-alttree.pdf | Bin 54848 -> 55731 bytes .../glossaries-extra/sample-autoindex-hyp.pdf | Bin 141700 -> 141967 bytes .../latex/glossaries-extra/sample-autoindex.pdf | Bin 161138 -> 161468 bytes .../doc/latex/glossaries-extra/sample-crossref.pdf | Bin 41294 -> 41275 bytes .../latex/glossaries-extra/sample-crossref2.pdf | Bin 41613 -> 41603 bytes .../doc/latex/glossaries-extra/sample-docdef.pdf | Bin 45257 -> 45245 bytes .../latex/glossaries-extra/sample-entrycount.pdf | Bin 54623 -> 54604 bytes .../doc/latex/glossaries-extra/sample-external.pdf | Bin 34187 -> 34170 bytes .../doc/latex/glossaries-extra/sample-fmt.pdf | Bin 75268 -> 75249 bytes .../doc/latex/glossaries-extra/sample-footnote.pdf | Bin 63232 -> 63216 bytes .../doc/latex/glossaries-extra/sample-header.pdf | Bin 125912 -> 125893 bytes .../latex/glossaries-extra/sample-indexhook.pdf | Bin 42722 -> 42711 bytes .../latex/glossaries-extra/sample-initialisms.pdf | Bin 81618 -> 81573 bytes .../latex/glossaries-extra/sample-linkcount.pdf | Bin 38234 -> 38216 bytes .../glossaries-extra/sample-mixed-abbrv-styles.pdf | Bin 57823 -> 57809 bytes .../latex/glossaries-extra/sample-mixedsort.pdf | Bin 45154 -> 45141 bytes .../doc/latex/glossaries-extra/sample-mixture.pdf | Bin 159578 -> 159904 bytes .../latex/glossaries-extra/sample-name-font.pdf | Bin 202110 -> 202074 bytes .../doc/latex/glossaries-extra/sample-nested.pdf | Bin 67736 -> 67719 bytes .../sample-noidx-restricteddocdefs.pdf | Bin 47582 -> 47572 bytes .../doc/latex/glossaries-extra/sample-onelink.pdf | Bin 44455 -> 44500 bytes .../glossaries-extra/sample-onthefly-utf8.pdf | Bin 106071 -> 106058 bytes .../glossaries-extra/sample-onthefly-xetex.pdf | Bin 19859 -> 19641 bytes .../doc/latex/glossaries-extra/sample-onthefly.pdf | Bin 43481 -> 43469 bytes .../doc/latex/glossaries-extra/sample-pages.pdf | Bin 38801 -> 38788 bytes .../doc/latex/glossaries-extra/sample-postdot.pdf | Bin 37059 -> 37045 bytes .../doc/latex/glossaries-extra/sample-postlink.pdf | Bin 67890 -> 67872 bytes .../doc/latex/glossaries-extra/sample-prefix.pdf | Bin 33119 -> 33107 bytes .../glossaries-extra/sample-record-nameref.pdf | Bin 71315 -> 71296 bytes .../doc/latex/glossaries-extra/sample-record.pdf | Bin 50230 -> 50214 bytes .../glossaries-extra/sample-restricteddocdefs.pdf | Bin 47895 -> 47883 bytes .../latex/glossaries-extra/sample-suppl-hyp.pdf | Bin 34944 -> 34926 bytes .../glossaries-extra/sample-suppl-main-hyp.pdf | Bin 46402 -> 46382 bytes .../latex/glossaries-extra/sample-suppl-main.pdf | Bin 31607 -> 31596 bytes .../doc/latex/glossaries-extra/sample-suppl.pdf | Bin 13423 -> 13411 bytes .../doc/latex/glossaries-extra/sample-trans.pdf | Bin 49455 -> 49436 bytes .../doc/latex/glossaries-extra/sample-undef.pdf | Bin 33231 -> 33214 bytes .../glossaries-extra/sample-unitentrycount.pdf | Bin 61051 -> 61034 bytes .../doc/latex/glossaries-extra/sample.pdf | Bin 45747 -> 45727 bytes .../latex/glossaries-extra/glossaries-extra.dtx | 2992 ++- .../latex/glossaries-extra/glossaries-extra.ins | 4 +- .../glossaries-extra/example-glossaries-xr.tex | 2 +- .../glossaries-extra/glossaries-extra-bib2gls.sty | 20 +- .../glossaries-extra-stylemods.sty | 77 +- .../latex/glossaries-extra/glossaries-extra.sty | 1341 +- .../latex/glossaries-extra/glossary-bookindex.sty | 7 +- .../latex/glossaries-extra/glossary-longextra.sty | 4 +- .../tex/latex/glossaries-extra/glossary-topic.sty | 4 +- 64 files changed, 18491 insertions(+), 15390 deletions(-) diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/CHANGES b/Master/texmf-dist/doc/latex/glossaries-extra/CHANGES index 922ea958beb..72ab865c704 100644 --- a/Master/texmf-dist/doc/latex/glossaries-extra/CHANGES +++ b/Master/texmf-dist/doc/latex/glossaries-extra/CHANGES @@ -1,3 +1,123 @@ +1.42 (2020-02-13): + + * glossaries-extra.sty: + + - added support for glossaries.sty 'disablemakegloss' option + (introduced to glossaries.sty v4.45). + + - new package option 'prefix' automatically loads glossaries-prefix.sty + + - added warnings if \forallacronyms, \acrshort etc are used with + new abbreviation interface. + + - added warning if order=letter used with record=only or record=nameref + + - added check for existence of \alsoname + + - changed \glsseeitemformat, \glsxtrhiername, \Glsxtrhiername, + \GlsXtrhiername, \GLSxtrhiername, \GLSXTRhiername + to use \glsfmtname and \glsfmttext (or case-variants) + to ensure formatting is applied. + + - \glsfmtfull and \Glsfmtfull PDF case now use \glspdffmtfull + + - \glsfmtfullpl and \Glsfmtfullpl PDF case now use \glspdffmtfullpl + + - added missing text key to long-short, short-long, footnote, + postfootnote, long-short-sc, short-sc-long, short-sc-footnote, + short-sc-postfootnote, long-short-sm, short-sm-long, + short-sm-footnote, short-sm-postfootnote, long-short-em, + long-em-short-em, short-em-long, short-em-long-em, + short-em-footnote, short-em-postfootnote, long-short-user, + long-postshort-user, short-postlong-user, short-long-user, + long-hyphen-noshort-desc-noreg, long-hyphen-postshort-hyphen, + short-hyphen-long-hyphen, short-hyphen-postlong-hyphen + styles. + + - new abbreviation styles: short-footnote-desc (and synonym + footnote-desc), short-postfootnote-desc (and synonym + postfootnote-desc), short-sc-footnote-desc, + short-sc-postfootnote-desc, short-sm-footnote-desc, + short-sm-postfootnote-desc, short-em-footnote-desc, + short-em-postfootnote-desc. + + - added glosssymbolfont attribute + + - \glossentrysymbol: added check for \texorpdfstring (the TeX + inner part is now robust) + + - new entry formatting commands: + + \glspdffmtfull, \glspdffmtfullpl, + \GLSfmtname, \GLSfmttext, \GLSfmtplural, \GLSfmtfirst, \GLSfmtfirstpl, + \GLSfmtlong, \GLSfmtlongpl, \GLSfmtfull, \GLSfmtfullpl + \GLSxtrtitleshort, \GLSxtrtitleshortpl, \GLSxtrtitlename, + \GLSxtrtitletext, \GLSxtrtitleplural, \GLSxtrtitlefirst, + \GLSxtrtitlefirstplural, \GLSxtrtitlelong, \Glsxtrtitlelongpl, + \GLSxtrtitlefull, \GLSxtrtitlefullpl, + \glsxtrpdfentryfmt (used by \glsxtrentryfmt in PDF bookmarks) + + - new entry referencing command: \glsentrypdfsymbol + + - new cross-referencing command: \glsxtrusealias + + - new buffering command: \GlsXtrDiscardUnsetBuffering + + - new list commands: + + \glsxtrfieldformatlist + \glsxtrfieldformatcsvlist + \GlsXtrIfFieldValueInCsvList + \forallabbreviationlists + + - Bug fixes: + + - corrected interference caused by 'acronym'/'acronyms' + package option with abbreviation display style + + - moved \protect inside \glsxtrscsuffix (otherwise it + interferes with all caps) + + - corrected missing space factor with 'insertdots' attribute + + - \glslink with record was causing an undefined control + sequence error (\glslabel) in the post-link hook when + entries are undefined + + - restored original definition of \glsdohyperlink and + added \glsxtrdohyperlink to reference attributes instead. + + - \GlsXtrSetAltModifier now has a check to ensure '*' or '+' + haven't been used as the alternative modifier. + + - corrected accessibility support for abbreviations + + - redefine \@gls@entry@field so that it uses \csuse instead of + \csname (in the event commands like \glsentrytext are used + in captions or section headings with bib2gls) + + * glossaries-extra-bib2gls.sty: + + - \glsxtrdisplaylocnameref now checks for the existence of + \glsxtrlocfmt + + - New command: \glsxtrequationlocfmt + + - Redefined \glsdisplaynumberlist and \glsentrynumberlist + to work with bib2gls + + * glossary-bookindex.sty: + + - replaced hardcoded 'index.' prefix in pdfbookmark with + new command \glsxtrbookindexbookmarkprefix + + * glossaries-extra-stylemods.sty: + + - new commands: + + \glstreeNoDescSymbolPreLocation + \glstreegroupheaderskip + 1.41 (2019-04-09): * glossary-topic.sty: diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/README b/Master/texmf-dist/doc/latex/glossaries-extra/README index 6f39a09e001..618f8951daf 100644 --- a/Master/texmf-dist/doc/latex/glossaries-extra/README +++ b/Master/texmf-dist/doc/latex/glossaries-extra/README @@ -1,8 +1,17 @@ -LaTeX Package : glossaries-extra v1.41 - -Last Modified : 2019-04-09 +LaTeX Package : glossaries-extra v1.42 (2020-02-13) Author : Nicola Talbot + https://www.dickimaw-books.com/contact + +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. + +Copyright 2015-2020 Nicola Talbot + +DESCRIPTION This package provides improvements and extra features to the glossaries package. Some of the default glossaries.sty behaviour @@ -18,11 +27,7 @@ minimal working examples for testing the glossaries-extra package. (The base glossaries package provides additional files, but this one needs glossaries-extra.sty.) -LICENCE - -This material is subject to the LaTeX Project Public License. -See http://www.ctan.org/license/lppl1.3 -for the details of that license. - -Author's home page: http://www.dickimaw-books.com/ +SEE ALSO: +https://ctan.org/pkg/glossaries +https://ctan.org/pkg/bib2gls diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-code.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-code.pdf index 8272e2c862b..34dea1ecae9 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-code.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-code.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-manual.html b/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-manual.html index bf636b8fa4b..a03a84c694a 100644 --- a/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-manual.html +++ b/Master/texmf-dist/doc/latex/glossaries-extra/glossaries-extra-manual.html @@ -61,10 +61,11 @@ .cmtt-8{font-family: monospace;} .cmtt-8{font-family: monospace;} .cmti-8{font-size:80%; font-style: italic;} -p.noindent { text-indent: 0em } -td p.noindent { text-indent: 0em; margin-top:0em; } -p.nopar { text-indent: 0em; } -p.indent{ text-indent: 1.5em } +p{margin-top:0;margin-bottom:0} +p.indent{text-indent:0;} +p + p{margin-top:1em;} +p + div, p + pre {margin-top:1em;} +div + p, pre + p {margin-top:1em;} @media print {div.crosslinks {visibility:hidden;}} a img { border-top: 0; border-left: 0; border-right: 0; } center { margin-top:1em; margin-bottom:1em; } @@ -87,7 +88,7 @@ div.obeylines-v p { margin-top:0; margin-bottom:0; } 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; } +div.verbatim {font-family: monospace,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; } @@ -122,7 +123,9 @@ 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; } +.hline hr, .cline hr{ height : 0px; margin:0px; } +.hline td, .cline td{ padding: 0; } +.hline hr, .cline hr{border:none;border-top:1px solid black;} .tabbing-right {text-align:right;} span.TEX {letter-spacing: -0.125em; } span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;} @@ -132,8 +135,9 @@ 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;} +.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.reversemarginpar{float:left;} table.equation {width:100%;} .equation td{text-align:center; } td.equation { margin-top:1em; margin-bottom:1em; } @@ -188,7 +192,9 @@ 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;} +table.longtable{margin-left:auto; margin-right: auto;} .supertabular {text-align:center} +.warningsymbol { color: red; font-weight: bold;} div.important { border : solid red; } div.verbatim { font-family: monospace; white-space: nowrap; text-align:left; clear:both; padding-top: 2ex; padding-bottom: 2ex;} span.HoLogo-XeLaTeX span.HoLogo-Xe{margin-right:-.13em;} @@ -218,7 +224,7 @@ a span.HoLogo-TeX span.HoLogo-e{text-decoration:none;} >

glossaries-extra.sty v1.41: an extension to the +class="cmr-17">glossaries-extra.sty v1.42: an extension to the glossaries package

@@ -242,7 +248,7 @@ href="http://www.dickimaw-books.com/" class="url" >http://www.dickimaw-books.com/

2019-04-09

+class="cmr-12">2020-02-13

@@ -265,9 +271,9 @@ class="cmss-10">glossaries version 4.19 (or above). This document assumes glossaries package.

The file example-glossaries-xr.tex contains dummy entries with cross-references -that may be used for creating minimal working examples for testing the -example-glossaries-xr.tex contains dummy entries with +cross-references that may be used for creating minimal working examples for testing +the glossaries-extra package. (The base glossaries package provides additional files, but this one needs New or Modified Package Options
2 Modifications to Existing Commands and Styles
 2.1 Entry Indexing +href="#definingentries" id="QQ2-1-6">Defining Entries
 2.2 Cross-References (“see” and “see also”) +href="#sec:wrglossary" id="QQ2-1-7">Entry Indexing
 2.3 Entry Display Style Modifications +href="#sec:see" id="QQ2-1-8">Cross-References (“see” and “see also”)
 2.4 Entry Counting Modifications +href="#sec:entryfmtmods" id="QQ2-1-9">Entry Display Style Modifications
 2.5 First Use Flag +href="#sec:entrycountmods" id="QQ2-1-10">Entry Counting Modifications
 2.6 Plurals +href="#sec:glsunset" id="QQ2-1-11">First Use Flag
 2.7 Nested Links +href="#plurals" id="QQ2-1-12">Plurals
 2.8 Acronym Style Modifications +href="#sec:nested" id="QQ2-1-13">Nested Links
 2.9 glossary-bookindex package +href="#sec:acronymmods" id="QQ2-1-14">Acronym Style Modifications
 2.10 glossary-longextra package -
 2.11 glossary-topic package -
 2.12 Glossary Style Modifications -
  2.12.1 Style Hooks -
  2.12.2 Number List -
  2.12.3 The glossaries-extra-stylemods Package +href="#glossaries" id="QQ2-1-16">Glossaries +
  2.10.1 Glossary Style Modifications
3 Abbreviations +href="#newglossarystyles" id="QQ2-1-21">New Glossary Styles
 3.1 Tagging Initials +href="#x1-210003.1" id="QQ2-1-22">glossary-bookindex package
 3.2 Abbreviation Styles +href="#x1-220003.2" id="QQ2-1-23">glossary-longextra package
 3.3 Shortcut Commands -
 3.4 Predefined Abbreviation Styles -
  3.4.1 Predefined Abbreviation Styles that Set the Regular Attribute -
  3.4.2 Predefined Abbreviation Styles that Don’t Set the Regular Attribute -
 3.5 Defining New Abbreviation Styles +href="#x1-230003.3" id="QQ2-1-24">glossary-topic package
4 Entries in Sectioning Titles, Headers, Captions and Contents +href="#sec:abbreviations" id="QQ2-1-25">Abbreviations +
 4.1 Tagging Initials +
 4.2 Abbreviation Styles +
 4.3 Shortcut Commands +
 4.4 Predefined Abbreviation Styles +
  4.4.1 Predefined Abbreviation Styles that Set the Regular Attribute +
  4.4.2 Predefined Abbreviation Styles that Don’t Set the Regular Attribute +
 4.5 Defining New Abbreviation Styles
5 Categories +href="#sec:headtitle" id="QQ2-1-34">Entries in Sectioning Titles, Headers, Captions and Contents +
 5.1 Simplistic Approach +
 5.2 New Commands Designed for Chapter/Section Headings
6 Counting References -
 6.1 Entry Counting (First Use Flag) -
 6.2 Link Counting +href="#sec:categories" id="QQ2-1-37">Categories
7 Auto-Indexing +href="#sec:countref" id="QQ2-1-38">Counting References +
 7.1 Entry Counting (First Use Flag) +
 7.2 Link Counting
8 On-the-Fly Document Definitions -
9 bib2gls: Managing Reference Databases +href="#sec:autoindex" id="QQ2-1-41">Auto-Indexing +
9 bib2gls: Managing Reference Databases
 9.1 Selection +href="#selection" id="QQ2-1-43">Selection
 9.2 Sorting and Displaying the Glossary +href="#sortinganddisplayingtheglossary" id="QQ2-1-44">Sorting and Displaying the Glossary
 9.3 The The glossaries-extra-bib2gls package
  9.3.1 Supplemental Locations +href="#sec:supplocations" id="QQ2-1-46">Supplemental Locations
  9.3.2 Nameref Record +href="#sec:recordnameref" id="QQ2-1-47">Nameref Record
  9.3.3 Helper Commands for Resource Options +href="#sec:resourcecommands" id="QQ2-1-48">Helper Commands for Resource Options
 9.4 Supplementary Commands +href="#supplementarycommands" id="QQ2-1-49">Supplementary Commands
 9.5 Record Counting +href="#sec:recordcount" id="QQ2-1-50">Record Counting
10 Miscellaneous New Commands +href="#sec:miscnew" id="QQ2-1-51">Miscellaneous New Commands
 10.1 Entry Fields +href="#sec:fields" id="QQ2-1-52">Entry Fields
 10.2 Display All Entries Without Sorting or Indexing +href="#sec:printunsrt" id="QQ2-1-53">Display All Entries Without Sorting or Indexing
 10.3 Standalone Entry Items +href="#sec:glossentry" id="QQ2-1-54">Standalone Entry Items
 10.4 Entry Aliases +href="#sec:alias" id="QQ2-1-55">Entry Aliases
11 Supplemental Packages -
 11.1 Prefixes or Determiners -
 11.2 Accessibility Support +href="#sec:onthefly" id="QQ2-1-56">On-the-Fly Document Definitions
12 Sample Files +href="#sec:supplemental" id="QQ2-1-57">Supplemental Packages +
 12.1 Prefixes or Determiners +
 12.2 Accessibility Support
13 Multi-Lingual Support +href="#sec:samples" id="QQ2-1-60">Sample Files +
14 Multi-Lingual Support
Glossary

@@ -803,7 +812,7 @@ class="cmtt-10">\setabbreviationstyle before \newacronym. See §3 §4 Abbreviations for further details.)

@@ -880,9 +889,7 @@ href="#styopt.debug">debug=true and uses -


\glsxtrwrglossmark 


\glsxtrwrglossmark

@@ -1060,29 +1067,42 @@ class="cmtt-10">loc-prefix which will only apply if the entry has a number list.)

+prefix
Load the glossaries-prefix package (if not already loaded). +
accsupp
Load the glossaries-accsupp package (if not already loaded). -

If you want to define styles that can interface with the accessibility support + id="dx1-4036"> package (if not already loaded). +

The glossaries-accsupp package is still experimental and so accessibility features + are liable to change.
+

+

If you want to define styles that can interface with the accessibility support provided by glossaries-accsupp use the use the \glsaccessxxx⟩ type of commands instead of \glsentryxxx⟩ (for example, \glsaccesstext instead of + id="dx1-4039"> instead of \glsentrytext). If ). If glossaries-accsupp hasn’t been loaded those commands are + id="dx1-4041"> hasn’t been loaded those commands are equivalent (for example, \glsaccesstext just does \glsentrytext) but if it @@ -1091,101 +1111,101 @@ class="cmtt-10">\glsaccessxxx⟩ commands will add the accessibility information. (See §11.2 §12.2 Accessibility Support for further details.) -

Note that the

Note that the accsupp option can only be used as a package option (and can’t + id="dx1-4042"> option can only be used as a package option (and can’t be set with \glossariesextrasetup) since the ) since the glossaries-accsupp package must + id="dx1-4044"> package must be loaded before glossaries-extra if it’s required.

stylemods
This is a ⟨key⟩=⟨value⟩ option used to load the glossaries-extra-stylemods + id="dx1-4046"> package. The value may be a comma-separated list of options to pass to that package. (Remember to group ⟨value⟩ if it contains any commas.) The value may be omitted if no options need to be passed. See §2.12 §2.10.1 Glossary Style Modifications for further details. There are two special keyword values: stylemods=default (equivalent to omitting the value) and (equivalent to omitting the value) and stylemods=all, which + id="dx1-4048">, which loads all the predefined styles.
undefaction
This is a ⟨key⟩=⟨value⟩ option, which has two allowed values: warn and + + + error. This indicates what to do if an undefined glossary entry is referenced. The default behaviour is undefaction=error, which produces an error message (the + id="dx1-4050">, which produces an error message (the default for glossaries). You can switch this to a warning message (and ?? appearing in the text) with undefaction=warn. -

Undefined entries can’t be picked up by any commands that iterate + id="dx1-4051">. +

Undefined entries can’t be picked up by any commands that iterate over a glossary list. This includes \forglsentries and and \glsaddall. + id="dx1-4053">.
- - - -

-

Note that

+

Note that \ifglsused will display ?? in the document text with + id="dx1-4054"> will display ?? in the document text with undefaction=warn if the entry hasn’t been defined, as the underlying boolean + id="dx1-4055"> if the entry hasn’t been defined, as the underlying boolean variable doesn’t exist and so is neither true nor false. (There will also be a warning in the transcript.) See §2.5 §2.6 First Use Flag for further details.

indexcrossrefs
This is a boolean option. If true, this will automatically index any cross-referenced entries that haven’t been marked as used at the end of the @@ -1194,65 +1214,65 @@ class="cmss-10">true, this will automatically index any class="cmss-10">false, but it will be automatically switched on if you use the see or or seealso keys + id="dx1-4058"> keys in any entries (unless autoseeindex=false). To force it off, even if you + id="dx1-4059">). To force it off, even if you use the see or or seealso key, you need to explicitly set key, you need to explicitly set indexcrossrefs to + id="dx1-4062"> to false. -

Note that

Note that bib2gls can automatically find dependent entries when it parses the .bib source file. The record option automatically implements + id="dx1-4064"> option automatically implements indexcrossrefs=false. + id="dx1-4065">.

autoseeindex
(New to v1.16.) This is a boolean option. If true (default), this makes the see and and seealso keys automatically index the cross-reference when an entry + id="dx1-4068"> keys automatically index the cross-reference when an entry is defined. If false, the value of those keys will still be stored in their corresponding fields (and can be accessed using commands like \glsxtrusesee and \glsxtruseseealso) but cross-reference won’t be automatically indexed. -

Note that the

Note that the record=only option automatically implements option automatically implements autoseeindex=false. -

For example, if an entry is defined as + id="dx1-4070">. +

For example, if an entry is defined as @@ -1260,7 +1280,7 @@ class="cmss-10">=false \newglossaryentry{foo}{name={foo},description={},see={bar,baz}}

-

then with

then with autoseeindex=true, this is equivalent to @@ -1272,7 +1292,7 @@ class="cmtt-10">autoseeindex=true, this is equivalent to  
\glossariesextrasetup{indexcrossrefs=true}  
\GlsXtrSetField{foo}{see}{bar,baz} -

but with

but with autoseeindex=false, this is equivalent to @@ -1282,19 +1302,19 @@ class="cmtt-10">autoseeindex=false, this is equivalent to \newglossaryentry{foo}{name={foo},description={}}  
\GlsXtrSetField{foo}{see}{bar,baz} -

Note that

Note that indexcrossrefs isn’t automatically implemented by the presence of the + id="dx1-4071"> isn’t automatically implemented by the presence of the see key when key when autoseeindex is false. -

It’s therefore possible to remove the cross-references from the location lists and + id="dx1-4073"> is false. +

It’s therefore possible to remove the cross-references from the location lists and set their position within the glossary style. -

Another method of preventing the automatic indexing is to define the entries +

Another method of preventing the automatic indexing is to define the entries before the external indexing files have been opened with \makeglossaries. Since the appropriate file isn’t open, the information can’t be written to it. @@ -1306,25 +1326,25 @@ class="cmss-10">glossaries) to record

(New to v1.08.) This is a ⟨key⟩=⟨value⟩ option provided for the benefit of bib2gls (see §9 bib2gls: Managing Reference Databases). -

The option may only be set in the preamble and can’t be used after +

The option may only be set in the preamble and can’t be used after \GlsXtrLoadResources. If the value is missing record=only is assumed. + id="dx1-4076"> is assumed. Permitted values:

\makenoidxglossaries. This setting href="#styopt.undefaction">undefaction=error. + id="dx1-4077">.
only
The indexing is performed by bib2gls (see §9 \makenoidxglossaries is permitted. This setting imp href="#styopt.undefaction">undefaction=warn and automatically loads the supplementary + id="dx1-4079"> and automatically loads the supplementary glossaries-extra-bib2gls package. (There should be no need to explicitly + id="dx1-4080"> package. (There should be no need to explicitly load glossaries-extra-bib2gls.) -

The glossaries should be displayed using .) +

The glossaries should be displayed using \printunsrtglossary (or \printunsrtglossaries). -

The document build process is (assuming the file is called

The document build process is (assuming the file is called myDoc.tex): @@ -1378,53 +1398,53 @@ class="cmtt-10">myDoc.tex):  
bib2gls myDoc  
pdflatex myDoc -

-

Note that

+

Note that record=only will prevent the will prevent the see from automatically + id="dx1-4083"> from automatically implementing \glssee. (bib2gls deals with the see field.) You + id="dx1-4085"> field.) You may explicitly use \glssee in the document, but bib2gls will ignore the cross-reference if the see field was already set for that + id="dx1-4087"> field was already set for that entry. -

The

The record=only option will automatically set the option will automatically set the glossaries package’s sort=none option if available. (That option value was only introduced to + id="dx1-4089"> option if available. (That option value was only introduced to glossaries v4.30.)

nameref
(New to v1.37 and requires bib2gls v1.8+.) This option is like record=only but additionally records the current label information given by + id="dx1-4091"> but additionally records the current label information given by \@currentlabel and \@currentHref, and provides a more reliable way of @@ -1433,7 +1453,7 @@ class="cmtt-10">\theHcounter⟩ for the given location. This option requires hyperref otherwise it will fall back on the usual location records. + id="dx1-4092"> otherwise it will fall back on the usual location records. Remember that \@currentHref is always globally updated whenever \@currentlabel isn’t. This can cause some indexcounter option increments the associated counter every time an entry + id="dx1-4093"> option increments the associated counter every time an entry is indexed, which affects this option. See §9.3.2 Nameref Record for further details. -

This option is best used with

This option is best used with counter=chapter or or counter=section if you + id="dx1-4095"> if you want the title included in the location list. If the indexing counter is the default page, only the location number is shown. Similarly for + id="dx1-4096">, only the location number is shown. Similarly for counter=equation (or (or equations=true). + id="dx1-4098">).

alsoindex
This is a hybrid setting that uses bib2gls to fetch entry information from .bib files, but uses makeindex or xindy to create the glossary files. This option should be used with \makeglossaries but not \makenoidxglossaries. You may need to change the transcript file used by bib2gls to avoid a clash with the transcript file used by makeindex or xindy. (This can be done with bib2gls’s --log-file or -t option.) -

The glossaries should be displayed using

The glossaries should be displayed using \printglossary (or \printglossaries). This option is expected to be used with bib2gls’s sort=none setting and so glossaries-extra-bib2gls is not automatically + id="dx1-4107"> is not automatically loaded. -

The document build process is (assuming the file is called

The document build process is (assuming the file is called myDoc.tex): @@ -1530,16 +1550,16 @@ class="cmtt-10">myDoc.tex):  
makeglossaries myDoc  
pdflatex myDoc -

-

With the recording on (

+

With the recording on (record=only or or record=alsoindex), any of the commands + id="dx1-4109">), any of the commands that would typically index the entry (such as \gls, \glstext or \glsadd) will add a \glsxtr@record entry to the .aux file. bib2gls can then read these lines to find out which entries have been used. (Remember @@ -1566,21 +1586,21 @@ class="cmtt-10">bib2gls: Managing Reference Databases). You may want to consider using \glsadd after the caption (not before). For  
  \glsadd{foobar}  
\end{figure} -

+

indexcounter
(New to v1.29.) This option (which doesn’t take a value) is primarily intended for use with bib2gls (v1.4+) and hyperref. It can be used + id="dx1-4126">. It can be used with makeindex or xindy but it will interfere with the number list collation, so you won’t have ranges and you’ll have duplicate page numbers present (but each page number will link to the relevant part of the page @@ -1658,26 +1678,26 @@ href="#glo:numberlist">number list href="#styopt.counter">counter=wrglossary. -

This option works by incrementing . +

This option works by incrementing wrglossary and adding and adding \label. This can + id="dx1-4132">. This can cause a problem if the indexing occurs in an equation environment as environment as amsmath + id="dx1-4135"> forbids multiple occurrences of \label (resulting in the “Multiple \label’s” error). It’s best to change the counter to page or or equation when in maths mode + id="dx1-4137"> when in maths mode with this option. For example: @@ -1689,22 +1709,22 @@ class="cmss-10">equation\renewcommand{\glsaddpresetkeys}{%  
 \ifmmode \setkeys{glossadd}{counter=equation}\fi}
-

-

-

By default (with

+

+

By default (with hyperref), the page numbers in ), the page numbers in number lists link back to the top of the relevant page (provided the format uses \glshypernumber). The indexcounter option is designed to link back to the place within the page where + id="dx1-4140"> option is designed to link back to the place within the page where the indexing occurred. It does this by creating a new counter (called wrglossary) + id="dx1-4141">) that’s incremented with \refstepcounter every time an entry is indexed (but not via cross-referencing commands, such as \label is placed class="cmtt-10">\pageref. The location, as seen by the indexing application, is the value of the wrglossary counter but this value is substituted with the page + id="dx1-4142"> counter but this value is substituted with the page reference when number list is typeset. Since the counter is used by all + id="dx1-4143">number list is typeset. Since the counter is used by all entries and is incremented every time any indexing occurs, neither makeindex nor xindy can correctly collate the lists. For example, if the first term to be referenced is indexed three times on page 5 without any intervening terms then the actual locations obtained from wrglossary + id="dx1-4146"> will be 1, 2 and 3, which xindy and makeindex will try to form into the range 1–3, but they should actually all simply appear as page 5, whereas it can actually end up with 5–5. Conversely, a range may not be formed where it would naturally occur if just the page counter was + id="dx1-4149"> counter was used. -

Since

Since bib2gls is designed specifically to work with glossaries-extra, bib2gls (v1.4+) will check for wrglossary locations. If the default + id="dx1-4152"> locations. If the default --merge-wrglossary-records is on, then any records for the same page for a given entry will be merged. In the above example with three references on page 5, only a single record for page 5 for that entry will be added to the number list and it will link back to the first instance on + id="dx1-4153">number list and it will link back to the first instance on that page. Whereas if you use the --no-merge-wrglossary-records switch, the number list will contain three instance of page 5, with + id="dx1-4154">number list will contain three instance of page 5, with each linking to the corresponding place on that page. In both cases, consecutive pages can form ranges, but it may look strange in the second case. -

See the

See the bib2gls documentation for the save-index-counter resource option for more details. @@ -1776,7 +1796,7 @@ class="cmtt-10">save-index-counter resource option docdef

This option governs the use of \newglossaryentry. It was originally a boolean option, but as from version 1.06, it can now take one of the following @@ -1785,10 +1805,10 @@ class="cmss-10">true is assumed):
  • \newglossaryentry is not permitted in the is not permitted in the document environment + id="dx1-4159"> environment (default).
  • \newglossaryentry behaves as it does in the base glossaries package. That is, where its use is permitted in the document environment, it + id="dx1-4162"> environment, it uses the .glsdefs temporary file to store the entry definitions so that on the next LATEX run the entries are defined at the beginning of the document environment. This allows the entry information + id="dx1-4164"> environment. This allows the entry information to be referenced in the glossary, even if the glossary occurs before \newglossaryentry. (For example, when the glossary is displayed in @@ -1814,31 +1834,31 @@ class="cmtt-10">\newglossaryentry. (For example, when the glossary is dis class="E">EX run has drawbacks that are detailed in the glossaries user manual. -

    Remember that if

    Remember that if \newglossaryentry wouldn’t be allowed in the document environment with the base environment with the base glossaries package, then it still won’t be allowed with docdefs=true. If your glossaries occur at the + id="dx1-4168">. If your glossaries occur at the end of the document, consider using docdef=restricted instead. + id="dx1-4169"> instead.

  • (new to version 1.06) \newglossaryentry is permitted in the + id="dx1-4171"> is permitted in the document environment without using the environment without using the .glsdefs file. This means that all entries must be defined before the glossary is displayed, but it avoids the complications associated with saving the entry details @@ -1847,15 +1867,15 @@ class="cmtt-10">.glsdefs file. This means class="cmti-10">key⟩=⟨value⟩ mechanism (that is, the comma and equal sign) and any makeindex or xindy character that occurs in the sort key or label. If any of those characters + id="dx1-4176"> key or label. If any of those characters are made active in the document, then it can cause problems with the entry definition. This option will allow \newglossaryentry to @@ -1863,12 +1883,12 @@ class="cmtt-10">\newglossaryentry to class="cmtt-10">\makenoidxglossaries, but note that \longnewglossaryentry remains a preamble-only command. -

    With this option, if an entry appears in the glossary before it has been +

    With this option, if an entry appears in the glossary before it has been defined, an error will occur (or a warning if the undefaction=warn + id="dx1-4177"> option is used.) If you edit your document and either remove an entry or change its label, you may need to delete the document’s temporary files (such as the .gls files). href="#styopt.docdef">docdef=restricted but + id="dx1-4179"> but creates the .glsdefs file for atom’s autocomplete support. This file @@ -1893,22 +1913,22 @@ class="cmss-10">glossaries-extra and so associated problems with the href="#styopt.docdef">docdef=restricted, entries may + id="dx1-4180">, entries may be defined in the preamble or anywhere in the document, but they may only be referenced after they have been defined. Entries must be defined before the associated glossary is displayed.

-

The

The glossaries package allows \newglossaryentry within the document + id="dx1-4181"> environment (when used with makeindex or xindy) but the user manual warns against this usage. By default the prohibits this, only allowing definitions within the preamble. If you are really determined to define entries in the document environment, despite all the associated drawbacks, you + id="dx1-4185"> environment, despite all the associated drawbacks, you can restore this with docdef=true. Note that this doesn’t change the + id="dx1-4187">. Note that this doesn’t change the prohibitions that the glossaries package has in certain circumstances (for example, when using “option 1”). See the glossaries user manual for href="#styopt.docdef">docdef=restricted. Only use . Only use docdef=true if document definitions + id="dx1-4189"> if document definitions are necessary and one or more of the glossaries occurs in the front matter. -

This option affects commands that internally use

This option affects commands that internally use \newglossaryentry, such as \newabbreviation, but not the “on-the-fly” commands described in §8 +class="cmsy-10">§11 On-the-Fly Document Definitions.

nomissingglstext
This is a boolean option. If true, this will suppress the warning written to the transcript and the warning text that will appear in the document if the external glossary files haven’t been generated @@ -1963,21 +1983,26 @@ class="description">This is a boolean option. If true, this will suppress the abbreviations
This option has no value and can’t be cancelled. If used, it will automatically create a new glossary with the label abbreviations and redefines \glsxtrabbrvtype to this label. In addition, it defines a shortcut +class="cmtt-10">\glsxtrabbrvtype to this label. (The file extensions are glg-abr, + gls-abr and glo-abr.) In addition, this option defines a shortcut command -


\printabbreviations 


\printabbreviations[options]

-

+

which is equivalent to

]
If glossaries-extra-bib2gls is also loaded then this option will additionally + id="dx1-4196"> is also loaded then this option will additionally provide: -


\printunsrtabbreviations 


\printunsrtabbreviations[options] -

-

+class="cmtt-10">]


+

which uses \printunsrtglossary. -

The title of the new glossary is given by -


\abbreviationsname  . +

The title of the new glossary is given by +


\abbreviationsname

-

+

If this command is already defined, it’s left unchanged. Otherwise it’s defined to “Abbreviations” if babel hasn’t been loaded or hasn’t been loaded or \acronymname if babel has been loaded. However, if you’re using has been loaded. However, if you’re using babel it’s likely you + id="dx1-4202"> it’s likely you will need to change this. (See §13 §14 Multi-Lingual Support for further details.) -

If you don’t use the

If you don’t use the abbreviations package option, the package option, the \abbreviationsname command won’t be defined (unless it’s defined by an included language file).
-

-

If the

+

If the abbreviations option is used and the option is used and the acronym option provided by the + id="dx1-4205"> option provided by the glossaries package hasn’t been used, then \acronymtype will be set to + id="dx1-4206"> will be set to \glsxtrabbrvtype so that acronyms defined with so that acronyms defined with \newacronym can be added + id="dx1-4208"> can be added to the list of abbreviations. If you want acronyms in the main glossary and other abbreviations in the main:

\renewcommand*{\acronymtype}{main}
-

-

Note that there are no analogous options to the

+

Note that there are no analogous options to the glossaries package’s acronymlists + id="dx1-4209"> option (or associated commands) as the abbreviation mechanism is handled differently with glossaries-extra. @@ -2077,22 +2097,19 @@ class="cmss-10">glossaries-extra. symbols

This is passed to glossaries but will additionally define -


\glsxtrnewsymbol 


\glsxtrnewsymbol[options]{label}{symbol} -

-

+class="cmtt-10">}


+

which is equivalent to

}
Note that the sort key is set to the ⟨ key is set to the ⟨label⟩ not the ⟨symbol⟩ as the symbol will likely contain commands. -

If

If glossaries-extra-bib2gls is also loaded then this option will additionally + id="dx1-4213"> is also loaded then this option will additionally provide: -


\printunsrtsymbols 


\printunsrtsymbols[options]

-

+

which uses \printunsrtglossary. + id="dx1-4215">.

numbers
This is passed to glossaries but will additionally define -


\glsxtrnewnumber 


\glsxtrnewnumber[options]{number}

-

+

which is equivalent to

}
-

If

If glossaries-extra-bib2gls is also loaded then this option will additionally + id="dx1-4218"> is also loaded then this option will additionally provide: -


\printunsrtnumbers 


\printunsrtnumbers[options]

-

+

which uses \printunsrtglossary. + id="dx1-4220">.

acronyms (or acronym)
This is passed to glossaries but if glossaries-extra-bib2gls is + id="dx1-4223"> is also loaded then this option will additionally provide: -


\printunsrtacronyms 


\printunsrtacronyms[options]

-

+

which uses \printunsrtglossary. -

This option defines a new glossary with the label . +

This option defines a new glossary with the label acronym not acronyms. You may find it easier to reference it with the command \acronymtype. + id="dx1-4226">.
-

+

index
This is passed to glossaries but if glossaries-extra-bib2gls is also loaded then this + id="dx1-4228"> is also loaded then this option will additionally provide: -


\printunsrtindex 


\printunsrtindex[options]

-

+

which uses \printunsrtglossary. + id="dx1-4230">.

shortcuts
Unlike the glossaries package option of the same name, this option isn’t boolean but has multiple values: @@ -2252,11 +2259,11 @@ class="cmss-10">glossaries package option of the same name, this option i href="#styopt.shortcuts">shortcuts=acronyms (or (or shortcuts=acro): set the shortcuts provided + id="dx1-4233">): set the shortcuts provided by the glossaries package for acronyms (such as \ac). Note that the @@ -2272,13 +2279,13 @@ class="cmss-10">glossaries-extra href="#styopt.shortcuts">shortcuts=ac. + id="dx1-4234">.
  • shortcuts=ac: set the shortcuts provided by the : set the shortcuts provided by the glossaries package for acronyms (such as \ac) but uses the \gls. href="#styopt.shortcuts">shortcuts=abbreviations (or (or shortcuts=abbr): + id="dx1-4237">): set the abbreviation shortcuts provided by glossaries-extra. (See §3.3 +class="cmsy-10">§4.3 Shortcut Commands.) These settings don’t switch on the acronym shortcuts provided by the glossaries package. href="#styopt.shortcuts">shortcuts=other: set the “other” shortcut commands, but not the shortcut + id="dx1-4238">: set the “other” shortcut commands, but not the shortcut commands for abbreviations or the acronym shortcuts provided by glossaries. The “other” shortcuts are:
    • \newentry equivalent to equivalent to \newglossaryentry + id="dx1-4240">
    • \newsym equivalent to equivalent to \glsxtrnewsymbol (see the (see the symbols + id="dx1-4243"> option).
    • \newnum equivalent to equivalent to \glsxtrnewnumber (see the (see the numbers + id="dx1-4246"> option).
  • shortcuts=all (or (or shortcuts=true): implements ): implements shortcuts=ac, + id="dx1-4249">, shortcuts=abbreviations and and shortcuts=other. + id="dx1-4251">.
  • shortcuts=none (or (or shortcuts=false): don’t define any of the shortcut + id="dx1-4253">): don’t define any of the shortcut commands (default).
  • -

    Note that multiple invocations of the

    Note that multiple invocations of the shortcuts option option within the same option list will override each other.

    -

    After the

    After the glossaries-extra package has been loaded, you can set available options using -


    \glossariesextrasetup 


    \glossariesextrasetup{options}

    -

    +

    The abbreviations and and docdef options may only be used in the preamble. Additionally, + id="dx1-4257"> options may only be used in the preamble. Additionally, docdef can’t be used after can’t be used after \makenoidxglossaries. + id="dx1-4259">.

    -

    -

    +

    Top

    2. Modifications to Existing Commands and Styles

    -

    The +

    Top

    2.1 Defining Entries

    +

    The glossaries package provides \nopostdesc which may be used in the which may be used in the description -to suppress the post-description hook. The to +suppress the post-description hook. The glossaries-extra package provides another command -


    \glsxtrnopostpunc 


    \glsxtrnopostpunc

    -

    +

    which has a similar function but only suppresses the post-description punctuation. It doesn’t suppress the use of \glsxtrpostdescription which allows the use of @@ -2445,12 +2452,10 @@ class="cmtt-10">\glsxtrpostdescription not before.) The post-description hook can counter-act the effect of \glsxtrnopostpunc using -


    \glsxtrrestorepostpunc 


    \glsxtrrestorepostpunc

    -

    +

    These commands have no effect outside of the glossary (except with standalone entries that use \glsxtractivatenopost and §10.3 Standalone Entry Items). -

    The glossaries package provides -


    \glsseeitemformat  \glsseeitemformat{label}

    -

    -to format items in a cross-reference list (identified with the see key or \glssee). This -was originally defined to use \glsentryname{label} since it makes more sense for the -cross-reference to match the way the term appears in the glossary. Unfortunately this -caused a problem when the name field was sanitized, which used to be the default -setting, so glossaries v3.0 changed the default definition of this command to -use \glsentrytext instead. Since the name and text field are quite often -the same, this change usually doesn’t have a noticeable effect. However, -now that the name field is no longer sanitized (following the redesign of -glossaries v4.0) it makes more sense to restore this command to its original -behaviour, but to take account of abbreviations glossaries-extra redefines this -as: - - - -

    -
    -\renewcommand*{\glsseeitemformat}[1]{% - 
     \ifglshasshort{\glslabel}{\glsaccesstext{#1}}{\glsaccessname{#1}}% - 
    } -
    -

    If you want to restore the glossaries v3.0+ definition just do: - - - -

    -
    -\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} -
    -

    The glossaries-extra package provides \glsxtrhiername and its case-changing -variants that may be used within the definition of \glsseeitemformat if required. -These display the hierarchy for sub-entries rather than just the name, which may be -more helpful in cross-references. See §2.2 Cross-References (“see” and “see also”) for -further details. -

    The commands used by

    The commands used by glossaries to automatically produce an error if an entry is undefined (such as \glsdoifexists) are changed to take the ) are changed to take the undefaction option into + id="dx1-6006"> option into account. -

    The \newignoredglossary{type} command now (as from v1.11) has a starred -version that doesn’t automatically switch off the hyperlinks. This starred version may -be used with the targeturl attribute to create a link to an external URL. (See §5 -Categories for further details.) As from v1.12 both the starred and unstarred version -check that the glossary doesn’t already exist. (The glossaries package omits this -check.) -

    You can now provide an ignored glossary with: -


    \provideignoredglossary  \provideignoredglossary{type}

    -

    -which will only define the glossary if it doesn’t already exist. This also has a starred -version that doesn’t automatically switch off hyperlinks. -

    The individual glossary displaying commands \printglossary, \printnoidxglossary -and \printunsrtglossary have two extra keys: -

    -
      -
    • target. This is a boolean key which can be used to switch off the automatic - hypertarget for each entry. Unlike \glsdisablehyper this doesn’t switch - off hyperlinks, so any cross-references within the glossary won’t be affected. - This is a way of avoiding duplicate target warnings if a glossary needs to - be displayed multiple times. -
    • -
    • targetnameprefix={prefix}. Another way of avoiding duplicate target names - is to set a prefix used for the names. Unlike changing \glolinkprefix - this doesn’t affect any hyperlinks (such as those created with \gls). -
    • -
    • prefix={prefix}. If you do actually want to locally change \glolinkprefix, - you can use the prefix key instead. You need to use the matching prefix - key in commands like \gls. -
    • -
    • label={label}. Labels the glossary with \label{label} and also defines - - - - \@currentlabelname to the glossary’s TOC title (to provide text for - \nameref). You can also set the label before the glossary using: -


      \glsxtrsetglossarylabel  \glsxtrsetglossarylabel{label}

      -

      - but take care of duplicate labels if it’s not scoped.

    -

    The

    The \newglossaryentry command has three new keys:

    -

    The test file example-glossaries-xr.tex contains dummy entries with a mixture of -

    This apply to all entry defining commands (such as \newabbreviation). +

    The test file example-glossaries-xr.tex contains dummy entries with a +mixture of see, , alias and and seealso keys for use with minimal working examples. There are also + id="dx1-6013"> keys for use with minimal working examples. +There are also example-glossaries-*.bib files that correspond to each example-glossaries-*.bib files that correspond to each example-glossaries-*.tex -file for testing example-glossaries-*.tex file for testing bib2gls. -

    The

    The \longnewglossaryentry command now has a starred version (as from v1.12) that doesn’t automatically insert

    -
    +
    \leavevmode\unskip\nopostdesc
    -

    at the end of the description field. -


    \longnewglossaryentry 

    at the end of the description field. +


    \longnewglossaryentry*{label}{options} -{}{description}

    -

    +

    The descriptionplural key is left unset unless explicitly set in ⟨ key is left unset unless explicitly set in ⟨options⟩. -

    The unstarred version no longer hard-codes the above code (which removes +

    The unstarred version no longer hard-codes the above code (which removes trailing space and suppresses the post-description hook) but instead uses: -


    \glsxtrpostlongdescription 


    \glsxtrpostlongdescription

    -

    +

    This can be redefined to allow the post-description hook to work but retain the \unskip part if required. For example: @@ -2726,60 +2562,58 @@ class="cmtt-10">\unskip part if required. For example:

    -
    +
    \renewcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip}
    -

    This will discarded unwanted trailing space at the end of the description but won’t +

    This will discarded unwanted trailing space at the end of the description but won’t suppress the post-description hook. -

    The unstarred version also alters the base

    The unstarred version also alters the base glossaries package’s treatment of the + id="dx1-6018"> package’s treatment of the descriptionplural key. Since a plural description doesn’t make much sense for + id="dx1-6019"> key. Since a plural description doesn’t make much sense for multi-paragraph descriptions, the default behaviour with glossaries-extra’s + id="dx1-6020">’s \longnewglossaryentry is to simply leave the plural description unset unless explicitly set using the descriptionplural key. The key. The glossaries.sty version of this command sets the description’s plural form to the same as the singular.2.1 -

    Note that this modified unstarred version doesn’t append +

    Note that this modified unstarred version doesn’t append \glsxtrpostlongdescription to the description’s plural form. -

    The

    The \newterm command (defined through the command (defined through the index package option) is modified + id="dx1-6029"> package option) is modified so that the category defaults to index. The . The \newacronym command is modified + id="dx1-6031"> command is modified to use the new abbreviation interface provided by glossaries-extra. (See §3 +class="cmsy-10">§4 Abbreviations.) -

    The

    The \makeglossaries command now has an optional argument. -


    \makeglossaries 


    \makeglossaries[list]

    -

    +

    If ⟨list⟩ is empty, \makeglossaries behaves as per its original definition in the @@ -2787,44 +2621,44 @@ class="cmtt-10">\makeglossaries behaves as per its original definition in class="cmss-10">glossaries package, otherwise ⟨list⟩ can be a comma-separated list of glossaries that need processing with an external indexing application. -

    This command is not permitted with the

    This command is not permitted with the record=only package option. Without + id="dx1-6033"> package option. Without the optional argument, it’s permitted with record=alsoindex. With the optional + id="dx1-6034">. With the optional argument, it’s only permitted with the default record=off. -

    It should then be possible to use . +

    It should then be possible to use \printglossary for those glossaries listed in ⟨list⟩ and \printnoidxglossary for the other glossaries. (See the accompanying file sample-mixedsort.tex for an example.) -

    If you use the optional argument ⟨

    If you use the optional argument ⟨list⟩, you can’t define entries in the document (even with the docdef option).
    -

    -

    You will need at least version 2.20 of option).

    +

    +

    You will need at least version 2.20 of makeglossaries or at least version 1.3 of the Lua alternative makeglossaries-lite (both distributed with (both distributed with glossaries v4.27) to allow for this use of \makeglossaries[list]. Alternatively, use the automake + id="dx1-6040"> option. +

    -

    Top

    2.1 Entry Indexing

    -

    As from version 1.31, there is a new command like \glsadd where the mandatory -argument is a comma-separated list of labels: -


    \glsaddeach 

    Top

    2.2 Entry Indexing

    +

    As from version 1.31, there is a new command like \glsadd where the mandatory +argument is a comma-separated list of labels: +


    \glsaddeach[options]{list}

    -

    +

    This simply iterates over ⟨list⟩ and does \glsadd[]{label} for each entry in the list. -

    As from version 1.37, you can make commands like

    As from version 1.37, you can make commands like \gls or \glslink automatically use } in the optional argument of the corresponding \gls, \glslink etc). -


    \GlsXtrAutoAddOnFormat 


    \GlsXtrAutoAddOnFormat[label]{format list} -{}{glsadd options}

    -

    +class="cmtt-10">} +


    +

    The optional argument ⟨label⟩ defaults to \glslabel and indicates the label to use in @@ -2902,51 +2732,51 @@ class="cmtt-10">format={⟨format} prepended to the list. -

    For example, with: +

    For example, with:

    -
    +
    \GlsXtrAutoAddOnFormat{hyperbf}{counter=chapter}
    -

    then

    then \gls[format=hyperbf]{sample} will be equivalent to

    -
    +
    \glsadd[format=hyperbf,counter=chapter]{sample}\gls[format=hyperbf]{sample}
    -

    Note that the explicit range markers will prevent a match unless you include +

    Note that the explicit range markers will prevent a match unless you include them in ⟨format list⟩ (in which case, be sure to add both the start and end formats). -

    Here’s another example: +

    Here’s another example:

    -
    +
    \GlsXtrAutoAddOnFormat[dual.\glslabel]{hyperbf}{}
    -

    In this case

    In this case \gls[format=hyperbf]{sample} will now be equivalent to:

    -
    +
    \glsadd[format=hyperbf]{dual.sample}\gls[format=hyperbf]{sample}
    -

    -

    +

    \GlsXtrAutoAddOnFormat is not applied to \glsadd as it could cause an infinite loop.
    -

    -The

    +

    The glossaries-extra package provides extra keys for commands like \gls and \glstext:

    noindex
    This is a boolean key. If true, this suppresses the indexing. (That is, it prevents \gls or whatever from adding a line to the external glossary file.) This is more useful than the indexonlyfirst package option provided + id="dx1-7004"> package option provided by glossaries, as the first use might not be the most pertinent use. (If you want to apply indexonlyfirst to selected entries, rather than all of them, you + id="dx1-7006"> to selected entries, rather than all of them, you can use the indexonlyfirst attribute, see attribute, see §5 §6 Categories for further details.) Note that the noindex key isn’t available for key isn’t available for \glsadd (and (and \glsaddall) + id="dx1-7010">) since the whole purpose of that command is to index an entry.
    wrgloss
    (New to v1.14.) This is may only take the values before or after. By @@ -3005,20 +2835,18 @@ class="cmtt-10">wrgloss=after for specific instances. Note that this opti doesn’t have an effect if the indexing has been suppressed through other settings (such as noindex). -

    The default value is set up using -


    \glsxtrinitwrgloss  ). +

    The default value is set up using +


    \glsxtrinitwrgloss

    -

    +

    which is defined as:

    -
    +
    \newcommand*{\glsxtrinitwrgloss}{%  
     \glsifattribute{\glslabel}{wrgloss}{after}%  
     {% @@ -3029,31 +2857,29 @@ class="cmtt-10">\glsxtrinitwrgloss

     
     }%  
    }
    -

    This sets the conditional -


    \ifglsxtrinitwrglossbefore  \ifglsxtrinitwrgloss

    -

    +

    This sets the conditional +


    \ifglsxtrinitwrgloss

    +

    which is used to determine where to perform the indexing. -

    This means you can set the

    This means you can set the wrgloss attribute to attribute to after to automatically use this as the default for entries with that category attribute. (Note that adding wrgloss to the default options in to the default options in \GlsXtrSetDefaultGlsOpts will override + id="dx1-7017"> will override \glsxtrinitwrgloss.)

    hyperoutside
    (New to v1.21.) This is a boolean key. The default is hyperoutside=true, which puts the hyperlink outside }
    You can use the hyperoutside category attribute to set the default for a + id="dx1-7019"> category attribute to set the default for a given category. This can be combined with the use of the textformat + id="dx1-7020"> attribute to counteract any interference caused by \hyperlink. For example: -
    +
    \glssetcategoryattribute{mathrelation}{hyperoutside}{false}
    -

    will set

    will set hyperoutside=false for all entries that are assigned to the category mathrelation and @@ -3116,10 +2942,10 @@ class="cmtt-10">mathrelation and

    -
    +
    \glssetcategoryattribute{mathrelation}{textformat}{mathrel}
    -

    will use

    will use \mathrel instead of \glstextformat resulting in:

    @@ -3136,164 +2962,270 @@ class="cmsy-10">}
    for entries with the category key set to key set to mathrelation.
    textformat
    This key must have a control sequence name as its value. The command formed from this name must exist and must take one argument. (Use relax for default behaviour.) If set, this overrides the textformat + id="dx1-7023"> attribute and \glstextformat. See the soul example in example in §2.5 §2.6 First Use Flag.
    prefix
    Locally redefines \glolinkprefix to the given value. It should match the + id="dx1-7026"> to the given value. It should match the prefix for the desired glossary.
    thevalue
    Explicitly set the location to this value (see below).
    theHvalue
    Set the corresponding hyperlink location (see below).
    -

    There is a new hook that’s used each time indexing information is written to the -external glossary files: -


    \glsxtrdowrglossaryhook  \glsxtrdowrglossaryhook{label

    You can set the default options used by \glslink, \gls etc with: +


    \GlsXtrSetDefaultGlsOpts{options}

    -

    -where ⟨label⟩ is the entry’s label. This does nothing by default but may be redefined. -(See, for example, the accompanying sample file sample-indexhook.tex, which uses -this hook to determine which entries haven’t been indexed.) -

    There’s also a new hook (from v1.26) that’s used immediately before the options -are set by the \gls-like and \glstext-like commands: -


    \glslinkpresetkeys  \glslinkpresetkeys

    -

    -(The base package provides \glslinkpostsetkeys that’s used immediately after the -options are set.) +

    +For example, if you mostly don’t want to index entries then you can do: + + + +

    +
    +\GlsXtrSetDefaultGlsOpts{noindex} +
    +

    and then use, for example, \gls[noindex=false]{sample} when you actually want +the location added to the number list. These defaults may be overridden by other +settings (such as category attributes) in addition to any settings passed in the option +argument of commands like \glslink and \gls. +

    Note that if you don’t want any indexing, just omit \makeglossaries and +\printglossaries (or analogous commands). If you want to adjust the +default for wrgloss, it’s better to do this by redefining \glsxtrinitwrgloss +instead. +

    \GlsXtrSetDefaultGlsOpts doesn’t affect \glsadd.
    +

    +

    If you want to change the default value of format, you can instead use: +


    \GlsXtrSetDefaultNumberFormat{format}

    +

    +This has the advantage of also working for \glsadd. For example, if you +want all locations in the back matter to appear in italic (unless explicitly +overridden): + + + +

    +
    +\backmatter + 
    \GlsXtrSetDefaultNumberFormat{hyperit} +
    +

    +

    Commands like \gls have star (*) and plus (+) modifiers as a short cut for +hyper=false and hyper=true. The glossaries-extra package provides a way to add a +third modifier, if required, using +


    \GlsXtrSetAltModifier{char}{options}

    +

    +where ⟨char⟩ is the character used as the modifier and ⟨options⟩ is the default set of +options (which may be overridden). Note that ⟨char⟩ must be a single character (not a +UTF-8 character, unless you are using XƎLATEX or LuaLATEX). +

    When choosing the character ⟨char⟩ take care of any changes in category code. +
    +

    +

    Example: + + + +

    +
    +\GlsXtrSetAltModifier{!}{noindex} +
    +

    This means that \gls!{sample} will be equivalent to \gls[noindex]{sample}. It’s +not possible to mix modifiers. For example, if you want to do -

    As from version 1.30 there are also similar hooks for +

    +\gls[noindex,hyper=false]{sample} +
    +

    you can use \gls*[noindex]{sample} or \gls![hyper=false]{sample} but you +can’t combine the * and ! modifiers. +

    There is a new hook that’s used each time indexing information is written to the +external glossary files: +


    \glsxtrdowrglossaryhook{label}

    +

    +where ⟨label⟩ is the entry’s label. This does nothing by default but may be redefined. +(See, for example, the accompanying sample file sample-indexhook.tex, which uses +this hook to determine which entries haven’t been indexed.) +

    There’s also a new hook (from v1.26) that’s used immediately before the options +are set by the \gls-like and \glstext-like commands: +


    \glslinkpresetkeys

    +

    +(The base package provides \glslinkpostsetkeys that’s used immediately after the +options are set.) +

    As from version 1.30 there are also similar hooks for \glsadd: -


    \glsaddpresetkeys 


    \glsaddpresetkeys

    -

    +

    and -


    \glsaddpostsetkeys 


    \glsaddpostsetkeys

    -

    +

    For example, to default to using the equation counter in maths mode: + id="dx1-7043"> counter in maths mode:

    -
    +
    \renewcommand{\glslinkpresetkeys}{%  
     \ifmmode \setkeys{glslink}{counter=equation}\fi}  
    \renewcommand{\glsaddpresetkeys}{%  
     \ifmmode \setkeys{glossadd}{counter=equation}\fi}
    -

    In this case, the counter can be overridden with an explicit use of

    In this case, the counter can be overridden with an explicit use of counter in the + id="dx1-7044"> in the optional argument of \gls or \glsadd. (As from version 1.37, a simpler method is to just use the equations package option.) -

    Alternatively, to enforce this (overriding the option argument): + id="dx1-7045"> package option.) +

    Alternatively, to enforce this (overriding the option argument):

    -
    +
    \renewcommand{\glslinkpostsetkeys}{%  
     \ifmmode \setkeys{glslink}{counter=equation}\fi}  
    \renewcommand{\glsaddpostsetkeys}{%  
     \ifmmode \setkeys{glossadd}{counter=equation}\fi}
    -

    -

    As from version 1.14, there are two new keys for

    +

    As from version 1.14, there are two new keys for \glsadd: thevalue and and theHvalue. + id="dx1-7047">. These keys are designed for manually adding explicit locations rather than obtaining the value from the associated counter. As from version 1.19, these two keys are also available for commands like \gls and \glslink. The thevalue keys is intended + id="dx1-7048"> keys is intended primarily for adding locations in supplementary material that can’t be obtained from a counter. -

    The principle key

    The principle key thevalue is for the location value. The other key is for the location value. The other key theHvalue can + id="dx1-7050"> can be used to extract a prefix value for the first argument of commands like \glsnoidxdisplayloc. Its value must be in the format ⟨. Its value must be in the format ⟨prefix⟩⟨location⟩. In general, there’s little need for this key as the prefix is typically associated with a counter that can be used to form hypertargets. -

    If you use

    If you use thevalue, you must make sure that you use an indexing application + id="dx1-7052">, you must make sure that you use an indexing application that will accept the given value.
    -

    -

    For example,

    +

    For example, makeindex will only accept locations in the form [⟨ will only accept locations in the form [⟨num⟩⟨sep⟩]*⟨num⟩ @@ -3306,37 +3238,37 @@ instances of a number followed by the recognised separator character (set with \glsSetCompositor). This means that makeindex won’t accept, for + id="dx1-7054"> won’t accept, for example,

    -
    +
    \glsadd[thevalue={Supplementary Material}]{sample}
    -

    This location value will be accepted by

    This location value will be accepted by bib2gls, since it will allow any location and will only try forming ranges if the location matches any of its numerical patterns. In the case of xindy, you’ll need to add a rule that can match the value. + id="dx1-7056">, you’ll need to add a rule that can match the value. If you’re using hyperref, you may need to use the , you may need to use the format key to prevent a + id="dx1-7058"> key to prevent a hyperlink if one can’t naturally be formed from the prefix, counter and location value. -

    For example, suppose the file

    For example, suppose the file suppl.tex contains:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \newglossaryentry{sample}{name={sample},description={an example}} @@ -3347,17 +3279,17 @@ class="cmtt-10">suppl.tex contains:  
    \gls{sample}.  
    \end{document}
    -

    This has an entry on page S.2. Suppose another document wants to include this +

    This has an entry on page S.2. Suppose another document wants to include this location in the glossary. Then this can be done by setting thevalue to to S.2. For example:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \makeglossaries @@ -3368,59 +3300,59 @@ example:  
    \glsadd[thevalue={S.2}]{sample}  
    \end{document}
    -

    This location value will be accepted by

    This location value will be accepted by makeindex as it’s in the form ⟨ as it’s in the form ⟨num⟩⟨sep⟩⟨num⟩. -

    If you want hyperlinks, things are more complicated. First you need to set the +

    If you want hyperlinks, things are more complicated. First you need to set the externallocation attribute to the location of the PDF file. For example: + id="dx1-7061"> attribute to the location of the PDF file. For example:

    -
    +
    \glssetcategoryattribute{supplemental}{externallocation}{suppl.pdf}  
    \newglossaryentry{sample}{category=supplemental,  
     name={sample},description={an example}}
    -

    Next you need to add

    Next you need to add glsxtrsupphypernumber as the format:

    -
    +
    \glsadd[thevalue={S.2},format=glsxtrsupphypernumber]{sample}
    -

    Both documents will need to use the

    Both documents will need to use the hyperref package. Remember that the counter + id="dx1-7062"> package. Remember that the counter used for the location also needs to match. If \theHcounter⟩ is defined in the other document and doesn’t match in the referencing document, then you need to use theHvalue to set the appropriate value. See the accompanying sample files + id="dx1-7063"> to set the appropriate value. See the accompanying sample files sample-suppl-hyp.tex and sample-suppl-main-hyp.tex for an example that uses hyperref. -

    The hyperlink for the supplementary location may or . +

    The hyperlink for the supplementary location may or may not take you to the relevant place in the external PDF file depending on your PDF viewer. Some may not support external links, and some may take you to the first page or last visited page.
    -

    -

    For example, if both

    +

    For example, if both sample-suppl-hyp.pdf and sample-suppl-main-hyp.pdf are in the same directory, then viewing sample-suppl-main-hyp.pdf in Evince will take you to the correct location in the linked document (when you click on the S.2 external link), but Okular will take you to the top of the first page of the linked document. -

    This method can only be used where there is one external source for the +

    This method can only be used where there is one external source for the designated category (identified by the externallocation attribute). For multiple + id="dx1-7065"> attribute). For multiple sources, you need to use bib2gls version 1.7+, which is the better method in general as it can automatically fetch the relevant locations from the .aux files of the designated external documents without the need to explicitly use \glsadd. -

    +

    -

    Top

    2.2

    Top

    2.3 Cross-References (“see” and “see also”)

    -

    The value of the

    The value of the see key is now saved as a field. This isn’t the case with key is now saved as a field. This isn’t the case with glossaries, where the see value is simply used to directly write a line to the corresponding + id="dx1-8002"> value is simply used to directly write a line to the corresponding glossary file and is then discarded. This is why the see key can’t be used + id="dx1-8003"> key can’t be used before \makeglossaries (since the file hasn’t been opened yet). It’s also the + id="dx1-8004"> (since the file hasn’t been opened yet). It’s also the reason why the see key doesn’t have any effect when used in entries that + id="dx1-8005"> key doesn’t have any effect when used in entries that are defined in the document environment. Since the value isn’t saved, it’s + id="dx1-8006"> environment. Since the value isn’t saved, it’s not available when the .glsdefs file is created at the end of the document and so isn’t available at the start of the document environment on the next + id="dx1-8008"> environment on the next run. -

    This modification allows

    This modification allows glossaries-extra to provide -


    \glsxtraddallcrossrefs 


    \glsxtraddallcrossrefs

    -

    +

    which is used at the end of the document to automatically add any unused cross-references unless the package option indexcrossrefs was set to false. -

    As a by-product of this enhancement, the was set to false. +

    As a by-product of this enhancement, the see key will now work for entries + id="dx1-8012"> key will now work for entries defined in the document environment, but it’s still best to define entries in the + id="dx1-8013"> environment, but it’s still best to define entries in the preamble, and the see key still can’t perform any indexing before the file has been + id="dx1-8015"> key still can’t perform any indexing before the file has been opened by \makeglossaries. Note that glossaries v4.24 introduced the seenoindex + id="dx1-8016"> package option, which can be used to suppress the error when the see key + id="dx1-8017"> key is used before \makeglossaries, so seenoindex=ignore will allow the will allow the see + id="dx1-8019"> value to be stored even though it may not be possible to index it at that point. -

    As from version 1.06, you can display the cross-referenced information for a given +

    As from version 1.06, you can display the cross-referenced information for a given entry using -


    \glsxtrusesee 


    \glsxtrusesee{label}

    -

    +

    This internally uses -


    \glsxtruseseeformat 


    \glsxtruseseeformat{tag}{xr list}

    -

    +

    where ⟨tag⟩ and ⟨xr list⟩ are obtained from the value of the entry’s see field (if + id="dx1-8022"> field (if non-empty). By default, this just does \glsseeformat[tagxr list}{}, which is how the cross-reference is displayed in the number list. Note that \glsxtrusesee does nothing if the see field hasn’t been set for the entry given by + id="dx1-8024"> field hasn’t been set for the entry given by ⟨label⟩. -

    As with the base

    As with the base glossaries package, package, \glsseeformat is defined to do \emph{tagxr list}. The third argument is always ignored and is present for makeindex, which always requires a final argument to encapsulate the associated + id="dx1-8026">, which always requires a final argument to encapsulate the associated location. The command -



    \glsseelist{xr list}

    -

    +

    used to iterate over the list of cross-reference labels is also unchanged from the base glossaries package, with each item in the list formatted according + id="dx1-8028"> package, with each item in the list formatted according to: -



    \glsseeitem{label}

    -

    +

    This is defined by the glossaries package to:

    + id="dx1-8030"> package to:

    \glshyperlink[\glsseeitemformat{}
    So the actual formatting for each cross-referenced entry is performed by \glsseeitemformat, which is redefined by , which is redefined by glossaries-extra, as described in , as described in §2 Modifications to Existing Commands and Styles. This now displays the value of the text field for abbreviations and the value of the field for abbreviations and the value of the name field otherwise. There’s no + id="dx1-8034"> field otherwise. There’s no indication of the entry hierarchy, which could confuse the reader. Therefore, as from glossaries-extra v1.37, there are some new commands that include the hierarchical + id="dx1-8035"> v1.37, there are some new commands that include the hierarchical information. You may prefer to redefine \glsseeitemformat to use one of this if you have sub-entries. For example: -
    +
    \renewcommand*{\glsseeitemformat}[1]{\glsxtrhiername{#1}}
    -

    -

    The command: -


    \glsxtrhiername 

    +

    The glossaries package provides +


    \glsseeitemformat{label}

    +

    +to format items in a cross-reference list (identified with the see key or \glssee). This +was originally defined to use \glsentryname{label} since it makes more sense for the +cross-reference to match the way the term appears in the glossary. Unfortunately this +caused a problem when the name field was sanitized, which used to be the default +setting, so glossaries v3.0 changed the default definition of this command to +use \glsentrytext instead. Since the name and text field are quite often +the same, this change usually doesn’t have a noticeable effect. However, +now that the name field is no longer sanitized (following the redesign of +glossaries v4.0) it makes more sense to restore this command to its original +behaviour, but to take account of abbreviations glossaries-extra redefines this +as: + + + +

    +
    +\renewcommand*{\glsseeitemformat}[1]{% + 
     \ifglshasshort{\glslabel}{\glsfmttext{#1}}{\glsfmtname{#1}}% + 
    } +
    +

    (Note that as from glossaries-extra version 1.42, this now uses \glsfmttext and +\glsfmtname instead of just referencing the text and name fields. This helps to ensure +that any formatting is correctly applied.) +

    If you want to restore the glossaries v3.0+ definition just do: + + + +

    +
    +\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} +
    +

    +

    The glossaries-extra package provides \glsxtrhiername and its case-changing +variants that may be used within the definition of \glsseeitemformat if required. +These display the hierarchy for sub-entries rather than just the name, which may be +more helpful in cross-references. +


    \glsxtrhiername{label}

    -

    +

    performs a recursive action:

    1. If the entry given by ⟨If the entry given by ⟨label⟩ has a parent, then \glsxtrhiername{parent @@ -3660,92 +3658,82 @@ class="cmtt-10">} is done followed by \glsxtrhiernamesep then:
    2. If the entry given by ⟨If the entry given by ⟨label⟩ is an abbreviation (that is, it has the short field + id="dx1-8051"> field set) then the short form is displayed (using \glsaccessshort) otherwise - the name is displayed (using \glsaccessname).
    -

    The first step above is skipped if the entry doesn’t have a parent. Each level is separated +class="cmtt-10">\glsfmtshort) otherwise the + name is displayed (using \glsfmtname). +

    The first step above is skipped if the entry doesn’t have a parent. Each level is separated by: -


    \glsxtrhiernamesep 


    \glsxtrhiernamesep

    -

    +

    which defaults to “ ”. This can be redefined as appropriate. -

    There are some case-changing variants: -


    \Glsxtrhiername 

    There are some case-changing variants: +


    \Glsxtrhiername{label}

    -

    +

    The top-level has the first letter changed to upper case (either \Glsaccessshort or +class="cmtt-10">\Glsfmtshort or \Glsaccessname). There’s no case-change for sub-entries. -


    \GlsXtrhiername  \Glsfmtname). There’s no case-change for sub-entries. +


    \GlsXtrhiername{label}

    -

    +

    All levels have the first letter changed to upper case (either \Glsaccessshort or +class="cmtt-10">\Glsfmtshort or \Glsaccessname). -


    \GLSxtrhiername  \Glsfmtname). +


    \GLSxtrhiername{label}

    -

    +

    The top-level is converted to upper case (either \GLSaccessshort or \GLSaccessname). +class="cmtt-10">\GLSfmtshort or \GLSfmtname). There’s no case-change for sub-entries. -


    \GLSXTRhiername 


    \GLSXTRhiername{label}

    -

    +

    All levels are converted to upper case (either \GLSaccessshort or \GLSaccessname). -

    Suppose you want to suppress the number list using \GLSfmtshort or \GLSfmtname). + + + +

    Suppose you want to suppress the number list using nonumberlist. This + id="dx1-8058">. This will automatically prevent the cross-references from being displayed. The seeautonumberlist package option will automatically enable the number list for entries + id="dx1-8059"> package option will automatically enable the number list for entries that have the see key set, but this will also show the rest of the number + id="dx1-8061"> key set, but this will also show the rest of the number list. - - - -

    Another approach in this situation is to use the post description hook +

    Another approach in this situation is to use the post description hook with \glsxtrusesee to append the cross-reference after the description. For example: @@ -3753,22 +3741,22 @@ example:

    -
    +
    \renewcommand*{\glsxtrpostdescgeneral}{%  
     \ifglshasfield{see}{\glscurrententrylabel}  
     {, \glsxtrusesee{\glscurrententrylabel}}%  
     {}%  
    }
    -

    Now the cross-references can appear even though the

    Now the cross-references can appear even though the number list has been suppressed. -

    As from v1.16, there’s a separate

    As from v1.16, there’s a separate seealso key. Unlike key. Unlike see, this doesn’t have an + id="dx1-8065">, this doesn’t have an optional part for the textual tag. The syntax seealso={xr-labelsxr-labels} but the information is stored in a separate field. If you need a different tag, use the see key + id="dx1-8066"> key instead (or redefine \seealsoname or \glsxtruseseealsoformat, described below). -

    You can display the formatted list of cross-references stored in the

    You can display the formatted list of cross-references stored in the seealso key + id="dx1-8067"> key using: -


    \glsxtruseseealso 


    \glsxtruseseealso{label}

    -

    +

    This works in much the same way as \glsxtrusesee but it internally uses -


    \glsxtruseseeformat 


    \glsxtruseseealsoformat{xr list}

    -

    +

    For example:

    -
    +
    \renewcommand*{\glsxtrpostdescgeneral}{%  
     \ifglshasfield{see}{\glscurrententrylabel}  
     {, \glsxtrusesee{\glscurrententrylabel}}% @@ -3821,27 +3805,38 @@ For example:  
     {}%  
    }
    -

    -

    The actual unformatted comma-separated list ⟨

    +

    The alias key only contains a single label not a list, but if you want to ensure +consistent formatting with \glsxtrusesee and \glsxtruseseealso you can use +(from v1.42): +


    \glsxtrusealias{label}

    +

    +

    The actual unformatted comma-separated list ⟨xr-list⟩ stored in the seealso field + id="dx1-8072"> field can be accessed with: -


    \glsxtrseealsolabels 


    \glsxtrseealsolabels{label}

    -

    +

    This will just expand to the ⟨xr-labels⟩ provided in the value of the seealso key. There’s + id="dx1-8074"> key. There’s no corresponding command to access the see field. If you really need to access it, you + id="dx1-8075"> field. If you really need to access it, you can use commands like \glsxtrfielduse, but remember that it may start with [tag], so it can’t be automatically treated as a simple comma-separated list. -

    As mentioned above, the base

    As mentioned above, the base glossaries package provides \glsseelist, which + id="dx1-8076">, which requires a comma-separated list of labels as the argument. The argument isn’t fully expanded, so it’s not suitable to use, for example, \glsxtrseealsolabels{label} as the argument. For convenience, glossaries-extra provides -


    \glsxtrseelist 


    \glsxtrseelist{xr list}

    -

    +

    which fully expands its argument and passes it to \glsseelist. -

    The

    The seealso key implements the automatic indexing using -


    \glsxtrindexseealso  key implements the automatic indexing using +


    \glsxtrindexseealso{label}{xr list}

    -

    +

    which just does

    }{xr list} + + +
    unless the xindy option is used with option is used with glossaries v4.30+, in which case a distinct + id="dx1-8081"> v4.30+, in which case a distinct seealso cross-reference class is used instead. -

    +

    The command that produces this “see also” text is +


    \seealsoname

    +

    +If \alsoname (provided by language packages) is defined then \seealsoname will +simply be defined to \alsoname otherwise it will be defined to see also. +

    The language-sensitive \alsoname is used by general indexing packages, such as +makeidx, so if you redefine \alsoname the change will apply to normal indexes as well +as glossaries. If you only want to change the text produced by the seealso key +without affecting general indexing (with \index) then redefine \seealsoname +instead. +

    - - - -

    Top

    2.3

    Top

    2.4 Entry Display Style Modifications

    -

    Recall from the

    Recall from the glossaries package that commands such as \gls display text at that point in the document (optionally with a hyperlink to the relevant line in the glossary). This text is referred to as the “link-text” regardless of whether or not it actually has a hyperlink. The actual text and the way it’s displayed depends on the command used (such as \gls) and the entry format. -

    The default entry format (

    The default entry format (\glsentryfmt) used in the link-text by commands like + id="dx1-9002">) used in the link-text by commands like \gls, , \glsxtrfull, , \glsxtrshort and and \glsxtrlong (but not commands like + id="dx1-9007"> (but not commands like \glslink, , \glsfirst and and \glstext) is changed by glossaries-extra to test for regular entries, which are determined as follows: @@ -3947,78 +3962,79 @@ entries, which are determined as follows:

  • If an entry is assigned to a category that has the regular attribute set (see attribute set (see §5 +class="cmsy-10">§6 Categories), the entry is considered a regular entry, even if it has a value for the short key. In this case key. In this case \glsentryfmt uses \glsgenentryfmt + id="dx1-9012"> (provided by glossaries), which uses the first (or (or firstplural) value on ) value on first use and the text (or (or plural) value on subsequent use. + id="dx1-9017">) value on subsequent use.
  • An entry that doesn’t have a value for the short key is assumed to + id="dx1-9018"> key is assumed to be a regular entry, even if the regular attribute isn’t set to “true” + id="dx1-9019"> attribute isn’t set to “true” (since it can’t be an abbreviation without the short form). In this case \glsentryfmt uses \glsgenentryfmt. + id="dx1-9020">.
  • If an entry does has a value for the short key and hasn’t been marked as + id="dx1-9021"> key and hasn’t been marked as a regular entry through the regular attribute, it’s not considered a regular + id="dx1-9022"> attribute, it’s not considered a regular + + + entry. In this case \glsentryfmt uses \glsxtrgenabbrvfmt (defined by + id="dx1-9023"> (defined by glossaries-extra) which is governed by the abbreviation style (see §3.2 +class="cmsy-10">§4.2 Abbreviation Styles).
  • -

    This means that entries with a short form can be treated as regular entries rather +

    This means that entries with a short form can be treated as regular entries rather than abbreviations if it’s more appropriate for the desired style. -

    As from version 1.04,

    As from version 1.04, \glsentryfmt now puts now puts \glsgenentry in the argument of + id="dx1-9025"> in the argument of the new command -


    \glsxtrregularfont 


    \glsxtrregularfont{text}

    -

    +

    This just does its argument ⟨text⟩ by default. This means that if you want regular entries in a different font but don’t want that font to apply to abbreviations, then @@ -4026,115 +4042,103 @@ you can redefine \glsxtrregularfont. This is more precise than changing \glstextformat which is applied to all linking commands for all entries, unless + id="dx1-9027"> which is applied to all linking commands for all entries, unless overridden by the textformat attribute. -

    For example: + id="dx1-9028"> attribute. +

    For example:

    -
    +
    \renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}}
    -

    You can access the label through

    You can access the label through \glslabel. For example, you can query the category:

    -
    +
    \renewcommand*{\glsxtrregularfont}[1]{%  
     \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}}
    -

    or query the category attribute, for example, provide a custom attribute called +

    or query the category attribute, for example, provide a custom attribute called font:

    -
    +
    \glssetcategoryattribute{general}{font}{sf}  
    \renewcommand*{\glsxtrregularfont}[1]{%  
     \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}}
    -

    As from version 1.21, it’s simpler to just do, for example: +

    As from version 1.21, it’s simpler to just do, for example:

    -
    +
    \glssetcategoryattribute{general}{textformat}{textsf}
    -

    without redefining

    without redefining \glsxtrregularfont. -

    As from version 1.30, there is also a command for abbreviations that encapsulates +

    As from version 1.30, there is also a command for abbreviations that encapsulates \glsxtrgenabbrvfmt: -


    \glsxtrabbreviationfont 


    \glsxtrabbreviationfont{text}

    -

    +

    This also just does its argument by default. Font changes made by abbreviation styles are within ⟨text⟩. -

    The

    The \glspostlinkhook provided by the glossaries package to insert information after the link-text produced by commands like \gls and \glstext is redefined to -


    \glsxtrpostlinkhook 


    \glsxtrpostlinkhook

    -

    +

    This command will discard a following full stop (period) if the discardperiod attribute + id="dx1-9032"> attribute is set to “true” for the current entry’s category. It will also do -


    \glsxtrpostlink 


    \glsxtrpostlink

    -

    +

    if a full stop hasn’t be discarded and -


    \glsxtrpostlinkendsentence 


    \glsxtrpostlinkendsentence

    -

    +

    if a full stop has been discarded. -

    It may be that you want to check some other setting (rather than a category +

    It may be that you want to check some other setting (rather than a category attribute) to determine whether or not to discard a following full stop. In which case you can redefine: -


    \glsxtrifcustomdiscardperiod 


    \glsxtrifcustomdiscardperiod{true} -{}{false}

    -

    +

    You can access the field’s label using \glslabel. This command should do ⟨true⟩ if the @@ -4145,12 +4149,12 @@ definition is simply:

    -
    +
    \newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2}
    -

    which means that no additional checks are performed. (Only the recognised category +

    which means that no additional checks are performed. (Only the recognised category attributes will be checked.) -

    Avoid the use of

    Avoid the use of \gls-like and \glstext-like commands within the post-link hook as they will cause interference. Consider using commands like @@ -4159,45 +4163,43 @@ class="cmtt-10">\glsentrytext, \glsaccesstext or \glsxtrp (§2.7 §2.8 Nested Links) instead.
    -

    -

    By default

    +

    By default \glsxtrpostlink just does \glsxtrpostlinkcategory if + id="dx1-9036"> if it exists, where ⟨category⟩ is the category label for the current entry. (For example, for the general category, category, \glsxtrpostlinkgeneral if it has been defined.) -

    You can define the post-link hook command using

    You can define the post-link hook command using \newcommand, for example:

    -
    +
    \newcommand*{\glsxtrpostlinkgeneral}{%  
     \glsxtrpostlinkAddDescOnFirstUse  
    }
    -

    or, as from v1.31, you can use -


    \glsdefpostlink 

    or, as from v1.31, you can use +


    \glsdefpostlink{category}{definition}

    -

    +

    This is simply a shortcut for:

    definition}
    Note that it doesn’t check if the command has already been defined. -

    The sentence-ending hook is slightly more complicated. If the command +

    The sentence-ending hook is slightly more complicated. If the command \glsxtrpostlinkcategory is defined the hook will do that and then insert a + id="dx1-9039"> is defined the hook will do that and then insert a full stop with the space factor adjusted to match the end of sentence. If \glsxtrpostlinkcategory hasn’t been defined, the space factor is adjusted to match + id="dx1-9040"> hasn’t been defined, the space factor is adjusted to match the end of sentence. This means that if you have, for example, an entry that ends with a full stop, a redundant following full stop will be discarded and the space factor adjusted (in case the entry is in uppercase) unless the entry is followed by additional material, in which case the following full stop is no longer redundant and needs to be reinserted. -

    There are some convenient commands you might want to use when customizing +

    There are some convenient commands you might want to use when customizing the post-link-text category hooks: -


    \glsxtrpostlinkAddDescOnFirstUse  \glsxtrpostlinkAddDescOnFirstUse -

    -

    +


    \glsxtrpostlinkAddDescOnFirstUse

    +

    This will add the description in parentheses on first use. -

    For example, suppose you want to append the description in parentheses on first +

    For example, suppose you want to append the description in parentheses on first use for entries in the symbol category: + id="dx1-9045"> category:

    -
    +
    \newcommand*{\glsxtrpostlinksymbol}{%  
      \glsxtrpostlinkAddDescOnFirstUse  
    }
    -

    -


    \glsxtrpostlinkAddSymbolOnFirstUse  \glsxtrpostlinkAddSymbolOnFirstUse -

    -

    +

    +


    \glsxtrpostlinkAddSymbolOnFirstUse

    +

    This will append the symbol (if defined) in parentheses on first use. (Does nothing if the symbol hasn’t been set.) -


    \glsxtrpostlinkAddSymbolDescOnFirstUse  \glsxtrpostlinkAddSymbolDescOnFirstUse -

    -

    +


    \glsxtrpostlinkAddSymbolDescOnFirstUse

    +

    (New to v1.31.) On first use, this will append first use, this will append \space(⟨symbol⟩, ⟨description⟩) if the symbol is defined otherwise it just appends \space(⟨description⟩). -

    If you want to provide your own custom format be aware that you can’t use +

    If you want to provide your own custom format be aware that you can’t use \ifglsused within the post- within the post-link-text hook as by this point the first use flag will have been unset. Instead you can use -


    \glsxtrifwasfirstuse 


    \glsxtrifwasfirstuse{true}{false}

    -

    +

    This will do ⟨true⟩ if the last used entry was the first use for that entry, otherwise it + id="dx1-9054">first use for that entry, otherwise it will do ⟨false⟩. (Requires at least glossaries v4.19 to work properly.) This command is locally set by commands like \gls, so don’t rely on it outside of the post-link-text + id="dx1-9055">link-text hook. -

    Note that commands like

    Note that commands like \glsfirst and and \glsxtrfull fake first use for the + id="dx1-9057"> fake first use for the benefit of the post-link-text hooks by setting link-text hooks by setting \glsxtrifwasfirstuse to \@firstoftwo. (Although, depending on the styles in use, they may not exactly match the text produced by \gls-like commands on first use.) However, the + id="dx1-9060">-like commands on first use.) However, the short-postfootnote style alters style alters \glsxtrfull so that it fakes non-first use otherwise + id="dx1-9063">first use otherwise the inline full format would include the footnote, which is inappropriate.
    -

    -

    For example, if you want to place the description in a footnote after the link-text +

    +

    For example, if you want to place the description in a footnote after the link-text on first use for the first use for the general category: + id="dx1-9066"> category:

    -
    +
    \newcommand*{\glsxtrpostlinkgeneral}{%  
      \glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}%  
    }
    -

    -

    The

    +

    The short-postfootnote abbreviation style uses the post- abbreviation style uses the post-link-text hook to place the footnote after trailing punctuation characters. -

    You can set the default options used by \glslink, \gls etc with: -


    \GlsXtrSetDefaultGlsOpts  \GlsXtrSetDefaultGlsOpts{options}

    -

    -For example, if you mostly don’t want to index entries then you can do: +

    +

    +

    Top

    2.5 Entry Counting Modifications

    +

    If you are using bib2gls you may find it more convenient to use the record +count commands described in §9 bib2gls: Managing Reference Databases +instead. +

    The \glsenableentrycount command is modified to allow for the entrycount +attribute. This means that you not only need to enable entry counting with +\glsenableentrycount, but you also need to set the appropriate attribute (see §6 +Categories). +

    For example, instead of just doing:

    -
    -\GlsXtrSetDefaultGlsOpts{noindex} +
    +\glsenableentrycount
    -

    and then use, for example, \gls[noindex=false]{sample} when you actually want -the location added to the number list. These defaults may be overridden by other -settings (such as category attributes) in addition to any settings passed in the option -argument of commands like \glslink and \gls. -

    Note that if you don’t want any indexing, just omit \makeglossaries and -\printglossaries (or analogous commands). If you want to adjust the -default for wrgloss, it’s better to do this by redefining \glsxtrinitwrgloss -instead. -

    \GlsXtrSetDefaultGlsOpts doesn’t affect \glsadd.
    -

    -

    If you want to change the default value of format, you can instead use: -


    \GlsXtrSetDefaultNumberFormat{format}

    -

    -This has the advantage of also working for \glsadd. For example, if you -want all locations in the back matter to appear in italic (unless explicitly -overridden): - - - -

    -
    -\backmatter - 
    \GlsXtrSetDefaultNumberFormat{hyperit} -
    -

    -

    Commands like \gls have star (*) and plus (+) modifiers as a short cut for -hyper=false and hyper=true. The glossaries-extra package provides a way to add a -third modifier, if required, using -


    \GlsXtrSetAltModifier  \GlsXtrSetAltModifier{char}{options} -

    -

    -where ⟨char⟩ is the character used as the modifier and ⟨options⟩ is the default set of -options (which may be overridden). Note that ⟨char⟩ must be a single character (not a -UTF-8 character, unless you are using XƎLATEX or LuaLATEX). -

    When choosing the character ⟨char⟩ take care of any changes in category code. -
    -

    -

    Example: - - - -

    -
    -\GlsXtrSetAltModifier{!}{noindex} -
    -

    This means that \gls!{sample} will be equivalent to \gls[noindex]{sample}. It’s -not possible to mix modifiers. For example, if you want to do - - - -

    -
    -\gls[noindex,hyper=false]{sample} -
    -

    you can use \gls*[noindex]{sample} or \gls![hyper=false]{sample} but you -can’t combine the * and ! modifiers. -

    Location lists displayed with \printnoidxglossary internally use -


    \glsnoidxdisplayloc  \glsnoidxdisplayloc{prefix}{counter}{format} -{location}

    -

    -This command is provided by glossaries, but is modified by glossaries-extra to check -for the start and end range formation identifiers ( and ) which are discarded to -obtain the actual control sequence name that forms the location formatting -command. -

    If the range identifiers aren’t present, this just uses -


    \glsxtrdisplaysingleloc  \glsxtrdisplaysingleloc{format}{location} -

    -

    -otherwise it uses -


    \glsxtrdisplaystartloc  \glsxtrdisplaystartloc{format}{location} -

    -

    -for the start of a range (where the identifier has been stripped from ⟨format⟩) -or -


    \glsxtrdisplayendloc  \glsxtrdisplayendloc{format}{location} -

    -

    -for the end of a range (where the identifier has been stripped from ⟨format⟩). -

    By default the start range command saves the format in -


    \glsxtrlocrangefmt  \glsxtrlocrangefmt

    -

    -and does -
    \glsxtrdisplaysingleloc{format}{location} -
    -(If the format is empty, it will be replaced with glsnumberformat.) -

    The end command checks that the format matches the start of the range, -does -


    \glsxtrdisplayendlochook  \glsxtrdisplayendlochook{format}{location} -

    -

    -(which does nothing by default), followed by -
    \glsxtrdisplaysingleloc{format}{location} -
    -and then sets \glsxtrlocrangefmt to empty. - - - -

    This means that the list - - - -

    -
    -\glsnoidxdisplayloc{}{page}{(textbf}{1}, - 
    \glsnoidxdisplayloc{}{page}{textbf}{1}, - 
    \glsnoidxdisplayloc{}{page}{)textbf}{1}. -
    -

    doesn’t display any differently from +

    you now need to do:

    -\glsnoidxdisplayloc{}{page}{textbf}{1}, - 
    \glsnoidxdisplayloc{}{page}{textbf}{1}, - 
    \glsnoidxdisplayloc{}{page}{textbf}{1}. -
    -

    but it does make it easier to define your own custom list handler that can -accommodate the ranges. -

    -

    -

    Top

    2.4 Entry Counting Modifications

    -

    If you are using bib2gls you may find it more convenient to use the record -count commands described in §9 bib2gls: Managing Reference Databases -instead. -

    The \glsenableentrycount command is modified to allow for the entrycount -attribute. This means that you not only need to enable entry counting with -\glsenableentrycount, but you also need to set the appropriate attribute (see §5 -Categories). -

    For example, instead of just doing: - - - -

    -
    -\glsenableentrycount -
    -

    you now need to do: - - - -

    -
    \glsenableentrycount  
    \glssetcategoryattribute{abbreviation}{entrycount}{1}
    -

    This will enable the entry counting for entries in the

    This will enable the entry counting for entries in the abbreviation category, but any + id="dx1-10004"> category, but any entries assigned to other categories will be unchanged. -

    Further information about entry counting, including the new per-unit feature, is +

    Further information about entry counting, including the new per-unit feature, is described in §6.1 §7.1 Entry Counting (First Use Flag). -

    +

    -

    Top

    2.5

    Top

    2.6 First Use Flag

    -

    The

    The glossaries package provides -



    \ifglsused{label}{true}{false}

    -

    +

    to determine whether or not an entry has been used. This requires the entry to have been defined. If the entry is undefined, then the underlying boolean variable doesn’t exist and so is neither true nor false. This command will produce an error with the @@ -4691,44 +4427,40 @@ default undefaction=error mode and a warning with mode and a warning with undefaction=warn and, where + id="dx1-11003"> and, where appropriate, displays ?? in the document text to denote an undefined reference. With both modes, neither ⟨true⟩ nor ⟨false⟩ will be performed if ⟨label⟩ doesn’t exist. -

    The

    The record option automatically implements option automatically implements undefaction=warn since no entries + id="dx1-11005"> since no entries will be defined until they have been selected by bib2gls. In this case, you may prefer to use: -


    \GlsXtrIfUnusedOrUndefined 


    \GlsXtrIfUnusedOrUndefined{label}{true} -{}{false}

    -

    +

    (new to v1.34) which does ⟨true⟩ if the entry given by ⟨label⟩ is undefined or if @@ -4737,41 +4469,37 @@ class="cmtt-10">\ifglsused nor \GlsXtrIfUnusedOrUndefined should be used in the post-link hook as the first use flag will have already been unset before the hook is performed. (Instead, \glsxtrifwasfirstuse should be used, see should be used, see §2.3 §2.4 Entry Display Style Modifications.) -

    There are two new commands provided with version 1.31+: -


    \glslocalreseteach 

    There are two new commands provided with version 1.31+: +


    \glslocalreseteach{list}

    -

    +

    and -


    \glslocalunseteach 


    \glslocalunseteach{list}

    -

    +

    These behave like \glslocalreset and \glslocalunset but the argument is a +comma-separated list of labels. -comma-separated list of labels. -

    The internal command used by

    The internal command used by \glsunset is modified first to allow for the changing in entry counting, described above, but also to allow for buffering pending unsets when commands like \gls are used in a context where changing a boolean variable can cause things to go wrong. One example of this is using \gls in one of the commands provided with the package. For example: + id="dx1-11012">package. For example:

    -
    +
    \ul{Some text about \gls{html}.}
    -

    This causes the confusing error: +

    This causes the confusing error:

    -
    +
    Glossary entry `{html}' has not been defined.
    -

    The simplest workaround is to put

    The simplest workaround is to put \gls{html} inside the argument of \mbox. For example: @@ -4803,29 +4531,27 @@ example:

    -
    +
    \ul{Some text about \mbox{\gls{html}}.}
    -

    This can work provided it’s not the first use of this entry. It if is, then unsetting the +

    This can work provided it’s not the first use of this entry. It if is, then unsetting the first use flag causes a problem and results in the error:

    -
    +
    ! Package soul Error: Reconstruction failed.
    -

    The

    The glossaries-extra package provides a way of temporarily switching off \glsunset so that it just makes a note of the entry’s label but doesn’t actually perform the change: -


    \GlsXtrStartUnsetBuffering 


    \GlsXtrStartUnsetBuffering

    -

    +

    The unstarred version doesn’t check for duplicates, so the internal list may end up with multiple occurrences of the same label. The starred version only adds a label to the internal list if it’s not already in it. Note that this @@ -4833,14 +4559,12 @@ buffering only applies to the global \glsunset and does not affect the local \glslocalunset. -

    Later you can restore

    Later you can restore \glsunset and unset all buffered labels using: -


    \GlsXtrStopUnsetBuffering 


    \GlsXtrStopUnsetBuffering

    -

    +

    The starred form \GlsXtrStopUnsetBuffering* uses \glslocalunset instead. For @@ -4849,7 +4573,7 @@ example:

    -
    +
    \documentclass{article}  
    \usepackage[T1]{fontenc}  
    \usepackage{soul} @@ -4862,50 +4586,54 @@ example:  
    Next use: \gls{html}.  
    \end{document}
    -

    Before you stop the unset buffering, you can iterate over the current buffer +

    Before you stop the unset buffering, you can iterate over the current buffer using -


    \GlsXtrForUnsetBufferedList 


    \GlsXtrForUnsetBufferedList{cs} -

    -

    +class="cmtt-10">}


    +

    where ⟨cs⟩ is a control sequence that takes a single argument (which is the entry label). This is best used with the starred version \GlsXtrStartUnsetBuffering* to avoid duplicates. -

    Note that since the change in the first use flag now doesn’t occur until +

    You can discard the buffer and restore \glsunset to its normal behaviour with +(new to v1.42): +


    \GlsXtrDiscardUnsetBuffering

    +

    +

    Note that since the change in the first use flag now doesn’t occur until \GlsXtrStopUnsetBuffering, multiple references of the same term within the buffering zone will always be treated as first use (if the term wasn’t used before the buffering started).
    -

    -

    There can still be a problem here as content within

    +

    There can still be a problem here as content within \mbox can’t break across a line so you may end up with an overfull line or excessive white space within the paragraph. -

    An alternative is to use

    An alternative is to use \protect:

    -
    +
    \GlsXtrStartUnsetBuffering  
    \ul{Some text about \protect\gls{html}.}  
    \GlsXtrStopUnsetBuffering
    -

    but the formatting (underlining in this example) won’t be applied. Another +

    but the formatting (underlining in this example) won’t be applied. Another possibility is:

    -
    +
    \usepackage[T1]{fontenc}  
    \usepackage{soul}  
    \usepackage{glossaries-extra} @@ -4922,31 +4650,29 @@ possibility is:  
    Next use: \gls{html}.  
    \end{document}
    -

    This moves

    This moves \gls outside of \ul and uses textformat to locally change the formatting + id="dx1-11017"> to locally change the formatting command used by \gls (which is normally given by \glstextformat or the textformat attribute) to a custom command attribute) to a custom command \gul, which locally changes the regular font and the default abbreviation font to use \ul. It then uses -


    \GlsXtrExpandedFmt 


    \GlsXtrExpandedFmt{cs}{text}

    -

    +

    which (protected) fully expands ⟨text⟩ before applying ⟨cs⟩, which must be a control @@ -4958,137 +4684,135 @@ something that \ul can’t deal with. For example, if an abbreviation style is used that contains complex formatting or if the field value contains problematic content. -

    +

    -

    Top

    2.6

    Top

    2.7 Plurals

    -

    Some languages, such as English, have a general rule that plurals are formed from +

    Some languages, such as English, have a general rule that plurals are formed from the singular with a suffix appended. This isn’t an absolute rule. There are plenty of exceptions (for example, geese, children, churches, elves, fairies, sheep). The glossaries package allows the package allows the plural key to be optional when + id="dx1-12002"> key to be optional when defining entries. In some cases a plural may not make any sense (for example, the term is a symbol) and in some cases the plural may be identical to the singular. -

    To make life easier for languages where the majority of plurals can simply be +

    To make life easier for languages where the majority of plurals can simply be formed by appending a suffix to the singular, the glossaries package lets the package lets the plural + id="dx1-12004"> field default to the value of the text field with field with \glspluralsuffix appended. This + id="dx1-12006"> appended. This command is defined to be just the letter “s”. This means that the majority of terms don’t need to have the plural supplied as well, and you only need to use it for the + id="dx1-12007"> supplied as well, and you only need to use it for the exceptions. -

    For languages that don’t have this general rule, the

    For languages that don’t have this general rule, the plural field will always need to + id="dx1-12008"> field will always need to be supplied, where needed. -

    There are other plural fields, such as

    There are other plural fields, such as firstplural, , longplural and and shortplural. Again, if + id="dx1-12011">. Again, if you are using a language that doesn’t have a simple suffix rule, you’ll have to supply the plural forms if you need them (and if a plural makes sense in the context). -

    If these fields are omitted, the

    If these fields are omitted, the glossaries package follows these rules:

    + id="dx1-12012"> package follows these rules:

    • If firstplural is missing, then is missing, then \glspluralsuffix is appended to the first + id="dx1-12014"> field, if that field has been supplied. If the first field hasn’t been supplied + id="dx1-12015"> field hasn’t been supplied but the plural field has been supplied, then the field has been supplied, then the firstplural field defaults to + id="dx1-12017"> field defaults to the plural field. If the field. If the plural field hasn’t been supplied, then both the field hasn’t been supplied, then both the plural + id="dx1-12020"> and firstplural fields default to the fields default to the text field (or field (or name, if no , if no text field) with + id="dx1-12024"> field) with \glspluralsuffix appended.
    • If the longplural field is missing, then field is missing, then \glspluralsuffix is appended to the long field, if the field, if the long field has been supplied. + id="dx1-12027"> field has been supplied.
    • If the shortplural field is missing then, field is missing then, with the base glossaries acronym mechanism, \acrpluralsuffix is appended to the is appended to the short field. + id="dx1-12031"> field.
    -

    This

    This last case is changed with glossaries-extra. With this extension package, the shortplural field defaults to the field defaults to the short field with field with \abbrvpluralsuffix appended + id="dx1-12034"> appended unless overridden by category attributes. This suffix command is set by the abbreviation styles. This means that every time an abbreviation style is implemented, \abbrvpluralsuffix is redefined. In most cases its redefined to use -


    \glsxtrabbrvpluralsuffix 


    \glsxtrabbrvpluralsuffix

    -

    +

    which defaults to just \glspluralsuffix. Some of the abbreviation styles have their own command for the plural suffix, such as

    If you require a mixture (for example, in a multilingual document), there are two +

    If you require a mixture (for example, in a multilingual document), there are two attributes that affect the short plural suffix formation. The first is aposplural which + id="dx1-12036"> which uses the suffix

    -
    +
    '\abbrvpluralsuffix
    -

    That is, an apostrophe followed by

    That is, an apostrophe followed by \abbrvpluralsuffix is appended. The second attribute is noshortplural which suppresses the suffix and simply sets which suppresses the suffix and simply sets shortplural to the + id="dx1-12038"> to the same as short. -

    + id="dx1-12039">. +

    -

    Top

    2.7

    Top

    2.8 Nested Links

    -

    Complications arise when you use

    Complications arise when you use \gls in the value of the in the value of the name field (or field (or text or or first + id="dx1-13004"> fields, if set). This tends to occur with abbreviations that extend other abbreviations. For example, SHTML is an abbreviation for SSI enabled HTML, where SSI is an abbreviation for Server Side Includes and HTML is an abbreviation for Hypertext Markup Language. -

    Things can go wrong if we try the following with the

    Things can go wrong if we try the following with the glossaries package:

    -
    +
    \newacronym{ssi}{SSI}{Server Side Includes}  
    \newacronym{html}{HTML}{Hypertext Markup Language}  
    \newacronym{shtml}{S\gls{html}}{\gls{ssi} enabled \gls{html}}
    -

    -

    The main problems are: +

    +

    The main problems are:

    1. The first letter upper casing commands, such as \Gls, won’t work for the + id="dx1-13007">, won’t work for the shtml entry on first use if the long form is displayed before the short form (which is the default abbreviation style). This will attempt to do -
      +
      \gls{\uppercase ssi} enabled \gls{html}
      -

      which just doesn’t work. Grouping the

      which just doesn’t work. Grouping the \gls{ssi} doesn’t work either as this will effectively try to do

      -
      +
      \uppercase{\gls{ssi}} enabled \gls{html}
      -

      This will upper case the label

      This will upper case the label ssi so the entry won’t be recognised. This problem will also occur if you use the all capitals version, such as \GLS. + id="dx1-13009">.

    2. The long and abbreviated forms accessed through \glsentrylong and + id="dx1-13012"> and \glsentryshort are no longer expandable and so can’t be used be used in + id="dx1-13013"> are no longer expandable and so can’t be used be used in contexts that require this, such as PDF bookmarks.
    3. The nested commands may end up in the sort key, which will confuse the + id="dx1-13016"> key, which will confuse the indexing.
    4. The shtml entry produces inconsistent results depending on whether the ssi @@ -5225,18 +4949,18 @@ class="cmtt-10">shtml. For example: -
      +
      This section discusses \gls{ssi}, \gls{html} and \gls{shtml}.
      -

      This produces: +

      This produces:

      -

      This section discusses server side includes (SSI), hypertext +

      This section discusses server side includes (SSI), hypertext markup language (HTML) and SSI enabled HTML (SHTML).

      -

      So the

      So the first use of the shtml entry produces “SSI enabled HTML (SHTML)”. -

      Now let’s suppose the

      Now let’s suppose the html entry is used before the shtml but the ssi entry is @@ -5246,41 +4970,41 @@ class="cmtt-10">shtml entry, for example:

      -
      +
      The sample files are either \gls{html} or \gls{shtml}, but let's  
      first discuss \gls{ssi}.
      -

      This produces: +

      This produces:

      -

      The sample files are either hypertext markup language (HTML) +

      The sample files are either hypertext markup language (HTML) or server side includes (SSI) enabled HTML (SHTML), but let’s first discuss SSI.

      -

      So the

      So the first use of the shtml entry now produces “server side includes (SSI) enabled HTML (SHTML)”, which looks a bit strange. -

      Now let’s suppose the

      Now let’s suppose the shtml entry is used before (or without) the other two entries:

      -
      +
      This article is an introduction to \gls{shtml}.
      -

      This produces: +

      This produces:

      -

      This article is an introduction to server side includes (SSI) +

      This article is an introduction to server side includes (SSI) enabled hypertext markup language (HTML) (SHTML).

      -

      So the

      So the first use of the shtml entry now produces “server side includes (SSI) enabled hypertext markup language (HTML) (SHTML)”, which is even more strange. -

      This is all aggravated by setting the style using the

      This is all aggravated by setting the style using the glossaries package’s \setacronymstyle. For example: @@ -5288,22 +5012,22 @@ class="cmtt-10">\setacronymstyle. For example:

      -
      +
      \setacronymstyle{long-short}
      -

      as this references the label through the use of

      as this references the label through the use of \glslabel when displaying the long and short forms, but this value changes with each use of \gls, so instead of displaying “(SHTML)” at the end of the first use, it now displays “(HTML)”, since \glslabel has been changed to html by \gls{html}. -

      Another oddity occurs if you reset the

      Another oddity occurs if you reset the html entry between uses of the shtml entry. For example: @@ -5311,27 +5035,27 @@ class="cmtt-10">shtml

      -
      +
      \gls{shtml} ... \glsreset{html}\gls{shtml}
      -

      The next use of

      The next use of shtml produces “Shypertext markup language (HTML)”, which is downright weird. -

      Even without this, the short form has nested formatting commands, which +

      Even without this, the short form has nested formatting commands, which amount to \acronymfont{S\acronymfont{HTML}}. This may not be a problem for some styles, but if you use one of the “sm” styles (that use \textsmaller), + id="dx1-13023">), this will produce an odd result.

    5. Each time the shtml entry is used, the html entry will also be indexed and marked as used, and on first use this will happen to both the ssi and html @@ -5339,86 +5063,86 @@ class="cmtt-10">html helpful to the reader.
    6. If hyperref is in use, you’ll get nested hyperlinks and there’s no consistent way + id="dx1-13029"> is in use, you’ll get nested hyperlinks and there’s no consistent way of dealing with this across the available PDF viewers. If on the first + id="dx1-13030">first use case, the user clicks on the “HTML” part of the “SSI enabled HTML (SHTML)” link, they may be directed to the HTML entry in the glossary or they may be directed to the SHTML entry in the glossary.
    -

    For these reasons it’s better to use the simple expandable commands +

    For these reasons it’s better to use the simple expandable commands like \glsentrytext or or \glsentryshort in the definition of other entries + id="dx1-13032"> in the definition of other entries (although that doesn’t fix the first problem). Alternatively use something like:

    -
    +
    \newacronym  
     [description={\acrshort{ssi} enabled \acrshort{html}}]  
     {shtml}{SHTML}{SSI enabled HTML}
    -

    with

    with glossaries or:

    -
    +
    \newabbreviation  
     [description={\glsxtrshort{ssi} enabled \glsxtrshort{html}}]  
     {shtml}{SHTML}{SSI enabled HTML}
    -

    with

    with glossaries-extra. This fixes all the above listed problems (as long as you don’t use \glsdesc). Note that replacing ). Note that replacing \gls with \acrshort in the original example may fix the first use issue, but it doesn’t fix any of the other problems listed above. -

    If it’s simply that you want to use the abbreviation font, you can use +

    If it’s simply that you want to use the abbreviation font, you can use \glsabbrvfont:

    -
    +
    \setabbreviationstyle{long-short-sc}  
    \newabbreviation{ssi}{ssi}{server-side includes}  
    \newabbreviation{html}{html}{hypertext markup language}  
    \newabbreviation{shtml}{shtml}{\glsabbrvfont{ssi} enabled  
    \glsabbrvfont{html}}
    -

    This will pick up the font style setting of the outer entry (shtml, in the above case). +

    This will pick up the font style setting of the outer entry (shtml, in the above case). This isn’t a problem in the above example as all the abbreviations use the same style. -

    However if you’re really determined to use

    However if you’re really determined to use \gls in a field that may be included + id="dx1-13035"> in a field that may be included within some link-text, glossaries-extra patches internals used by the linking commands so that if \gls (or plural or case changing variants) occurs in the link-text it will + id="dx1-13037">link-text it will behave as though you used \glstext[hyper=false,noindex] instead. Grouping is also added so that, for example, when \gls{shtml} is used for the first time the long @@ -5427,19 +5151,19 @@ form

    -
    +
    \gls{ssi} enabled \gls{html}
    -

    is treated as +

    is treated as

    -
    +
    {\glstext[hyper=false,noindex]{ssi}} enabled  
    {\glstext[hyper=false,noindex]{html}}
    -

    This overcomes problems 

    This overcomes problems 4, 5 and 6 listed above, but still doesn’t fix problems 2. Problem 3 usually won’t be an issue as most abbreviation styles set the sort + id="dx1-13039"> key to the short form, so using these commands in the long form but not the short form will only affect entries with a style that sorts according to the long form (such as long-noshort-desc). -

    Additionally, any instance of the long form commands, such as ). +

    Additionally, any instance of the long form commands, such as \glsxtrlong or + id="dx1-13041"> or \acrlong will be temporarily redefined to just use

    + id="dx1-13042"> will be temporarily redefined to just use

    {\glsentrylong{label}}
    (or case-changing versions). Similarly the short form commands, such as \glsxtrshort or or \acrshort will use will use \glsentryshort in the argument of either + id="dx1-13046"> in the argument of either \glsabbrvfont (for \glsxtrshort) or shtml entry had instead been defined as: -
    +
    \newacronym{shtml}{SHTML}{\acrshort{ssi} enabled \acrshort{html}}
    -

    then (using the

    then (using the long-short style) the style) the first use will be like

    -
    +
    {\acronymfont{\glsentryshort{ssi}}} enabled  
    {\acronymfont{\glsentryshort{html}}} (SHTML)
    -

    whereas if the entry is defined as: +

    whereas if the entry is defined as:

    -
    +
    \newabbreviation{shtml}{SHTML}{\glsxtrshort{ssi} enabled  
    \glsxtrshort{html}}
    -

    then the

    then the first use will be like:

    -
    +
    {\glsabbrvfont{\glsentryshort{ssi}}} enabled  
    {\glsabbrvfont{\glsentryshort{html}}} (SHTML)
    -

    Note that the first optional argument of

    Note that the first optional argument of \acrshort or \glsxtrshort is ignored in this context. (The final optional argument will be inserted, if present.) The abbreviation style that governs \glsabbrvfont will be set for will be set for \glsxtrshort. Note + id="dx1-13051">. Note that \acrshort doesn’t set the abbreviation style. -

    Alternatively you can use: -


    \glsxtrp 

    Alternatively you can use: +


    \glsxtrp{field}{label}

    -

    +

    where ⟨field⟩ is the field label and corresponds to a command in the form \gls\glstext) or in the form \glsxtrfield⟩ (e.g. \glsxtrshort). -

    There’s a shortcut command for the most common fields: -


    \glsps 

    There’s a shortcut command for the most common fields: +


    \glsps{label}

    -

    +

    which is equivalent to \glsxtrp{short}{label}, and -


    \glspt 


    \glspt{label}

    -

    +

    which is equivalent to \glsxtrp{text}{label}. -

    The

    The \glsxtrp command behaves much like the \glsfmtfield⟩ commands described in §4 §5 Entries in Sectioning Titles, Headers, Captions and Contents but the post-link hook is also suppressed and extra grouping is added. It automatically sets hyper to to false and noindex to to true. If you want to change this, you can use -


    \glsxtrsetpopts 


    \glsxtrsetpopts{options}

    -

    +

    For example:

    -
    +
    \glsxtrsetpopts{hyper=false}
    -

    will just switch off the hyperlinks but not the indexing. Be careful using +

    will just switch off the hyperlinks but not the indexing. Be careful using this command or you can end up back to the original problem of nested links. -

    The hyper link is re-enabled within glossaries. This is done through the +

    The hyper link is re-enabled within glossaries. This is done through the command: -


    \glossxtrsetpopts 


    \glossxtrsetpopts

    -

    +

    which by default just does

    -
    +
    \glsxtrsetpopts{noindex}
    -

    You can redefine this if you want to adjust the setting when

    You can redefine this if you want to adjust the setting when \glsxtrp is used in the glossary. For example:

    -
    +
    \renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}}
    -

    -

    For example, +

    +

    For example,

    -
    +
    \glsxtrp{short}{ssi}
    -

    is equivalent to +

    is equivalent to

    -
    +
    {\let\glspostlinkhook\relax  
     \glsxtrshort[hyper=false,noindex]{ssi}[]%  
    }
    -

    in the main body of the document or +

    in the main body of the document or

    -
    +
    {\let\glspostlinkhook\relax  
     \glsxtrshort[noindex]{ssi}[]%  
    }
    -

    inside the glossary. (Note the post-link hook is locally disabled.) -

    If

    inside the glossary. (Note the post-link hook is locally disabled.) +

    If \glsxtrp{short}{ssi} occurs in a sectioning mark, it’s equivalent to

    -
    +
    {\glsxtrheadshort{ssi}}
    -

    (which recognises the

    (which recognises the headuc attribute.) -

    If attribute.) +

    If hyperref has been loaded, then the bookmark will use has been loaded, then the bookmark will use \glsentryfield⟩ (\glsentryshort{ssi} in the above example). -

    There are similar commands -


    \Glsxtrp 

    There are similar commands +


    \Glsxtrp{field}{label}

    -

    +

    for first letter upper case and -


    \GLSxtrp 


    \GLSxtrp{field}{label}

    -

    +

    for all upper case. -

    If you use any of the case-changing commands, such as

    If you use any of the case-changing commands, such as \Gls or or \Glstext, (either + id="dx1-13064">, (either all caps or first letter upper casing) don’t use any of the linking commands, such as \gls or or \glstext, in the definition of entries for any of the fields that may be used + id="dx1-13066">, in the definition of entries for any of the fields that may be used by those case-changing commands.
    -

    -

    You can, with care, protect against issue 

    +

    You can, with care, protect against issue 1 by inserting an empty group at the start if the long form starts with a command that breaks the first letter uppercasing commands like \Gls, but you still won’t be able to use the all caps commands, such as \GLS. -

    If you

    If you really need nested commands, the safest method is

    -
    +
    \newabbreviation{shtml}{shtml}{{}\glsxtrp{short}{ssi} enabled  
    \glsxtrp{short}{html}}
    -

    but be aware that it may have some unexpected results occasionally. -

    Example document: +

    but be aware that it may have some unexpected results occasionally. +

    Example document:

    -
    +
    \documentclass{report}  
    \usepackage[utf8]{inputenc}  
    \usepackage[T1]{fontenc} @@ -5782,23 +5492,23 @@ class="cmti-10">really need nested commands, the safest method is  
    \printglossaries  
    \end{document}
    -

    -

    +

    +

    -

    Top

    2.8

    Top

    2.9 Acronym Style Modifications

    +

    The glossaries-extra package provides a new way of dealing with abbreviations and -

    The glossaries-extra package provides a new way of dealing with abbreviations and redefines \newacronym to use to use \newabbreviation (see §3 §4 Abbreviations). The simplest way to update a document that uses \newacronym from glossaries-extra is do just add

    -
    +
    \setabbreviationstyle[acronym]{long-short}
    -

    before you define any entries. For example, the following document using just +

    before you define any entries. If you have used commands like \acrshort, \acrlong +and \acrfull, you need to substitute them with \glsxtrshort, \glsxtrlong and +\glsxtrfull. (This includes plural and case-changing forms.) Your text editor’s +search and replace function should help with this. If you have used the shortcuts +package option then use shortcuts=ac in order to continue using the shortcut +commands like \ac. With this setting, \acs will use \glsxtrshort instead of \acrshort etc. +

    For example, the following document using just glossaries

    -
    +
    \documentclass{article}  
    \usepackage[acronym,nopostdot,toc]{glossaries}  
    \makeglossaries @@ -5830,13 +5573,13 @@ class="cmss-10">glossaries  
    \printglossaries  
    \end{document}
    -

    can be easily adapted to use

    can be easily adapted to use glossaries-extra:

    -
    +
    \documentclass{article}  
    \usepackage[acronym]{glossaries-extra}  
    \makeglossaries @@ -5847,14 +5590,14 @@ class="cmss-10">glossaries-extra:  
    \printglossaries  
    \end{document}
    -

    Table 

    Table 2.1 lists the nearest equivalent glossaries-extra abbreviation styles for the predefined acronym styles provided by glossaries, but note that the new styles use different formatting commands. See §3.4 §4.4 Predefined Abbreviation Styles for further details.

    @@ -5862,7 +5605,7 @@ details. -


    @@ -5879,44 +5622,44 @@ class="cmtt-10">\setabbreviationstyle[⟨category]{new-style-name}
    +class="cmtt-10">}
    + id="dx1-14016">

    + id="dx1-14018">

    + id="dx1-14022">

    + id="dx1-14024">

    + id="dx1-14026">

    + id="dx1-14028">

    + id="dx1-14030">

    + id="dx1-14032">

    + id="dx1-14036">

    + id="dx1-14038">

    + id="dx1-14040">

    + id="dx1-14042">

    + id="dx1-14044">

    + id="dx1-14046">

    + id="dx1-14048">

    + id="dx1-14050">

    + id="dx1-14052">

    + id="dx1-14054">

    Old Style Name

    Old Style Name

    New Style Name

    long-sc-short

    long-short-sc

    long-sm-short

    long-short-sm

    long-sp-short

    long-short

    with \renewcommand{{#1}}

    short-long

    short-long

    sc-short-long

    short-sc-long

    sm-short-long

    short-sm-long

    long-short-desc

    long-short-desc

    long-sc-short-desc

    long-short-sc-desc

    long-sm-short-desc

    long-short-sm-desc

    long-sp-short-desc

    long-short-desc

    with \renewcommand{{#1}}

    short-long-desc

    short-long-desc

    sc-short-long-desc

    short-sc-long-desc

    sm-short-long-desc

    short-sm-long-desc

    dua

    long-noshort

    dua-desc

    long-noshort-desc

    footnote

    short-footnote

    footnote-sc

    short-sc-footnote

    footnote-sm

    short-sm-footnote

    footnote-desc

    short-footnote-desc

    footnote-sc-desc

    short-sc-footnote-desc

    footnote-sm-desc

    short-sm-footnote-desc

    + id="dx1-14056">


    -

    The reason for introducing the new style of abbreviation commands provided by +

    The reason for introducing the new style of abbreviation commands provided by glossaries-extra is because the original acronym commands provided by glossaries are @@ -6115,3290 +5858,3274 @@ class="cmss-10">glossaries-extra. However, if you really want to restore the generic acronym function provided by glossaries you can use -


    \RestoreAcronyms 


    \RestoreAcronyms

    -

    +

    (before any use of \newacronym). -

    \RestoreAcronyms should not be used in combination with the newer glossaries-extra abbreviations. Don’t combine old and new style entries with the same type. The original . The original glossaries acronym mechanism doesn’t work well with the newer glossaries-extra commands. -

    If you use

    If you use \RestoreAcronyms, don’t use any of the commands provided by glossaries-extra intended for abbreviations (such as \glsxtrshort or or \glsfmtshort) + id="dx1-14060">) with entries defined via \newacronym as it will cause unexpected results. + id="dx1-14061"> as it will cause unexpected results.
    -

    -

    In general, there’s rarely any need for

    +

    In general, there’s rarely any need for \RestoreAcronyms. If you have a document that uses \newacronymstyle, then it’s best to either stick with just + id="dx1-14062">, then it’s best to either stick with just glossaries for that document or define an equivalent abbreviation style with \newabbreviationstyle. (See . (See §3.5 §4.5 Defining New Abbreviation Styles for further details.) -


    \glsacspace 


    \glsacspace{label}

    -

    +

    The space command \glsacspace used by the long-sp-short acronym style provided + id="dx1-14065"> acronym style provided by glossaries is modified so that it uses -


    \glsacspacemax 


    \glsacspacemax

    -

    +

    instead of the hard-coded 3em. This is a command not a length and so can be changed using \renewcommand. -

    Any of the new abbreviation styles that use

    Any of the new abbreviation styles that use \glsxtrfullsep (such as (such as long-short) + id="dx1-14068">) can easily be changed to use \glsacspace with

    -
    +
    \renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}}
    -

    -

    The

    +

    The first use acronym font command -



    \firstacronymfont{text}

    -

    +

    is redefined to use the first use abbreviation font command first use abbreviation font command \glsfirstabbrvfont. + id="dx1-14071">. This will be reset if you use \RestoreAcronyms. -

    The subsequent use acronym font command -


    The subsequent use acronym font command +


    \acronymfont{text}

    -

    +

    is redefined to use the subsequent use abbreviation font command \glsabbrvfont. + id="dx1-14072">. This will be reset if you use \RestoreAcronyms.

    -

    Top

    2.9 glossary-bookindex package

    -

    As from v1.21, glossaries-extra has a new supplementary package glossary-bookindex -which provides the glossary style bookindex. This is very similar to the mcolindexgroup -style but is designed for indexes, so by default only the name and location list -are displayed. You can either load this package explicitly and then set the -style: +

    Top

    2.10 Glossaries

    +

    The \newignoredglossary{type} command now (as from v1.11) has a starred +version that doesn’t automatically switch off the hyperlinks. This starred version may +be used with the targeturl attribute to create a link to an external URL. (See §6 +Categories for further details.) As from v1.12 both the starred and unstarred version +check that the glossary doesn’t already exist. (The glossaries package omits this +check.) +

    You can now provide an ignored glossary with: +


    \provideignoredglossary{type}

    +

    +which will only define the glossary if it doesn’t already exist. This also has a starred +version that doesn’t automatically switch off hyperlinks. +

    The individual glossary displaying commands \printglossary, \printnoidxglossary +and \printunsrtglossary have extra keys: +

    +
      +
    • target. This is a boolean key which can be used to switch off the automatic + hypertarget for each entry. Unlike \glsdisablehyper this doesn’t switch + off hyperlinks, so any cross-references within the glossary won’t be affected. + This is a way of avoiding duplicate target warnings if a glossary needs to + be displayed multiple times. +
    • +
    • targetnameprefix={prefix}. Another way of avoiding duplicate target names + is to set a prefix used for the names. Unlike changing \glolinkprefix + this doesn’t affect any hyperlinks (such as those created with \gls). +
    • +
    • prefix={prefix}. If you do actually want to locally change \glolinkprefix, + you can use the prefix key instead. You need to use the matching prefix + key in commands like \gls. +
    • +
    • label={label}. Labels the glossary with \label{label} and also defines + \@currentlabelname to the glossary’s TOC title (to provide text for + \nameref). You can also set the label before the glossary using: +


      \glsxtrsetglossarylabel{label}

      +

      + but take care of duplicate labels if it’s not scoped.

    +

    -
    -\usepackage{glossaries-extra} - 
    \usepackage{glossary-bookindex} - 
    \setglossarystyle{bookindex} -
    -

    or use both the

    Top

    2.10.1 Glossary Style Modifications

    +

    The glossaries-extra-stylemods package (more conveniently loaded through the +glossaries-extra stylemods and style options: + id="dx1-16002"> option) modifies some of the predefined styles that are +provided with the glossaries package. These modifications are described in more detail +in §2.10.1 The glossaries-extra-stylemods Package. +

    The glossaries package tries to determine the group title from its label by first +checking if \labelgroupname exists. If it doesn’t exist, then the title is assumed to be +the same as the label. For example, when typesetting the “A” letter group, glossaries +first checks if \Agroupname exists. This could potentially cause conflict with another +package that may have some other meaning for \Agroupname, so glossaries-extra first +checks for the existence of the internal command \glsxtr@grouptitle@label⟩ +which shouldn’t clash with another package. You can set the group title +using +


    \glsxtrsetgrouptitle{label}{title}

    +

    +For example:

    -
    -\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra} +
    +\glsxtrsetgrouptitle{A}{A (a)}
    -

    The bookindex style only supports a maximum hierarchical level of 2 (top-level, -level 1 and level 2). It’s primarily designed for use with bib2gls. It may be used -with other indexing options, but some features may not be present and UTF-8 -characters may cause a problem with non-Unicode engines in letter group -headings or PDF bookmarks. (bib2gls uses numeric identifies by default to -avoid these problems. If numbers show up in the group headings instead of -the appropriate characters, check that you have used the record package -option.) -

    The number of columns is given by -


    \glsxtrbookindexcols  \glsxtrbookindexcols

    -

    -which defaults to 2. -

    This style uses the multicols environment. If the command -


    \glsxtrbookindexcolspread  \glsxtrbookindexcolspread

    -

    -isn’t empty then it’s supplied as the optional argument following \begin{multicols} -{n}. You can switch from multicols to multicols* by redefining -


    \glsxtrbookindexmulticolsenv  \glsxtrbookindexmulticolsenv

    -

    -For example - - - +

    This uses a global assignment. If you need to scope the change you can +use +


    \glsxtrlocalsetgrouptitle{label}{title}

    +

    +

    -
    -\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*} +
    Style Hooks
    +

    The commands \glossentryname and \glossentrydesc are modified to take into +account the glossname, glossnamefont, glossdesc and glossdescfont attributes +(see §6 Categories). This means you can make simple font or case-changing +modifications to the name and description without defining a new glossary +style. +

    (New to version 1.42.) The command \glossentrysymbol is modified to take into +account the glosssymbolfont. Note that, unlike the above, there’s no corresponding +attribute to change the case as it’s usually not appropriate to change the case of a +symbol (and for some symbols, such as pictographs, there’s no concept of case). If +\texorpdfstring has been defined \glossentrysymbol will be defined to do: +

    +
    +\texorpdfstring{TEX code}{PDF}
    -

    -

    Each top-level entry is displayed using -


    \glsxtrbookindexname  \glsxtrbookindexname{ The ⟨TEX code⟩ part is robust and deals with the actual typesetting of the symbol. +The ⟨PDF⟩ part is simply: +


    \glsentrypdfsymbol{label}

    -

    -where the entry is identified by ⟨label⟩. This just does \glossentryname{

    +which is defined to just do \glsentrysymbol{label} by -default. For example, if you want the symbol to be included: +class="cmtt-10">}. The chances are that the code +in the symbol key won’t be valid in the PDF bookmarks, so you can redefine +\glsentrypdfsymbol to use a more appropriate field. (If you do redefine this +command, remember that it needs to fully expand.) +

    For example, if you are using glossaries-accsupp, you could use the symbolaccess +field:

    -
    -\renewcommand*{\glsxtrbookindexname}[1]{% - 
     \glossentryname{#1}% - 
     \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}% - 
    } +
    +\renewcommand{\glsentrypdfsymbol}[1]{\glsentrysymbolaccess{#1}}
    -

    or if you want the description (if set): +

    Alternatively, if you are using bib2gls you can use the TEX parser library to +interpret a copy of the symbol field and use that. For example, with the resource +options:

    -
    -\renewcommand*{\glsxtrbookindexname}[1]{% - 
     \glossentryname{#1}% - 
     \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}% - 
    } +
    +  replicate-fields={symbol=user1}, + 
      interpret-fields={user1}
    -

    (which picks up the post-description hook). -

    Alternatively you can use the \glsxtrpostnamecategory⟩ hook to append -information after the name according to the entry’s category. -

    Sub-entries are displayed using -


    \glsxtrbookindexsubname  \glsxtrbookindexsubname{label}

    -

    -which just defaults to \glsxtrbookindexname{label}. -

    The separator used before the location list for top-level entries is given -by -


    \glsxtrbookindexprelocation  \glsxtrbookindexprelocation{label} -

    -

    -where ⟨label⟩ is the entry’s label. This checks if the location field has been set. If it -has, it does +

    This stores the interpreted value of the symbol in the user1 field, so you can then +do:

    -
    -,\glsxtrprelocation +
    +\renewcommand{\glsentrypdfsymbol}[1]{\glsentryuseri{#1}}
    -

    otherwise it just does \glsxtrprelocation (which defaults to \space). If you’re not -using bib2gls, the location field won’t be set. -

    The separator used before the location list for sub-entries is given by -


    \glsxtrbookindexsubprelocation  \glsxtrbookindexsubprelocation{label} -

    -

    -which defaults to \glsxtrbookindexprelocation{label}. -

    The actual location list is encapsulated with: -


    \glsxtrbookindexlocation  \glsxtrbookindexlocation{

    (You may need XƎLATEX or LuaLATEX with this method.) This allows +\glossentrysymbol to be used in a section heading with standalone definitions. +

    If you want to adapt a style to use another field instead of name, you can +use +


    \glossentrynameother{label}{location +class="cmitt-10">field⟩}

    +

    +This behaves just like \glossentryname (that is, it obeys glossname, glossnamefont or list\glsnamefont and uses the post-name hook) but it uses the given ⟨field⟩ instead of +name. The ⟨field⟩ argument must be the internal field name (for example desc rather +than description). See the key to field mappings table in the glossaries user +manual. +

    There is a hook after \glossentryname and \Glossentryname: +


    \glsxtrpostnamehook{label}

    -

    -for top-level entries and -


    \glsxtrbookindexsublocation  \glsxtrbookindexsublocation{

    +By default this checks the indexname attribute. If the attribute exists for the +category to which the label belongs, then the name is automatically indexed +using +


    \glsxtrdoautoindexname{label} +class="cmtt-10">}{indexname}

    +

    +See §8 Auto-Indexing for further details. +

    As from version 1.04, the post-name hook \glsxtrpostnamehook will also use {location list}


    -

    -for sub-entries. These both just do ⟨location list⟩ by default. -

    The separator used between a top-level parent and child entry is given -by -


    \glsxtrbookindexparentchildsep  \glsxtrbookindexparentchildsep -

    -

    -This defaults to \nopagebreak. -

    The separator used between a sub-level parent and child entry is given -by -


    \glsxtrbookindexparentsubchildsep  \glsxtrbookindexparentsubchildsep -

    -

    -This defaults to \glsxtrbookindexparentchildsep. -

    The separator between top-level entries is given by -


    \glsxtrbookindexbetween  \glsxtrbookindexbetween{label1}{label2} -

    -

    -This comes after the entry given by ⟨label1⟩, if the entry has no children, or after the -last descendent otherwise, so it always comes immediately before the entry given by -⟨label2⟩ unless the entry occurs at the start of a group. This does nothing by -default. -

    The separator between two level 1 entries is given by -


    \glsxtrbookindexsubbetween  \glsxtrbookindexsubbetween{label1}{label2} -

    +class="cmtt-10">\glsxtrpostname
    category⟩ if it exists. You can use \glscurrententrylabel to +obtain the entry label with the definition of this command. For example, +suppose you are using a glossary style the doesn’t display the symbol, you can +insert the symbol after the name for a particular category, say, the “symbol” +category: -

    -

    The separator between two level 2 entries is given by -


    \glsxtrbookindexsubsubbetween  \glsxtrbookindexsubsubbetween{label1} -{label2 +
    +\newcommand*{\glsxtrpostnamesymbol}{\space + 
     (\glsentrysymbol{\glscurrententrylabel})} +
    +

    For convenience, as from v1.31, you can use +


    \glsdefpostname{category}{definition}

    -

    -At the end of each letter group, the following hooks are done in order: -


    \glsxtrbookindexsubsubatendgroup  \glsxtrbookindexsubsubatendgroup +

    +This is simply a shortcut for:

    +
    \csdef{glsxtrpostnamecategory}{sub-sub-label}

    -

    -


    \glsxtrbookindexsubatendgroup  \glsxtrbookindexsubatendgroup{sub-labeldefinition} -

    -

    -


    \glsxtrbookindexatendgroup  \glsxtrbookindexatendgroup{ +
    Note that it doesn’t check if the command has already been defined. +

    As from version 1.25, the post-name hook also does +


    \glsextrapostnamehook{label} -

    -

    -where ⟨sub-sub-label⟩ is the label of the last level 2 entry, ⟨sub-label⟩ is the label of the -last level 1 entry and ⟨label⟩ is the label of the last level 0 entry. -

    For example, the resource option seealso=omit instructs bib2gls to omit the +class="cmtt-10">}


    +

    +(before \glsxtrpostnamecategory⟩) to allow for additional non-category related code. +This does nothing by default. +

    The post-description code used within the glossary is modified so that it also +does +


    \glsxtrpostdescription

    +

    +This occurs before the original \glspostdescription, so if the nopostdot=false +option is used, it will be inserted before the terminating full stop. +

    This new command will do \glsxtrpostdesccategory⟩ if it exists, where +⟨category⟩ is the category label associated with the current entry. For example seealso cross-reference from the location list. (The see cross-reference will still be -added unless you also have see=omit.) The seealso cross-reference can instead be -appended after the child entries using: +class="cmtt-10">\glsxtrpostdescgeneral for entries with the category set to general or +\glsxtrpostdescacronym for entries with the category set to acronym. For +convenience, as from v1.31, you can use +


    \glsdefpostdesc{category}{definition}

    +

    +This is simply a shortcut for:

    +
    +\csdef{glsxtrpostdesccategory}{definition} +
    +
    Note that it doesn’t check if the command has already been defined. +

    Since both \glossentry and \subglossentry set +


    \glscurrententrylabel

    + + + +

    +to the label for the current entry, you can use this within the definition of these +post-description hooks if you need to reference the label. +

    For example, suppose you want to insert the plural form in brackets after the +description in the glossary, but only for entries in the general category, then you could +do:

    -
    -\renewcommand{\glsxtrbookindexatendgroup}[1]{% - 
      \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}% - 
    } - 
    \renewcommand{\glsxtrbookindexbetween}[2]{% - 
      \glsxtrbookindexatendgroup{#1}% - 
    }% - 
    \renewcommand{\glsxtrbookindexsubatendgroup}[1]{% - 
      \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}% - 
    } - 
    \renewcommand{\glsxtrbookindexsubbetween}[2]{% - 
      \glsxtrbookindexsubatendgroup{#1}% - 
    } - 
    \renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{% - 
      \glsxtrifhasfield{seealso}{#1}% - 
      {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}% - 
    } - 
    \renewcommand{\glsxtrbookindexsubsubbetween}[2]{% - 
      \glsxtrbookindexsubsubatendgroup{#1}% - 
    } +
    +\renewcommand{\glsxtrpostdescgeneral}{\space + 
     (plural: \glsentryplural{\glscurrententrylabel})}
    -

    This uses \glstreesubitem and \glstreesubsubitem to indent the cross-reference -according to the next level down, so the cross-reference for a top-level entry is aligned -with the sub-entries, and a level 1 entry has its cross-reference aligned with -sub-sub-entries. In the event that a level 2 entry has a cross-reference, this is -indented a bit further (but it won’t be aligned with any deeper level as the bookindex -style only supports a maximum of two sub-levels). -

    The bookindex style uses group headings. (If you use bib2gls remember to invoke -it with the --group or -g switch.) The heading will use -


    \glsxtrbookindexbookmark  \glsxtrbookindexbookmark{group title

    This means you don’t have to define a custom glossary style, which you may find +more complicated. (It also allows more flexibility if you decide to change the +underlying glossary style.) +

    This feature can’t be used for glossary styles that ignore \glspostdescription or if +you redefine \glspostdescription without including \glsxtrpostdescription. +(For example, if you redefine \glspostdescription to do nothing instead of using +the nopostdot option to suppress the terminating full stop.) See §2.10.1 The +glossaries-extra-stylemods Package to patch the predefined styles provided by glossaries +that are missing \glspostdescription.
    +

    +

    +

    +
    Number List
    +

    The number list is now placed inside the argument of +


    \GlsXtrFormatLocationList{number list}

    +

    +This is internally used by \glossaryentrynumbers. The nonumberlist option +redefines \glossaryentrynumbers so that it doesn’t display the number list, but it +still saves the number list in case it’s required. +

    If you want to suppress the number list always use the nonumberlist option +instead of redefining \glossaryentrynumbers to do nothing.
    +

    +

    For example, to change the font for the entire number list redefine +\GlsXtrFormatLocationList as appropriate. Don’t modify \glossaryentrynumbers. +

    Sometimes users like to insert “page” or “pages” in front of the number list. This +is quite fiddly to do with the base glossaries package, but glossaries-extra provides a +way of doing this. First you need to enable this option and specify the text to display +using: +


    \GlsXtrEnablePreLocationTag{page}{name} -

    -

    -If \pdfbookmark has been defined, this will use that command to bookmark the -group title. If section=chapter is set (default if chapters are defined) then this -uses level 1 otherwise it uses level 2. You can redefine this command if this -isn’t appropriate. If \pdfbookmark hasn’t been defined, this command does -nothin. -

    The group heading is formatted according to -


    \glsxtrbookindexformatheader  \glsxtrbookindexformatheader{group title} -

    - - - -

    -which is defined as +class="cmitt-10">pages⟩}


    +

    +where ⟨page⟩ is the text to display if the number list only contains a single location and +⟨pages⟩ is the text to display otherwise. For example:

    -
    -\newcommand*{\glsxtrbookindexformatheader}[1]{% - 
      \par{\centering\glstreegroupheaderfmt{#1}\par}% - 
    } +
    +\GlsXtrEnablePreLocationTag{Page: }{Pages: }
    -

    where \glstreegroupheaderfmt is provided by the glossary-tree package, which is -automatically loaded. Note that the entry names aren’t encapsulated with -\glstreenamefmt. -

    The glossary-bookindex package provides some supplementary commands that -aren’t used by default, but may be used when adjusting the style. These commands -should only be used within one of the \print…glossary commands. (That is, they -should only be used in glossary styles.) -


    \glsxtrbookindexmarkentry  \glsxtrbookindexmarkentry{label

    An extra run is required when using this command. +

    Use glsignore not @gobble as the format if you want to suppress the page +number (and only index the entry once).
    +

    +

    See the accompanying sample file sample-pages.tex. +

    Note that bib2gls can be instructed to insert a prefix at the start of non-empty +location lists, which can be used as an alternative to \GlsXtrEnablePreLocationTag. +

    Location lists displayed with \printnoidxglossary internally use +


    \glsnoidxdisplayloc{prefix}{counter}{format}{location}

    -

    -This writes information to the .aux file that can be read on the next run to obtain -the first and last entry on each page of the glossary. -

    You can display the first entry associated with the current page using: -


    \glsxtrbookindexfirstmark  \glsxtrbookindexfirstmark

    -and the last entry associated with the current page using: -


    \glsxtrbookindexlastmark  \glsxtrbookindexlastmark

    -

    -These do nothing if there are no entries marked on the current page (or if the -document build isn’t up to date). -

    The entry is formatted using: -


    \glsxtrbookindexfirstmarkfmt  \glsxtrbookindexfirstmarkfmt{labelglossaries, but is modified by glossaries-extra to check +for the start and end range formation identifiers ( and ) which are discarded to +obtain the actual control sequence name that forms the location formatting +command. +

    If the range identifiers aren’t present, this just uses +


    \glsxtrdisplaysingleloc{format}{location}

    +

    +otherwise it uses +


    \glsxtrdisplaystartloc{format}{location}

    +

    +for the start of a range (where the identifier has been stripped from ⟨format⟩) +or +


    \glsxtrdisplayendloc{format}{location}

    +

    +for the end of a range (where the identifier has been stripped from ⟨format⟩). +

    By default the start range command saves the format in +


    \glsxtrlocrangefmt

    +

    +and does +
    \glsxtrdisplaysingleloc{format}{location} -


    -

    -for the first instance and -


    \glsxtrbookindexlastmarkfmt  \glsxtrbookindexlastmarkfmt{label +(If the format is empty, it will be replaced with glsnumberformat.) +

    The end command checks that the format matches the start of the range, +does +


    \glsxtrdisplayendlochook{format}{location}

    +

    +(which does nothing by default), followed by +
    \glsxtrdisplaysingleloc{format}{location} -


    -

    -for the last. -

    These commands are designed for use in page headers or footers where the page -number is stable. For example, \glsxtrbookindexname can be redefined to mark the -current entry: -

    -
    -\renewcommand{\glsxtrbookindexname}[1]{% - 
      \glsxtrbookindexmarkentry{#1}% - 
      \glossentryname{#1}% - 
    } -
    -

    If you only want to mark the top-level entries, remember to redefine -\glsxtrbookindexsubname as it defaults to \glsxtrbookindexname: +
    +and then sets \glsxtrlocrangefmt to empty. +

    This means that the list

    -
    -\renewcommand{\glsxtrbookindexsubname}[1]{% - 
      \glossentryname{#1}% - 
    } +
    +\glsnoidxdisplayloc{}{page}{(textbf}{1}, + 
    \glsnoidxdisplayloc{}{page}{textbf}{1}, + 
    \glsnoidxdisplayloc{}{page}{)textbf}{1}.
    -

    -

    Then if you’re using fancyhdr you can set the page style to show the first and last -entry for the current page with: +

    doesn’t display any differently from

    -
    -  \pagestyle{fancy}% - 
      \lhead{\thepage}% - 
      \lfoot{\glsxtrbookindexfirstmark}% - 
      \cfoot{}% - 
      \rfoot{\glsxtrbookindexlastmark}% +
    +\glsnoidxdisplayloc{}{page}{textbf}{1}, + 
    \glsnoidxdisplayloc{}{page}{textbf}{1}, + 
    \glsnoidxdisplayloc{}{page}{textbf}{1}.
    -

    -

    +

    but it does make it easier to define your own custom list handler that can +accommodate the ranges. +

    -

    Top

    2.10 glossary-longextra package

    -

    As from version 1.37, the glossaries-extra package comes with the supplementary -package glossary-longextra that provides additional styles, listed below, that use the -longtable environment. If you know that your glossary won’t span more than a page -and you need to use it in a context that’s incompatible with longtable, you can -instead setup these styles to use tabular instead. In order to do this you must -use -


    \GlsLongExtraUseTabulartrue  \GlsLongExtraUseTabulartrue

    -

    -before the style is set. For example: +

    The glossaries-extra-stylemods Package
    +

    As from v1.02, glossaries-extra now includes the package glossaries-extra-stylemods that +will redefine the predefined styles to include the post-description hook (for those that +are missing it). You will need to make sure the styles have already been defined +before loading glossaries-extra. For example:

    -
    -\GlsLongExtraUseTabulartrue - 
    \setglossarystyle{long-name-desc} +
    +\usepackage{glossaries-extra} + 
    \usepackage{glossary-longragged} + 
    \usepackage{glossaries-extra-stylemods}
    -

    or +

    Alternatively you can load glossary-name.sty at the same time by passing ⟨name⟩ +as a package option to glossaries-extra-stylemods. For example:

    -
    -\GlsLongExtraUseTabulartrue - 
    \printunsrtglossary[style={long-name-desc}] +
    +\usepackage{glossaries-extra} + 
    \usepackage[longragged]{glossaries-extra-stylemods}
    -

    If you use this setting, you can change the default vertical alignment with: -


    \glslongextraTabularVAlign  \glslongextraTabularVAlign

    -

    -The default definition is c. -

    The column titles are formatted according to: -


    \glslongextraHeaderFmt  \glslongextraHeaderFmt{text}

    -

    -which simply does \textbf{text} by default. -

    The name column has the title given by \entryname and the column alignment is -given by: -


    \glslongextraNameAlign  \glslongextraNameAlign

    -

    -which expands to l (left) by default. -

    The symbol column (where applicable) has the title given by \symbolname and -the column alignment is given by: -


    \glslongextraSymbolAlign  \glslongextraSymbolAlign

    -

    -which expands to c (centred) by default. -

    The location list column (where applicable) has the title given by \pagelistname -and the column alignment is given by: -


    \glslongextraLocationAlign  \glslongextraLocationAlign

    -

    -which expands to +

    Another option is to use the stylemods key when you load glossaries-extra. You can +omit a value if you only want to use the predefined styles that are automatically +loaded by glossaries (for example, the long3col style):

    -
    ->{\raggedright}p{\glspagelistwidth} +
    +\usepackage[style=long3col,stylemods]{glossaries-extra}
    -

    by default. (Ragged-right paragraph, \glspagelistwidth is defined in glossary-long, -which is automatically loaded.) -

    The description column has the title given by \descriptionname and the column -alignment is given by: -


    \glslongextraDescAlign  \glslongextraDescAlign

    -

    -which expands to +

    Or the value of stylemods may be a comma-separated list of the style package +identifiers. For example:

    -
    ->{\raggedright}p{\glsdescwidth} +
    +\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra}
    -

    by default. (Ragged-right paragraph, \glsdescwidth is defined in glossary-long, -which is automatically loaded.) -

    Unlike the long styles provided by the base glossaries package, these new styles try -to determine the value of \glsdescwidth at the start of the glossary according to the -number of columns provided by the style. The calculations are performed by the -following commands: -


    \glslongextraSetDescWidth  \glslongextraSetDescWidth

    -

    -This is used by the styles that have a name and description column. The value of -\glsdescwidth is computed as: +

    Remember to group the value if it contains any commas: + + +

    -
    -\glsdescwidth = \linewidth- 4\tabcolsep- W
-
    -

    where W is a guess at the width of the name column. This is first set to the width of -the name column header:

    -
    -\settowidth{width}{\glslongextraHeaderFmt\entryname} +
    +\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra}
    -
    If any names in that column are larger than this, then you need to specify the widest -name using: -


    \glslongextraSetWidest  \glslongextraSetWidest{widest name}

    -

    -or -


    \glslongextraUpdateWidest  \glslongextraUpdateWidest{text}

    -

    -These work like the analogous commands \glssetwidest and \glsupdatewidest -provided with the alttree style, but in this case there’s no hierarchy. The default -widest name is obtained from the alttree top-level name if set, otherwise it’s empty, -so you can use bib2gls’s set-widest option. If you have the entry counter enabled, -you will need to include this with the name for the extra material to be taken into -account. -

    The name isn’t shown for child entries by default, but if you change this and you -want to use bib2gls’s set-widest option (for bib2gls v1.8+) then you need to -redefine: +

    +

    Note that the inline style is dealt with slightly differently. The original definition +provided by the glossary-inline package uses \glspostdescription at the end of the +glossary (not after each entry description) within the definition of \glspostinline. +The style modification changes this so that \glspostinline just does a full stop +followed by space factor adjustment, and the description \glsinlinedescformat and +sub-entry description formats \glsinlinesubdescformat are redefined to include +\glsxtrpostdescription (not \glspostdescription). This means that the +modified inline style isn’t affected by the nopostdot option, but the post-description +category hook can still be used. +

    The tabular-like styles, such as long are adjusted so that the \ifglsnogroupskip +conditional (set with nogroupskip) is moved outside of the definition of +\glsgroupskip to avoid problems that cause an “Incomplete \iftrue” error with +\printunsrtglossary and \printnoidxglossary. This means that if you want to +change this conditional using \setupglossaries or using the nogroupskip option in +\printglossary, \printnoidxglossary or \printunsrtglossary, you must also +reset the glossary style. +

    As from version 1.21, the hard-coded \space before the number list in many of +the predefined styles is replaced with +


    \glsxtrprelocation

    +

    +This just defaults to \space but may be redefined as required. For example: -


    \glslongextraUpdateWidestChild  \glslongextraUpdateWidestChild{level} +

    +
    +\renewcommand{\glsxtrprelocation}{\dotfill} +
    +

    +

    The list styles use +


    \glslistprelocation

    +

    +(which defaults to \glsxtrprelocation) for top-level items and +


    \glslistchildprelocation

    +

    +(which defaults to \glslistprelocation) for child items. +

    As from v1.31, the description (including the post-description hook) is governed +by: +


    \glslistdesc{label}

    +

    +for the list and altlist styles (but not the listdotted variations). +

    For just the list style and its letter group variations (not the altlist or listdotted +variations) the number list for child entries is followed by +


    \glslistchildpostlocation

    +

    +which defaults to a full stop. +

    The default value of \glslistdottedwidth is changed so that it’s set at the start +of the document (if it hasn’t been changed in the preamble). This should +take into account situations where \hsize isn’t set until the start of the +document. +

    The separator between groups (if not nogroupskip) is now given by: +


    \glslistgroupskip

    +

    +This defaults to \indexspace with penalties to deter page breaks. This command +isn’t used if nogroupskip is set. +

    The glossary-tree package introduced new commands in v4.22, \glstreegroupheaderfmt +and \glstreenavigationfmt, which are used to format the letter group +headings and the navigation elements for the appropriate styles. These two +new commands are defined in terms of \glstreenamefmt since that was +the command originally used for the group headings and navigation. This +now allows these different elements to be defined independently, but the +most common redefinition is for \glstreenamefmt to remove the bold in +the name. If the bold is still required for the group heading and navigation +elements, then both other commands also need redefining. To simplify matters, if {\glstreenamefmt has been defined, as from v1.31 glossaries-extra-stylemods +defines: +


    \glstreedefaultnamefmt{text}

    -

    -This does nothing by default, but if you are including the child names then you need -to redefine this command: -

    -
    -\renewcommand{\glslongextraUpdateWidestChild}[2]{% - 
     \glslongextraUpdateWidest{#2}% - 
    } -
    -

    -

    If you prefer to set an explicit width for the description column then you need to -redefine \glslongextraSetDescWidth. For example: +

    +which simply does \textbf{text} and redefines \glstreenamefmt, +\glstreegroupheaderfmt and \glstreenavigationfmt all in terms of +\glstreedefaultnamefmt. +

    This means that if you want to change all three to use a particular style you only +need to redefine \glstreedefaultnamefmt, but if you only want to redefine +\glstreenamefmt without affecting the other two commands, then you now +can. +

    The separator between groups without headers is given by: +


    \glstreegroupskip

    +

    +This defaults to just \indexspace without penalties. This command isn’t +used if nogroupskip is set. (The penalties introduced in v1.41 were moved to +\glstreeheadergroupskip in v1.42 as they are inappropriate when there’s no +header.) +

    The separator between groups with headers is now given by (as from +v1.42): +


    \glstreegroupheaderskip

    +

    +This defaults to \glstreegroupskip with penalties to deter page breaks after the +group heading. +

    The styles that display the group titles now use: +


    \glstreePreHeader{label}{title}

    +

    +where ⟨label⟩ is the group label and ⟨title⟩ is the group title. This does nothing by +default and is inserted before the group title. You can redefine it to add the group +title to the PDF bookmarks. For example, if the glossary title uses \chapter +then:

    -
    -\renewcommand{\glslongextraSetDescWidth}{% - 
      \setlength{\glsdescwidth}{0.6\linewidth}% +
    +\renewcommand{\glstreePreHeader}[2]{% + 
     \pdfbookmark[1]{#2}{\currentglossary.#1}%  
    }
    -

    -

    The styles that have a name, symbol and description, \glsdescwidth is set -with: -


    \glslongextraSymSetDescWidth  \glslongextraSymSetDescWidth

    -

    -This first uses \glslongextraSetDescWidth and then subtracts 2\tabcolsep and -the width of the symbol column header from \glsdescwidth. This assumes that the -symbol column header is larger than any of the symbols. If this isn’t appropriate then -you can redefine this command. For example: - - - -

    -
    -\renewcommand{\glslongextraSymSetDescWidth}{% - 
      \glslongextraSetDescWidth - 
      \addtolength{\glsdescwidth}{-3cm}% - 
    } -
    -

    or - - - -

    -
    -\renewcommand{\glslongextraSymSetDescWidth}{% - 
      \setlength{\glsdescwidth}{.5\linewidth}% - 
    } -
    -

    -

    For the styles that have a name, description and location column, \glsdescwidth -is set using: -


    \glslongextraLocSetDescWidth  \glslongextraLocSetDescWidth

    -

    -This uses \glslongextraSetDescWidth and then subtracts 2\tabcolsep and -\glspagelistwidth from \glsdescwidth. You can redefine this command to set -both \glsdescwidth and \glspagelistwidth if appropriate. -

    For the styles that have a name, description, symbol and location column, -\glsdescwidth is set using: -


    \glslongextraSymLocSetDescWidth  \glslongextraSymLocSetDescWidth -

    -

    -This uses \glslongextraSymSetDescWidth and then subtracts 2\tabcolsep and -\glspagelistwidth from \glsdescwidth. Again, you can redefine this command to -explicitly set both lengths. -

    In all cases, the top-level name is formatted according to: -


    \glslongextraNameFmt  \glslongextraNameFmt{

    will insert section-level bookmarks. The use of \currentglossary helps to provide +unique bookmark labels in the event of multiple glossaries. +

    The index-like and tree-like styles insert the pre-number list space with +


    \glstreeprelocation

    +

    +(which defaults to \glsxtrprelocation) for top-level items and +


    \glstreechildprelocation

    +

    +(which defaults to \glstreeprelocation) for child items. +

    As from version 1.31, the glossaries-extra-stylemods package also provides: +


    \glstreenonamedesc{label}

    -

    -This does

    -
    -\glsentryitem{

    +which is used by the treenoname styles to display the pre-description separator, the +description and the post-description hook. Similarly for the symbol: +


    \glstreenonamesymbol{label}\glstarget{}

    +

    +The above are just used for top-level entries. Child entries don’t have the name or +symbol displayed for the treenoname styles, so there’s only a command for the child +description: +


    \glstreenonamechilddesc{label}{\glossentryname{}

    +

    +

    For the tree styles (but not the treenoname or alttree styles), the description is +displayed using: +


    \glstreedesc{label}} -
    -
    which includes the entry counter (if enabled), the target and the post-name -link. -

    The top-level description is formatted according to: -


    \glslongextraDescFmt  \glslongextraDescFmt{}

    +

    +and the symbol with: +


    \glstreesymbol{label}

    -

    -This does \glossentrydesc{label} followed by the post-description hook. -

    The styles that have a symbol column format the symbol using: -


    \glslongextraSymbolFmt  \glslongextraSymbolFmt{

    +Again the above two commands are just for top-level entries. The child entries +use: +


    \glstreechilddesc{label}

    -

    -This just does \glossentrysymbol{label}. -

    The styles that have a location list column format the list using: -


    \glslongextraLocationFmt  \glslongextraLocationFmt{

    +for the description and +


    \glstreechildsymbol{label}{locations} -

    +class="cmtt-10">}

    +

    +for the symbol. As from version 1.41, there are now wrapper commands +for \glstreedesc and \glstreechilddesc that check for the description -

    -This just does ⟨locations⟩ and ignores the label. -

    The child entries have their name formatted according to: -


    \glslongextraSubNameFmt  \glslongextraSubNameFmt{level


    \glstreeDescLoc{label}{location}

    +

    +for top-level entries and +


    \glstreeChildDescLoc{label} -

    -

    -where ⟨level⟩ is the hierarchical level. This defaults to:

    -
    +class="cmtt-10">}{⟨location}

    +

    +for sub-entries. +

    If either the symbol or description is present these will use \glstreeprelocation +or \glstreechildprelocation, respectively. Otherwise, both will use (from +v1.42): +


    \glstreeNoDescSymbolPreLocation

    +

    +The default is a space. This means that you could have, say, a comma followed by a +space for terms that are simply an alias, but just have a space for terms that have a +description that ends with a full stop (or that just have a symbol without a +description) where the comma would be inappropriate. +

    Note that version 1.42 has corrected an error that was introduced to v1.41 that +caused the name to run into the location list if there was no symbol and no +description. +

    As from version 1.05, the glossaries-extra-stylemods package provides some +additional commands for use with the alttree style to make it easier to modify. These +commands are only defined if the glossary-tree package has already been loaded, +which is typically the case unless the notree option has been used when loading \glssubentryitem{label}\glstarget{label}{\strut} -

    -
    This includes the sub-entry counter (if enabled) and the target but doesn’t show the -name. The child description is formatted according to: -


    \glslongextraSubDescFmt  \glslongextraSubDescFmt{glossaries. +


    \gglssetwidest[level}{label} -

    -

    -which defaults to just \glslongextraDescFmt{label} -

    The child symbol is formatted (where appropriate) according to: -


    \glslongextraSubSymbolFmt  \glslongextraSubSymbolFmt{]{name}

    +

    +(New to version 1.21.) This is like \glssetwidest (provided by glossary-tree) but +performs a global assignment. +


    \eglssetwidest[level}{label} -

    -

    -This just does \glslongextraSymbolFmt{label} by default. -

    The styles that have a location list column format the list for child entries -using: -


    \glslongextraLocationFmt  \glslongextraSubLocationFmt]{name}

    +

    +This is like \glssetwidest but performs a protected expansion on ⟨name⟩. This has a +localised effect. For a global setting, use +


    \xglssetwidest[level{label} -{locations]{name}

    -

    -This just does ⟨locations⟩ and ignores the level and label. -

    The letter group headings are formatted according to: -


    \glslongextraGroupHeading  \glslongextraGroupHeading{n}{label} -

    -

    -which does nothing by default. The first argument ⟨n⟩ is the number of columns in the -table. The second argument ⟨label⟩ is the group label (not the title, although they may -happen to be the same). -

    This can be redefined to show the group heading. For example: +

    +The following only set the value if ⟨name⟩ is wider than the current value (new to +version 1.23). Local update: +


    \glsupdatewidest[level]{name}

    +

    +Global update: +


    \gglsupdatewidest[level]{name}

    +

    +Locale update (expands ⟨name⟩): +


    \eglsupdatewidest[level]{name}

    +

    +Global update (expands ⟨name⟩): -

    -
    -\renewcommand*{\glslongextraGroupHeading}[2]{% - 
      \glsxtrgetgrouptitle{#2}{\thisgrptitle}% - 
      \glslongextraHeaderFmt{\thisgrptitle}% - 
      \tabularnewline - 
      \noalign{\vskip\normalbaselineskip}% - 
    } -
    -

    This ignores the first argument and just puts the group title in the first column -formatted according to \glslongextraHeaderFmt (to match the column -header). -

    Remember that you can also adjust the styles through category attributes. The -name column’s title is given by \entryname, the description column’s title is given by +


    \xglsupdatewidest[level]{name}

    +

    +

    The widest entry value can later be retrieved using +


    \glsgetwidestname

    +

    +for the top-level entries and +


    \glsgetwidestsubname{level}

    +

    +for sub-entries, where ⟨level⟩ is the level number. +

    Note that if you are using bib2gls, you can use the resource option set-widest +which will try to determine the widest name of all the selected entries. This isn’t +guaranteed to work as it may depend on fonts or commands that bib2gls +can’t replicate, but it should be suitable for names that just consist of text, +and can be more efficient than iterating over all the defined entries using +TEX. +

    The command \glsfindwidesttoplevelname provided by glossary-tree has a +CamelCase synonym: +


    \glsFindWidestTopLevelName[glossary list]

    +

    +Similar commands are also provided: +


    \glsFindWidestUsedTopLevelName[glossary list]

    +

    +This has an additional check that the entry has been used. Naturally this is only +useful if the glossaries that use the alttree style occur at the end of the document. +This command should be placed just before the start of the glossary. (Alternatively, +place it at the end of the document and save the value in the auxiliary file for the +next run.) +


    \glsFindWidestUsedAnyName[glossary list]

    +

    +This is like the previous command but if doesn’t check the parent key. This is useful if +all levels should have the same width for the name. +


    \glsFindWidestAnyName[glossary list]

    +

    +This is like the previous command but doesn’t check if the entry has been +used. +


    \glsFindWidestUsedLevelTwo[glossary list]

    +

    +This is like \glsFindWidestUsedTopLevelName but also sets the first two sub-levels +as well. Any entry that has a great-grandparent is ignored. +


    \glsFindWidestLevelTwo[glossary list]

    +

    +This is like the previous command but doesn’t check if the entry has been +used. +


    \glsFindWidestUsedAnyNameSymbol[glossary list]{register} +

    + + + +

    +This is like \glsFindWidestUsedAnyName but also measures the symbol. The length +of the widest symbol is stored in ⟨register⟩. +


    \glsFindWidestAnyNameSymbol[glossary list]{register}

    +

    +This is like the previous command but it doesn’t check if the entry has been +used. +


    \glsFindWidestUsedAnyNameSymbolLocation[glossary list]{symbol \descriptionname and (where present) the symbol column’s title is given by +class="cmitt-10">register⟩}{location register}

    +

    +This is like \glsFindWidestUsedAnyNameSymbol but also measures the number list. +This requires \glsentrynumberlist (see the glossaries user manual). The length of +the widest symbol is stored in ⟨symbol register⟩ and the length of the widest number +list is stored in ⟨location register⟩. +


    \glsFindWidestAnyNameSymbolLocation[glossary list]{symbol \symbolname, as for the other long styles that have headers. -

    -
    long-name-desc This is like the longragged-booktabs style but doesn’t show the - location list (regardless of the nonumberlist option). The name is shown in - the first column and the description in the second. -

    The symbol is not displayed. The header row is produced with: -


    \glslongextraNameDescHeader  \glslongextraNameDescHeader

    -

    - This essentially uses the same code as for longragged-booktabs but makes it - easier to adjust the header without having to define a new style. This is defined - as: +class="cmitt-10">register⟩}{location register}


    +

    +This is like the previous command but it doesn’t check if the entry has been +used. +


    \glsFindWidestUsedAnyNameLocation[glossary list]{register} +

    +

    +This is like \glsFindWidestUsedAnyNameSymbolLocation but doesn’t measure the +symbol. The length of the widest number list is stored in ⟨register⟩. +


    \glsFindWidestAnyNameLocation[glossary list]{register}

    +

    +This is like the previous command but doesn’t check if the entry has been +used. +

    The layout of the symbol, description and number list is governed by +


    \glsxtralttreeSymbolDescLocation{label}{number list}

    +

    +for top-level entries and +


    \glsxtralttreeSubSymbolDescLocation{label}{number list}

    +

    +for sub-entries. +

    There is now a user level command that performs the initialisation for the alttree +style: +


    \glsxtralttreeInit

    +

    +

    The paragraph indent for subsequent paragraphs in multi-paragraph descriptions +is provided by the length +


    \glsxtrAltTreeIndent

    +

    + + + +

    For additional commands that are available with the alttree style, +see the documented code (glossaries-extra-code.pdf). See also the +accompanying sample files sample-alttree.tex, sample-alttree-sym.tex and +sample-alttree-marginpar.tex.

    -
    - \glslongextraNameDescTabularHeader\endhead -  
    \glslongextraNameDescTabularFooter\endfoot -
    -

    where: -


    \glslongextraNameDescTabularHeader  \glslongextraNameDescTabularHeader -

    -

    - sets up the header and -


    \glslongextraNameDescTabularFooter  \glslongextraNameDescTabularFooter -

    -

    - sets up the footer. If you have setup the tabular version of this style then the - above two commands are used at the start and end of the tabular environment - (and \glslongextraNameDescHeader isn’t used). -

    For example, to simply remove the header and footer (for the default longtable - version of the style): +

    +

    Top

    3. New Glossary Styles

    +

    The glossaries-extra package comes with some new styles. The associated style +package needs to be loaded. This can be done with \usepackage but it’s simpler to +use the stylemods option. +

    +

    Top

    3.1 glossary-bookindex package

    +

    As from v1.21, glossaries-extra has a new supplementary package glossary-bookindex +which provides the glossary style bookindex. This is very similar to the mcolindexgroup +style but is designed for indexes, so by default only the name and location list +are displayed. You can either load this package explicitly and then set the +style:

    -
    - \renewcommand{\glslongextraNameDescHeader}{} +
    +\usepackage{glossaries-extra} + 
    \usepackage{glossary-bookindex} + 
    \setglossarystyle{bookindex}
    -

    Or to change the name alignment to centred: +

    or use both the stylemods and style options:

    -
    - \renewcommand{\glslongextraNameAlign}{c} +
    +\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra}
    -

    -

    -
    long-name-desc-loc This is like the long-name-desc style but has a third column for - the location list. The longtable header is given by: -


    \glslongextraNameDescLocationHeader  \glslongextraNameDescLocationHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraNameDescLocationTabularHeader  \glslongextraNameDescLocationTabularHeader -

    -

    - and -


    \glslongextraNameDescLocationTabularFooter  \glslongextraNameDescLocationTabularFooter -

    -

    -

    -
    long-desc-name This is like the long-name-desc style but swaps the columns. Note - that if the entry counter is displayed it will appear at the start of the - second column by default. The longtable header is formatted according - to: -


    \glslongextraDescNameHeader  \glslongextraDescNameHeader

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraDescNameTabularHeader  \glslongextraDescNameTabularHeader -

    -

    - and -


    \glslongextraDescNameTabularFooter  \glslongextraDescNameTabularFooter -

    -

    +

    The bookindex style only supports a maximum hierarchical level of 2 (top-level, +level 1 and level 2). It’s primarily designed for use with bib2gls. It may be used +with other indexing options, but some features may not be present and UTF-8 +characters may cause a problem with non-Unicode engines in letter group +headings or PDF bookmarks. (bib2gls uses numeric identifies by default to +avoid these problems. If numbers show up in the group headings instead of +the appropriate characters, check that you have used the record package +option.) +

    The number of columns is given by +


    \glsxtrbookindexcols

    +

    +which defaults to 2. +

    This style uses the multicols environment. If the command +


    \glsxtrbookindexcolspread

    +

    +isn’t empty then it’s supplied as the optional argument following \begin{multicols} +{n}. You can switch from multicols to multicols* by redefining +


    \glsxtrbookindexmulticolsenv

    +

    +For example -

    -
    long-loc-desc-name This has three columns containing the location list, - description and name. The longtable header is formatted according - to: -


    \glslongextraLocationDescNameHeader  \glslongextraLocationDescNameHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraLocationDescNameTabularHeader  \glslongextraLocationDescNameTabularHeader -

    -

    - and -


    \glslongextraLocationDescNameTabularFooter  \glslongextraLocationDescNameTabularFooter -

    -

    -

    -
    long-name-desc-sym This is has three columns, with the name in the first, the - description in the second and the symbol in the third. -

    The longtable header row is produced with: -


    \glslongextraNameDescSymHeader  \glslongextraNameDescSymHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraNameDescSymTabularHeader  \glslongextraNameDescSymTabularHeader -

    -

    - and -


    \glslongextraNameDescSymTabularFooter  \glslongextraNameDescSymTabularFooter -

    -

    -

    -
    long-name-desc-sym-loc This is has four columns, with the name in the first, the - description in the second, the symbol in the third and the location list in the - fourth. -

    The longtable header row is produced with: - - - -


    \glslongextraNameDescSymLocationHeader  \glslongextraNameDescSymLocationHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraNameDescSymLocationTabularHeader  - \glslongextraNameDescSymLocationTabularHeader

    -

    - and -


    \glslongextraNameDescSymLocationTabularFooter  - \glslongextraNameDescSymLocationTabularFooter

    -

    -

    -
    long-name-sym-desc This is like the long-name-desc-sym but the second and third - column are swapped. The longtable header row is given by: -


    \glslongextraNameSymDescHeader  \glslongextraNameSymDescHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraNameSymDescTabularHeader  \glslongextraNameSymDescTabularHeader -

    -

    - and -


    \glslongextraNameSymDescTabularFooter  \glslongextraNameSymDescTabularFooter -

    -

    -

    -
    long-name-sym-desc-loc This is like the long-name-desc-sym-loc but the second and - third column are swapped. The longtable header row is given by: -


    \glslongextraNameSymDescLocationHeader  \glslongextraNameSymDescLocationHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraNameSymDescLocationTabularHeader  - \glslongextraNameSymDescLocationTabularHeader

    - - - -

    - and -


    \glslongextraNameSymDescLocationTabularFooter  - \glslongextraNameSymDescLocationTabularFooter

    -

    -

    -
    long-sym-desc-name This has the symbol in the first column, the description in the - second and the name in the third. The longtable header row is given - by: -


    \glslongextraSymDescNameHeader  \glslongextraSymDescNameHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraSymDescNameTabularHeader  \glslongextraSymDescNameTabularHeader -

    -

    - and -


    \glslongextraSymDescNameTabularFooter  \glslongextraSymDescNameTabularFooter -

    -

    -

    -
    long-loc-sym-desc-name This has the location list in the first column, symbol in the - second column, the description in the third and the name in the fourth. The - longtable header row is given by: -


    \glslongextraLocationSymDescNameHeader  \glslongextraLocationSymDescNameHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraLocationSymDescNameTabularHeader  - \glslongextraLocationSymDescNameTabularHeader

    -

    - and -


    \glslongextraLocationSymDescNameTabularFooter  - \glslongextraLocationSymDescNameTabularFooter

    -

    - - - -

    -
    long-desc-sym-name This has the description in the first column, the symbol in the - second and the name in the third. The longtable header row is given - by: -


    \glslongextraDescSymNameHeader  \glslongextraDescSymNameHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraDescSymNameTabularHeader  \glslongextraDescSymNameTabularHeader -

    -

    - and -


    \glslongextraDescSymNameTabularFooter  \glslongextraDescSymNameTabularFooter -

    -

    -

    -
    long-loc-desc-sym-name This has the location list in the first column, the description - in the second column, the symbol in the third and the name in the fourth. The - longtable header row is given by: -


    \glslongextraLocationDescSymNameHeader  \glslongextraLocationDescSymNameHeader -

    -

    - which similarly defined in terms of the commands used for the tabular - version: -


    \glslongextraLocationDescSymNameTabularHeader  - \glslongextraLocationDescSymNameTabularHeader

    -

    - and -


    \glslongextraLocationDescSymNameTabularFooter  - \glslongextraLocationDescSymNameTabularFooter

    -

    -
    +
    +\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*} +
    +

    +

    Each top-level entry is displayed using +


    \glsxtrbookindexname{label}

    +

    +where the entry is identified by ⟨label⟩. This just does \glossentryname{label} by +default. For example, if you want the symbol to be included: -

    -

    Top

    2.11 glossary-topic package

    -

    As from version 1.40, the glossaries-extra package comes with the supplementary -package glossary-topic that provides glossary styles designed for hierarchical glossaries -where the top-level entries are topic titles. This package automatically loads the -multicols package. If the glossary-tree package is also loaded then commands like -\glssetwidest can be used on these styles in much the same way as for the alttree -style. If a widest value isn’t set then these styles behave more like the tree -style. -

    -topic
    This style is similar to the tree style but the indentation doesn’t start until - the second sub-item level. The top-level entries have the name displayed - in a larger font with the description following in a new paragraph. This - style doesn’t support the nogroupskip setting. -
    -topicmcols
    This style is like the topic style but the sub-entries are placed inside a - multicols environment. The environment name is supplied in the value of the - command: -


    \glstopicColsEnv  \glstopicColsEnv

    -

    - You can change this to the starred form. For example: +

    +\renewcommand*{\glsxtrbookindexname}[1]{% + 
     \glossentryname{#1}% + 
     \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}% + 
    } +
    +

    or if you want the description (if set):

    -
    - \renewcommand{\glstopicColsEnv}{multicols*} +
    +\renewcommand*{\glsxtrbookindexname}[1]{% + 
     \glossentryname{#1}% + 
     \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}% + 
    }
    -

    The number of columns is given by the command: -


    \glstopicCols  \glstopicCols

    -

    - The default value is 2.

    -

    Both styles use the following commands. -


    \glstopicParIndent  \glstopicParIndent

    -

    -This command is a length that’s used for the paragraph indentation in any -multi-paragraph description for top-level entries, but not for the first paragraph (at -the start of the description) which isn’t indented. -


    \glstopicSubIndent  \glstopicSubIndent

    -

    -This command is a length that’s used to calculate the hanging indentation for -sub-entries. The level 1 sub-entries don’t indent the name. Level n sub-entries have -the name indented by (n- 1)×\glstopicSubIndent. The hanging indent depends on -whether or not a widest name has been set for the level. -


    \glstopicInit  \glstopicInit

    -

    -Hook used at the start of the glossary. Does nothing by default. -

    Although the styles don’t support letter groups by default, if you have many -topics (top-level entries) and you feel that it would help the reader to divide them up -into headed letter groups, you can redefine: -


    \glstopicGroupHeading  \glstopicGroupHeading{group label

    (which picks up the post-description hook). +

    Alternatively you can use the \glsxtrpostnamecategory⟩ hook to append +information after the name according to the entry’s category. +

    Sub-entries are displayed using +


    \glsxtrbookindexsubname{label}

    -

    -This does nothing by default. If you want to redefine it, you can fetch the -title corresponding to the group label with \glsxtrgetgrouptitle. For -example: +

    +which just defaults to \glsxtrbookindexname{label}. +

    The separator used before the location list for top-level entries is given +by +


    \glsxtrbookindexprelocation{label}

    +

    +where ⟨label⟩ is the entry’s label. This checks if the location field has been set. If it +has, it does

    -
    -\renewcommand*{\glstopicGroupHeading}[1]{% - 
      \glsxtrgetgrouptitle{#1}{\thisgrptitle}% - 
      \section*{\thisgrptitle}% - 
    } +
    +,\glsxtrprelocation
    -

    Remember that if you use

    otherwise it just does \glsxtrprelocation (which defaults to \space). If you’re not +using bib2gls, you will need the --group (or -g) switch to -support this. -


    \glstopicItem  \glstopicItem{bib2gls, the location field won’t be set. +

    The separator used before the location list for sub-entries is given by +


    \glsxtrbookindexsubprelocation{label}

    +

    +which defaults to \glsxtrbookindexprelocation{label}. +

    The actual location list is encapsulated with: +


    \glsxtrbookindexlocation{label}{location list}

    -

    -Used to format the name, symbol, description and location list for the top-level -entries. This starts with a paragraph break followed by: -


    \glstopicPreSkip  \glstopicPreSkip

    -

    -which defaults to \medskip. There is then a hook: -


    \glstopicMarker  \glstopicMarker{

    +for top-level entries and +


    \glsxtrbookindexsublocation{label}{location list}

    -

    -which does nothing by default, but may be redefined. For example, to add a line to -the table of contents. The name and symbol are set in the form of a title -using: -


    \glstopicTitle  \glstopicTitle{label

    +for sub-entries. These both just do ⟨location list⟩ by default. +

    The separator used between a top-level parent and child entry is given +by +


    \glsxtrbookindexparentchildsep

    +

    +This defaults to \nopagebreak. +

    The separator used between a sub-level parent and child entry is given +by +


    \glsxtrbookindexparentsubchildsep

    +

    +This defaults to \glsxtrbookindexparentchildsep. +

    The separator between top-level entries is given by +


    \glsxtrbookindexbetween{label1}{label2}

    -

    -This uses \Glossentryname which converts the first letter to upper case. If there’s a -symbol, this is added in parentheses. Both name and symbol (if present) are -encapsulated by -


    \glstopicTitleFont  \glstopicTitleFont{text

    +This comes after the entry given by ⟨label1⟩, if the entry has no children, or after the +last descendent otherwise, so it always comes immediately before the entry given by +⟨label2⟩ unless the entry occurs at the start of a group. This does nothing by +default. +

    The separator between two level 1 entries is given by +


    \glsxtrbookindexsubbetween{label1}{label2}

    -This uses a bold, large font by default. -

    If the entry has the description key set (tested with \ifglshasdesc) then a -paragraph break is inserted followed by: -


    \glstopicMidSkip  \glstopicMidSkip

    -

    -which defaults to \smallskip. This is followed by the description which is formatted -according to: -


    \glstopicDesc  \glstopicDesc{label

    The separator between two level 2 entries is given by +


    \glsxtrbookindexsubsubbetween{label1}{label2}

    +

    +At the end of each letter group, the following hooks are done in order: +


    \glsxtrbookindexsubsubatendgroup{sub-sub-label}

    -

    -This just does \Glossentrydesc{label} followed by the post-description -hook. -

    A paragraph break followed by: -


    \glstopicPostSkip  \glstopicPostSkip

    -

    -comes next regardless of whether or not the description was displayed. This defaults -to \smallskip. This is then followed by: -


    \glstopicLoc  \glstopicLoc{label}{location list}

    -

    -which may be used to display the location list, but does nothing by default. -

    The sub-entries first set up the paragraph and hanging indentations using: -


    \glstopicAssignSubIndent  \glstopicAssignSubIndent{level}

    -

    -This uses: -


    \glstopicAssignWidest  \glstopicAssignWidest{level}

    -

    -to determine if a widest name has been set for the given level. -

    The sub-entry has its information displayed using: -


    \glstopicSubItem  \glstopicSubItem{level}{label}{location} -

    -

    -This encapsulates the name with: -


    \glstopicSubNameFont  \glstopicSubNameFont{text}

    -

    -By default this just uses \textbf. This is followed by: -


    \glstopicSubItemSep  \glstopicSubItemSep

    -

    -which defaults to \quad. The name and separator are passed in the ⟨text⟩ argument -of: -


    \glstopicSubItemBox  \glstopicSubItemBox{level}{text

    +


    \glsxtrbookindexsubatendgroup{sub-label}

    -

    -If a widest name was set for the given level, this will put ⟨text⟩ inside a box of that -width otherwise it just does ⟨text⟩. -

    This is followed by the symbol in parentheses if set. Then, if the description is set, -the description and post-description hook are displayed followed by: -


    \glstopicSubPreLocSep  \glstopicSubPreLocSep

    -

    -(This command isn’t used if the description isn’t set.) -

    Finally the location list is displayed using: -


    \glstopicSubLoc  \glstopicSubLoc{

    +


    \glsxtrbookindexatendgroup{label}{location}

    -

    -which just does ⟨location⟩ by default. -

    -

    -

    Top

    2.12 Glossary Style Modifications

    -

    The glossaries-extra-stylemods package (more conveniently loaded through the +

    +where ⟨sub-sub-label⟩ is the label of the last level 2 entry, ⟨sub-label⟩ is the label of the +last level 1 entry and ⟨label⟩ is the label of the last level 0 entry. +

    For example, the resource option seealso=omit instructs bib2gls to omit the glossaries-extra stylemods option) modifies some of the predefined styles that are -provided with the glossaries package. These modifications are described in more detail -in §2.12.3 The glossaries-extra-stylemods Package. +class="cmtt-10">seealso cross-reference from the location list. (The see cross-reference will still be +added unless you also have see=omit.) The seealso cross-reference can instead be +appended after the child entries using: -

    The glossaries package tries to determine the group title from its label by first -checking if \labelgroupname exists. If it doesn’t exist, then the title is assumed to be -the same as the label. For example, when typesetting the “A” letter group, glossaries -first checks if \Agroupname exists. This could potentially cause conflict with another -package that may have some other meaning for \Agroupname, so glossaries-extra first -checks for the existence of the internal command \glsxtr@grouptitle@label⟩ -which shouldn’t clash with another package. You can set the group title -using -


    \glsxtrsetgrouptitle  \glsxtrsetgrouptitle{label +
    +\renewcommand{\glsxtrbookindexatendgroup}[1]{% + 
      \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}% + 
    } + 
    \renewcommand{\glsxtrbookindexbetween}[2]{% + 
      \glsxtrbookindexatendgroup{#1}% + 
    }% + 
    \renewcommand{\glsxtrbookindexsubatendgroup}[1]{% + 
      \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}% + 
    } + 
    \renewcommand{\glsxtrbookindexsubbetween}[2]{% + 
      \glsxtrbookindexsubatendgroup{#1}% + 
    } + 
    \renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{% + 
      \glsxtrifhasfield{seealso}{#1}% + 
      {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}% + 
    } + 
    \renewcommand{\glsxtrbookindexsubsubbetween}[2]{% + 
      \glsxtrbookindexsubsubatendgroup{#1}% + 
    } +
    +

    This uses \glstreesubitem and \glstreesubsubitem to indent the cross-reference +according to the next level down, so the cross-reference for a top-level entry is aligned +with the sub-entries, and a level 1 entry has its cross-reference aligned with +sub-sub-entries. In the event that a level 2 entry has a cross-reference, this is +indented a bit further (but it won’t be aligned with any deeper level as the bookindex +style only supports a maximum of two sub-levels). +

    The bookindex style uses group headings. (If you use bib2gls remember to invoke +it with the --group or -g switch.) The heading will use +


    \glsxtrbookindexbookmark{group title}{titlename}

    -

    -For example: +

    +If \pdfbookmark has been defined, this will use that command to bookmark the +group title. If section=chapter is set (default if chapters are defined) then this +uses level 1 otherwise it uses level 2. You can redefine this command if this +isn’t appropriate. If \pdfbookmark hasn’t been defined, this command does +nothin. +

    The group heading is formatted according to +


    \glsxtrbookindexformatheader{group title}

    +

    +which is defined as

    -
    -\glsxtrsetgrouptitle{A}{A (a)} +
    +\newcommand*{\glsxtrbookindexformatheader}[1]{% + 
      \par{\centering\glstreegroupheaderfmt{#1}\par}% + 
    }
    -

    This uses a global assignment. If you need to scope the change you can -use -


    \glsxtrlocalsetgrouptitle  \glsxtrlocalsetgrouptitle{label}{title} -

    -

    -

    -

    -

    Top

    2.12.1 Style Hooks

    -

    The commands \glossentryname and \glossentrydesc are modified to take into -account the glossname, glossdesc and glossdescfont attributes (see §5 Categories). This -means you can make simple case-changing modifications to the name and description -without defining a new glossary style. -

    If you want to adapt a style to use another field instead of name, you can -use -


    \glossentrynameother  \glossentrynameother{

    where \glstreegroupheaderfmt is provided by the glossary-tree package, which is +automatically loaded. Note that the entry names aren’t encapsulated with +\glstreenamefmt. +

    The glossary-bookindex package provides some supplementary commands that +aren’t used by default, but may be used when adjusting the style. These commands +should only be used within one of the \print…glossary commands. (That is, they +should only be used in glossary styles.) +


    \glsxtrbookindexmarkentry{label}{field}

    -

    -This behaves just like \glossentryname (that is, it obeys glossname, glossnamefont or -\glsnamefont and uses the post-name hook) but it uses the given ⟨field⟩ instead of -name. The ⟨field⟩ argument must be the internal field name (for example desc rather -than description). See the key to field mappings table in the glossaries user -manual. -

    There is a hook after \glossentryname and \Glossentryname: -


    \glsxtrpostnamehook  \glsxtrpostnamehook{

    +This writes information to the .aux file that can be read on the next run to obtain +the first and last entry on each page of the glossary. +

    You can display the first entry associated with the current page using: +


    \glsxtrbookindexfirstmark

    +

    +and the last entry associated with the current page using: +


    \glsxtrbookindexlastmark

    +

    +These do nothing if there are no entries marked on the current page (or if the +document build isn’t up to date). +

    The entry is formatted using: +


    \glsxtrbookindexfirstmarkfmt{label}

    -

    -By default this checks the indexname attribute. If the attribute exists for the -category to which the label belongs, then the name is automatically indexed -using -


    \glsxtrdoautoindexname{

    +for the first instance and +


    \glsxtrbookindexlastmarkfmt{label}{indexname}

    -

    -See §7 Auto-Indexing for further details. -

    As from version 1.04, the post-name hook \glsxtrpostnamehook will also use -\glsxtrpostnamecategory⟩ if it exists. You can use \glscurrententrylabel to -obtain the entry label with the definition of this command. For example, -suppose you are using a glossary style the doesn’t display the symbol, you can -insert the symbol after the name for a particular category, say, the “symbol” -category: +class="cmtt-10">}


    +

    +for the last. +

    These commands are designed for use in page headers or footers where the page +number is stable. For example, \glsxtrbookindexname can be redefined to mark the +current entry:

    -
    -\newcommand*{\glsxtrpostnamesymbol}{\space - 
     (\glsentrysymbol{\glscurrententrylabel})} -
    -

    For convenience, as from v1.31, you can use -


    \glsdefpostname  \glsdefpostname{category}{definition}

    -

    -This is simply a shortcut for:

    -
    -\csdef{glsxtrpostnamecategory}{definition} +
    +\renewcommand{\glsxtrbookindexname}[1]{% + 
      \glsxtrbookindexmarkentry{#1}% + 
      \glossentryname{#1}% + 
    }
    -
    Note that it doesn’t check if the command has already been defined. -

    As from version 1.25, the post-name hook also does -


    \glsextrapostnamehook  \glsextrapostnamehook{label}

    -

    -(before \glsxtrpostnamecategory⟩) to allow for additional non-category related code. -This does nothing by default. -

    The post-description code used within the glossary is modified so that it also -does -


    \glsxtrpostdescription  \glsxtrpostdescription

    -

    -This occurs before the original \glspostdescription, so if the nopostdot=false -option is used, it will be inserted before the terminating full stop. -

    This new command will do \glsxtrpostdesccategory⟩ if it exists, where -⟨category⟩ is the category label associated with the current entry. For example -\glsxtrpostdescgeneral for entries with the category set to general or -\glsxtrpostdescacronym for entries with the category set to acronym. For -convenience, as from v1.31, you can use -


    \glsdefpostdesc  \glsdefpostdesc{category}{definition}

    -

    -This is simply a shortcut for:

    -
    +

    If you only want to mark the top-level entries, remember to redefine \csdef{glsxtrpostdesccategory}{definition} -

    -
    Note that it doesn’t check if the command has already been defined. -

    Since both \glossentry and \subglossentry set -


    \glscurrententrylabel  \glscurrententrylabel

    - - - -

    -to the label for the current entry, you can use this within the definition of these -post-description hooks if you need to reference the label. -

    For example, suppose you want to insert the plural form in brackets after the -description in the glossary, but only for entries in the general category, then you could -do: +class="cmtt-10">\glsxtrbookindexsubname as it defaults to \glsxtrbookindexname:

    -
    -\renewcommand{\glsxtrpostdescgeneral}{\space - 
     (plural: \glsentryplural{\glscurrententrylabel})} +
    +\renewcommand{\glsxtrbookindexsubname}[1]{% + 
      \glossentryname{#1}% + 
    }
    -

    This means you don’t have to define a custom glossary style, which you may find -more complicated. (It also allows more flexibility if you decide to change the -underlying glossary style.) -

    This feature can’t be used for glossary styles that ignore \glspostdescription or if -you redefine \glspostdescription without including \glsxtrpostdescription. -(For example, if you redefine \glspostdescription to do nothing instead of using -the nopostdot option to suppress the terminating full stop.) See §2.12.3 The -glossaries-extra-stylemods Package to patch the predefined styles provided by glossaries -that are missing \glspostdescription.
    -

    -

    -

    -

    Top

    2.12.2 Number List

    -

    The number list is now placed inside the argument of -


    \GlsXtrFormatLocationList  \GlsXtrFormatLocationList{number list} -

    -

    -This is internally used by \glossaryentrynumbers. The nonumberlist option -redefines \glossaryentrynumbers so that it doesn’t display the number list, but it -still saves the number list in case it’s required. -

    If you want to suppress the number list always use the nonumberlist option -instead of redefining \glossaryentrynumbers to do nothing.
    -

    -

    If you want to, for example, change the font for the entire number list -then redefine \GlsXtrFormatLocationList as appropriate. Don’t modify -\glossaryentrynumbers. -

    Sometimes users like to insert “page” or “pages” in front of the number list. This -is quite fiddly to do with the base glossaries package, but glossaries-extra provides a -way of doing this. First you need to enable this option and specify the text to display -using: -


    \GlsXtrEnablePreLocationTag  \GlsXtrEnablePreLocationTag{page}{pages} -

    -

    -where ⟨page⟩ is the text to display if the number list only contains a single location and -⟨pages⟩ is the text to display otherwise. For example: +

    +

    Then if you’re using fancyhdr you can set the page style to show the first and last +entry for the current page with:

    -
    -\GlsXtrEnablePreLocationTag{Page: }{Pages: } +
    +  \pagestyle{fancy}% + 
      \lhead{\thepage}% + 
      \lfoot{\glsxtrbookindexfirstmark}% + 
      \cfoot{}% + 
      \rfoot{\glsxtrbookindexlastmark}%
    -

    An extra run is required when using this command. -

    Use glsignore not @gobble as the format if you want to suppress the page -number (and only index the entry once).
    -

    -

    See the accompanying sample file sample-pages.tex. -

    Note that bib2gls can be instructed to insert a prefix at the start of non-empty -location lists, which can be used as an alternative to \GlsXtrEnablePreLocationTag. -

    +

    +

    -

    Top

    2.12.3 The glossaries-extra-stylemods Package

    -

    As from v1.02, glossaries-extra now includes the package glossaries-extra-stylemods that -will redefine the predefined styles to include the post-description hook (for those that -are missing it). You will need to make sure the styles have already been defined -before loading glossaries-extra. For example: +

    Top

    3.2 glossary-longextra package

    +

    As from version 1.37, the glossaries-extra package comes with the supplementary +package glossary-longextra that provides additional styles, listed below, that use the +longtable environment. If you know that your glossary won’t span more than a page +and you need to use it in a context that’s incompatible with longtable, you can +instead setup these styles to use tabular instead. In order to do this you must +use +


    \GlsLongExtraUseTabulartrue

    +

    +before the style is set. For example:

    -
    -\usepackage{glossaries-extra} - 
    \usepackage{glossary-longragged} - 
    \usepackage{glossaries-extra-stylemods} +
    +\GlsLongExtraUseTabulartrue + 
    \setglossarystyle{long-name-desc}
    -

    Alternatively you can load glossary-name.sty at the same time by passing ⟨name⟩ -as a package option to glossaries-extra-stylemods. For example: +

    or

    -
    -\usepackage{glossaries-extra} - 
    \usepackage[longragged]{glossaries-extra-stylemods} +
    +\GlsLongExtraUseTabulartrue + 
    \printunsrtglossary[style={long-name-desc}]
    -

    Another option is to use the stylemods key when you load glossaries-extra. You can -omit a value if you only want to use the predefined styles that are automatically -loaded by glossaries (for example, the long3col style): - - - -

    -
    -\usepackage[style=long3col,stylemods]{glossaries-extra} -
    -

    Or the value of stylemods may be a comma-separated list of the style package -identifiers. For example: +

    If you use this setting, you can change the default vertical alignment with: +


    \glslongextraTabularVAlign

    +

    +The default definition is c. +

    The column titles are formatted according to: +


    \glslongextraHeaderFmt{text}

    +

    +which simply does \textbf{text} by default. +

    The name column has the title given by \entryname and the column alignment is +given by: +


    \glslongextraNameAlign

    +

    +which expands to l (left) by default. +

    The symbol column (where applicable) has the title given by \symbolname and +the column alignment is given by: +


    \glslongextraSymbolAlign

    +

    +which expands to c (centred) by default. +

    The location list column (where applicable) has the title given by \pagelistname +and the column alignment is given by: +


    \glslongextraLocationAlign

    +

    +which expands to

    -
    -\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra} +
    +>{\raggedright}p{\glspagelistwidth}
    -

    Remember to group the value if it contains any commas: +

    by default. (Ragged-right paragraph, \glspagelistwidth is defined in glossary-long, +which is automatically loaded.) +

    The description column has the title given by \descriptionname and the column +alignment is given by: +


    \glslongextraDescAlign

    +

    +which expands to

    -
    -\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra} +
    +>{\raggedright}p{\glsdescwidth}
    -

    -

    Note that the inline style is dealt with slightly differently. The original definition -provided by the glossary-inline package uses \glspostdescription at the end of the -glossary (not after each entry description) within the definition of \glspostinline. -The style modification changes this so that \glspostinline just does a full stop -followed by space factor adjustment, and the description \glsinlinedescformat and -sub-entry description formats \glsinlinesubdescformat are redefined to include -\glsxtrpostdescription (not \glspostdescription). This means that the -modified inline style isn’t affected by the nopostdot option, but the post-description -category hook can still be used. -

    The tabular-like styles, such as long are adjusted so that the \ifglsnogroupskip -conditional (set with nogroupskip) is moved outside of the definition of -\glsgroupskip to avoid problems that cause an “Incomplete \iftrue” error with -\printunsrtglossary and \printnoidxglossary. This means that if you want to -change this conditional using \setupglossaries or using the nogroupskip option in +

    by default. (Ragged-right paragraph, \glsdescwidth is defined in glossary-long, +which is automatically loaded.) +

    Unlike the long styles provided by the base glossaries package, these new styles try +to determine the value of \glsdescwidth at the start of the glossary according to the +number of columns provided by the style. The calculations are performed by the +following commands: +


    \glslongextraSetDescWidth

    +

    +This is used by the styles that have a name and description column. The value of \printglossary, \printnoidxglossary or \printunsrtglossary, you must also -reset the glossary style. -

    As from version 1.21, the hard-coded \space before the number list in many of -the predefined styles is replaced with -


    \glsxtrprelocation  \glsxtrprelocation

    -

    -This just defaults to \space but may be redefined as required. For example: - - - +class="cmtt-10">\glsdescwidth is computed as:

    -
    -\renewcommand{\glsxtrprelocation}{\dotfill} +
    + \glsdescwidth = \linewidth- 4\tabcolsep- W +
    +

    +where W is a guess at the width of the name column. This is first set to the width of +the name column header:

    +
    +\settowidth{width}{\glslongextraHeaderFmt\entryname}
    -

    -

    The list styles use -


    \glslistprelocation  \glslistprelocation

    -

    -(which defaults to \glsxtrprelocation) for top-level items and -


    \glslistchildprelocation  \glslistchildprelocation

    -

    -(which defaults to \glslistprelocation) for child items. -

    As from v1.31, the description (including the post-description hook) is governed -by: -


    \glslistdesc  \glslistdesc{label If any names in that column are larger than this, then you need to specify the widest +name using: +


    \glslongextraSetWidest{widest name}

    -

    -for the list and altlist styles (but not the listdotted variations). -

    For just the list style and its letter group variations (not the altlist or listdotted -variations) the number list for child entries is followed by -


    \glslistchildpostlocation  \glslistchildpostlocation

    -

    -which defaults to a full stop. -

    The default value of \glslistdottedwidth is changed so that it’s set at the start -of the document (if it hasn’t been changed in the preamble). This should -take into account situations where \hsize isn’t set until the start of the -document. -

    The separator between groups (if not nogroupskip) is now given by: -


    \glslistgroupskip  \glslistgroupskip

    -

    -This defaults to \indexspace with penalties to deter page breaks. This command -isn’t used if nogroupskip is set. -

    The glossary-tree package introduced two new commands in glossaries version 4.22, -\glstreegroupheaderfmt and \glstreenavigationfmt, which are used to format -the letter group headings and the navigation elements for the appropriate styles. -These two new commands are defined in terms of \glstreenamefmt since that was -the command originally used for the group headings and navigation. This -now allows these different elements to be defined independently, but the -most common redefinition is for \glstreenamefmt to remove the bold in -the name. If the bold is still required for the group heading and navigation -elements, then both other commands also need redefining. To simplify matters, if -\glstreenamefmt has been defined, as from v1.31 glossaries-extra-stylemods -defines: -


    \glstreedefaultnamefmt  \glstreedefaultnamefmt{

    +or +


    \glslongextraUpdateWidest{text}

    -

    -which simply does \textbf{text} and redefines \glstreenamefmt, -\glstreegroupheaderfmt and \glstreenavigationfmt all in terms of -\glstreedefaultnamefmt. This means that if you want to change all three to use a -particular style you only need to redefine \glstreedefaultnamefmt, but if you only -want to redefine \glstreenamefmt without affecting the other two commands, then -you now can. -

    The separator between groups (if not nogroupskip) is now given by: -


    \glstreegroupskip  \glstreegroupskip

    -

    -This defaults to \indexspace with penalties to deter page breaks. This command -isn’t used if nogroupskip is set (except for the styles that display the group -titles). -

    The styles that display the group titles now use: -


    \glstreePreHeader  \glstreePreHeader{label

    +These work like the analogous commands \glssetwidest and \glsupdatewidest +provided with the alttree style, but in this case there’s no hierarchy. The default +widest name is obtained from the alttree top-level name if set, otherwise it’s empty, +so you can use bib2gls’s set-widest option. If you have the entry counter enabled, +you will need to include this with the name for the extra material to be taken into +account. +

    The name isn’t shown for child entries by default, but if you change this and you +want to use bib2gls’s set-widest option (for bib2gls v1.8+) then you need to +redefine: +


    \glslongextraUpdateWidestChild{level}{titletext}

    -

    -where ⟨label⟩ is the group label and ⟨title⟩ is the group title. This does nothing by -default and is inserted before the group title. You can redefine it to add the group -title to the PDF bookmarks. For example, if the glossary title uses \chapter -then: +

    +This does nothing by default, but if you are including the child names then you need +to redefine this command:

    -
    -\renewcommand{\glstreePreHeader}[2]{% - 
     \pdfbookmark[1]{#2}{\currentglossary.#1}% +
    +\renewcommand{\glslongextraUpdateWidestChild}[2]{% + 
     \glslongextraUpdateWidest{#2}%  
    }
    -

    will insert section-level bookmarks. The use of \currentglossary helps to provide -unique bookmark labels in the event of multiple glossaries. -

    The index-like and tree-like styles insert the pre-number list space with -


    \glstreeprelocation  \glstreeprelocation

    -

    -(which defaults to \glsxtrprelocation) for top-level items and -


    \glstreechildprelocation  \glstreechildprelocation

    -

    -(which defaults to \glstreeprelocation) for child items. -

    As from version 1.31, the glossaries-extra-stylemods package also provides: -


    \glstreenonamedesc  \glstreenonamedesc{label}

    -

    -which is used by the treenoname styles to display the pre-description separator, the -description and the post-description hook. Similarly for the symbol: -


    \glstreenonamesymbol  \glstreenonamesymbol{label}

    -

    -The above are just used for top-level entries. Child entries don’t have the name or -symbol displayed for the treenoname styles, so there’s only a command for the child -description: -


    \glstreenonamechilddesc  \glstreenonamechilddesc{

    +

    If you prefer to set an explicit width for the description column then you need to +redefine \glslongextraSetDescWidth. For example: + + + +

    +
    +\renewcommand{\glslongextraSetDescWidth}{% + 
      \setlength{\glsdescwidth}{0.6\linewidth}% + 
    } +
    +

    +

    The styles that have a name, symbol and description, \glsdescwidth is set +with: +


    \glslongextraSymSetDescWidth

    +

    +This first uses \glslongextraSetDescWidth and then subtracts 2\tabcolsep and +the width of the symbol column header from \glsdescwidth. This assumes that the +symbol column header is larger than any of the symbols. If this isn’t appropriate then +you can redefine this command. For example: + + + +

    +
    +\renewcommand{\glslongextraSymSetDescWidth}{% + 
      \glslongextraSetDescWidth + 
      \addtolength{\glsdescwidth}{-3cm}% + 
    } +
    +

    or + + + +

    +
    +\renewcommand{\glslongextraSymSetDescWidth}{% + 
      \setlength{\glsdescwidth}{.5\linewidth}% + 
    } +
    +

    +

    For the styles that have a name, description and location column, \glsdescwidth +is set using: +


    \glslongextraLocSetDescWidth

    +

    +This uses \glslongextraSetDescWidth and then subtracts 2\tabcolsep and +\glspagelistwidth from \glsdescwidth. You can redefine this command to set +both \glsdescwidth and \glspagelistwidth if appropriate. +

    For the styles that have a name, description, symbol and location column, +\glsdescwidth is set using: +


    \glslongextraSymLocSetDescWidth

    +

    +This uses \glslongextraSymSetDescWidth and then subtracts 2\tabcolsep and +\glspagelistwidth from \glsdescwidth. Again, you can redefine this command to +explicitly set both lengths. +

    In all cases, the top-level name is formatted according to: +


    \glslongextraNameFmt{label}

    -

    -

    For the tree styles (but not the treenoname or alttree styles), the description is -displayed using: -


    \glstreedesc  \glstreedesc{

    +This does

    +
    +\glsentryitem{label}

    -

    -and the symbol with: -


    \glstreesymbol  \glstreesymbol{}\glstarget{label}{\glossentryname{label}} +
    +
    which includes the entry counter (if enabled), the target and the post-name +link. +

    The top-level description is formatted according to: +


    \glslongextraDescFmt{label}

    -

    -Again the above two commands are just for top-level entries. The child entries -use: -


    \glstreechilddesc  \glstreechilddesc{

    +This does \glossentrydesc{label} followed by the post-description hook. +

    The styles that have a symbol column format the symbol using: +


    \glslongextraSymbolFmt{label}

    -

    -for the description and -


    \glstreechildsymbol  \glstreechildsymbol{

    +This just does \glossentrysymbol{label}. +

    The styles that have a location list column format the list using: +


    \glslongextraLocationFmt{label}{locations}

    -

    -for the symbol. +

    +This just does ⟨locations⟩ and ignores the label. -

    As from version 1.41, there are now wrapper commands for \glstreedesc and -\glstreechilddesc that check for the description and symbol to determine whether -or not to insert a space (\glstreeprelocation or \glstreechildprelocation) -before the page list. These are: -


    \glstreeDescLoc  \glstreeDescLoc{label

    The child entries have their name formatted according to: +


    \glslongextraSubNameFmt{level}{location}

    -

    -for top-level entries and -


    \glstreeChildDescLoc  \glstreeChildDescLoc{label}{location} -

    -

    -for sub-entries. This prevents a spurious space for terms that don’t have a symbol or -description but do have a location list (for example, aliases). -

    As from version 1.05, the glossaries-extra-stylemods package provides some -additional commands for use with the alttree style to make it easier to modify. These -commands are only defined if the glossary-tree package has already been loaded, -which is typically the case unless the notree option has been used when loading -glossaries. -


    \gglssetwidest  \gglssetwidest[level]{name}

    -

    -(New to version 1.21.) This is like \glssetwidest (provided by glossary-tree) but -performs a global assignment. -


    \eglssetwidest  \eglssetwidest[level]{name}

    -

    -This is like \glssetwidest but performs a protected expansion on ⟨name⟩. This has a -localised effect. For a global setting, use -


    \xglssetwidest  \xglssetwidest[level]{name}

    -

    -The following only set the value if ⟨name⟩ is wider than the current value (new to -version 1.23). Local update: -


    \glsupdatewidest  \glsupdatewidest[

    +where ⟨level⟩ is the hierarchical level. This defaults to:

    +
    +\glssubentryitem{label}\glstarget{label}{\strut} +
    +
    This includes the sub-entry counter (if enabled) and the target but doesn’t show the +name. The child description is formatted according to: +


    \glslongextraSubDescFmt{level]{name}{label}

    -

    -Global update: -


    \gglsupdatewidest  \gglsupdatewidest[

    +which defaults to just \glslongextraDescFmt{label} +

    The child symbol is formatted (where appropriate) according to: +


    \glslongextraSubSymbolFmt{level]{name}{label}

    -

    -Locale update (expands ⟨name⟩): -


    \eglsupdatewidest  \eglsupdatewidest[

    +This just does \glslongextraSymbolFmt{label} by default. +

    The styles that have a location list column format the list for child entries +using: +


    \glslongextraSubLocationFmtlevel]{name{label}{locations}

    -

    -Global update (expands ⟨name⟩): -


    \xglsupdatewidest  \xglsupdatewidest[level]{name

    +This just does ⟨locations⟩ and ignores the level and label. +

    The letter group headings are formatted according to: +


    \glslongextraGroupHeading{n}{label}

    -

    -

    The widest entry value can later be retrieved using -


    \glsgetwidestname  \glsgetwidestname

    -

    -for the top-level entries and -


    \glsgetwidestsubname  \glsgetwidestsubname{level

    +which does nothing by default. The first argument ⟨n⟩ is the number of columns in the +table. The second argument ⟨label⟩ is the group label (not the title, although they may +happen to be the same). +

    This can be redefined to show the group heading. For example: + + + +

    +
    +\renewcommand*{\glslongextraGroupHeading}[2]{% + 
      \glsxtrgetgrouptitle{#2}{\thisgrptitle}% + 
      \glslongextraHeaderFmt{\thisgrptitle}% + 
      \tabularnewline + 
      \noalign{\vskip\normalbaselineskip}% + 
    } +
    +

    This ignores the first argument and just puts the group title in the first column +formatted according to \glslongextraHeaderFmt (to match the column +header). +

    Remember that you can also adjust the styles through category attributes. The +name column’s title is given by \entryname, the description column’s title is given by +\descriptionname and (where present) the symbol column’s title is given by +\symbolname, as for the other long styles that have headers. +

    +
    long-name-desc This is like the longragged-booktabs style but doesn’t show the + location list (regardless of the nonumberlist option). The name is shown in + the first column and the description in the second. +

    The symbol is not displayed. The header row is produced with: +


    \glslongextraNameDescHeader

    +

    + This essentially uses the same code as for longragged-booktabs but makes it + easier to adjust the header without having to define a new style. This is defined + as: + + + +

    +
    + \glslongextraNameDescTabularHeader\endhead +  
    \glslongextraNameDescTabularFooter\endfoot +
    +

    where: +


    \glslongextraNameDescTabularHeader

    +

    + sets up the header and +


    \glslongextraNameDescTabularFooter

    +

    + sets up the footer. If you have setup the tabular version of this style then the + above two commands are used at the start and end of the tabular environment + (and \glslongextraNameDescHeader isn’t used). +

    For example, to simply remove the header and footer (for the default longtable + version of the style): + + + +

    +
    + \renewcommand{\glslongextraNameDescHeader}{} +
    +

    Or to change the name alignment to centred: + + + +

    +
    + \renewcommand{\glslongextraNameAlign}{c} +
    +

    +

    +
    long-name-desc-loc This is like the long-name-desc style but has a third column for + the location list. The longtable header is given by: +


    \glslongextraNameDescLocationHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraNameDescLocationTabularHeader

    +

    + and +


    \glslongextraNameDescLocationTabularFooter

    +

    +

    +
    long-desc-name This is like the long-name-desc style but swaps the columns. Note + that if the entry counter is displayed it will appear at the start of the + second column by default. The longtable header is formatted according + to: +


    \glslongextraDescNameHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraDescNameTabularHeader

    +

    + and +


    \glslongextraDescNameTabularFooter

    +

    +

    +
    long-loc-desc-name This has three columns containing the location list, + description and name. The longtable header is formatted according + to: + + + +


    \glslongextraLocationDescNameHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraLocationDescNameTabularHeader

    +

    + and +


    \glslongextraLocationDescNameTabularFooter

    +

    +

    +
    long-name-desc-sym This is has three columns, with the name in the first, the + description in the second and the symbol in the third. +

    The longtable header row is produced with: +


    \glslongextraNameDescSymHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraNameDescSymTabularHeader

    +

    + and +


    \glslongextraNameDescSymTabularFooter

    +

    +

    +
    long-name-desc-sym-loc This is has four columns, with the name in the first, the + description in the second, the symbol in the third and the location list in the + fourth. +

    The longtable header row is produced with: +


    \glslongextraNameDescSymLocationHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraNameDescSymLocationTabularHeader

    +

    + and +


    \glslongextraNameDescSymLocationTabularFooter

    +

    + + + +

    +
    long-name-sym-desc This is like the long-name-desc-sym but the second and third + column are swapped. The longtable header row is given by: +


    \glslongextraNameSymDescHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraNameSymDescTabularHeader

    +

    + and +


    \glslongextraNameSymDescTabularFooter

    +

    +

    +
    long-name-sym-desc-loc This is like the long-name-desc-sym-loc but the second and + third column are swapped. The longtable header row is given by: +


    \glslongextraNameSymDescLocationHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraNameSymDescLocationTabularHeader

    +

    + and +


    \glslongextraNameSymDescLocationTabularFooter

    +

    +

    +
    long-sym-desc-name This has the symbol in the first column, the description in the + second and the name in the third. The longtable header row is given + by: +


    \glslongextraSymDescNameHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraSymDescNameTabularHeader

    +

    + and +


    \glslongextraSymDescNameTabularFooter

    +

    + + + +

    +
    long-loc-sym-desc-name This has the location list in the first column, symbol in the + second column, the description in the third and the name in the fourth. The + longtable header row is given by: +


    \glslongextraLocationSymDescNameHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraLocationSymDescNameTabularHeader

    +

    + and +


    \glslongextraLocationSymDescNameTabularFooter

    +

    +

    +
    long-desc-sym-name This has the description in the first column, the symbol in the + second and the name in the third. The longtable header row is given + by: +


    \glslongextraDescSymNameHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraDescSymNameTabularHeader

    +

    + and +


    \glslongextraDescSymNameTabularFooter

    +

    +

    +
    long-loc-desc-sym-name This has the location list in the first column, the description + in the second column, the symbol in the third and the name in the fourth. The + longtable header row is given by: +


    \glslongextraLocationDescSymNameHeader

    +

    + which similarly defined in terms of the commands used for the tabular + version: +


    \glslongextraLocationDescSymNameTabularHeader

    +

    + and + + + +


    \glslongextraLocationDescSymNameTabularFooter

    +

    +

    +
    +

    +

    +

    Top

    3.3 glossary-topic package

    +

    As from version 1.40, the glossaries-extra package comes with the supplementary +package glossary-topic that provides glossary styles designed for hierarchical glossaries +where the top-level entries are topic titles. This package automatically loads the +multicols package. If the glossary-tree package is also loaded then commands like +\glssetwidest can be used on these styles in much the same way as for the alttree +style. If a widest value isn’t set then these styles behave more like the tree +style. +

    +topic
    This style is similar to the tree style but the indentation doesn’t start until + the second sub-item level. The top-level entries have the name displayed + in a larger font with the description following in a new paragraph. This + style doesn’t support the nogroupskip setting. +
    +topicmcols
    This style is like the topic style but the sub-entries are placed inside a + multicols environment. The environment name is supplied in the value of the + command: +


    \glstopicColsEnv

    +

    + You can change this to the starred form. For example: + + + +

    +
    + \renewcommand{\glstopicColsEnv}{multicols*} +
    +

    The number of columns is given by the command: +


    \glstopicCols

    +

    + The default value is 2.

    +

    Both styles use the following commands. +


    \glstopicParIndent

    +

    +This command is a length that’s used for the paragraph indentation in any +multi-paragraph description for top-level entries, but not for the first paragraph (at +the start of the description) which isn’t indented. +


    \glstopicSubIndent

    +

    +This command is a length that’s used to calculate the hanging indentation for +sub-entries. The level 1 sub-entries don’t indent the name. Level n sub-entries have +the name indented by (n- 1)×\glstopicSubIndent. The hanging indent depends on +whether or not a widest name has been set for the level. +


    \glstopicInit

    +

    +Hook used at the start of the glossary. Does nothing by default. +

    Although the styles don’t support letter groups by default, if you have many +topics (top-level entries) and you feel that it would help the reader to divide them up +into headed letter groups, you can redefine: +


    \glstopicGroupHeading{group label}

    +

    +This does nothing by default. If you want to redefine it, you can fetch the +title corresponding to the group label with \glsxtrgetgrouptitle. For +example: -

    -for sub-entries, where ⟨level⟩ is the level number. -

    Note that if you are using +

    +

    Remember that if you use bib2gls, you can use the resource option set-widest -which will try to determine the widest name of all the selected entries. This isn’t -guaranteed to work as it may depend on fonts or commands that bib2gls -can’t replicate, but it should be suitable for names that just consist of text, -and can be more efficient than iterating over all the defined entries using -TEX. -

    The command \glsfindwidesttoplevelname provided by glossary-tree has a -CamelCase synonym: -


    \glsFindWidestTopLevelName  \glsFindWidestTopLevelName[glossary list] -

    -

    -Similar commands are also provided: -


    \glsFindWidestUsedTopLevelName  \glsFindWidestUsedTopLevelName[glossary -list]

    -

    -This has an additional check that the entry has been used. Naturally this is only -useful if the glossaries that use the alttree style occur at the end of the document. -This command should be placed just before the start of the glossary. (Alternatively, -place it at the end of the document and save the value in the auxiliary file for the -next run.) -


    \glsFindWidestUsedAnyName  \glsFindWidestUsedAnyName[glossary list] -

    -

    -This is like the previous command but if doesn’t check the parent key. This is useful if -all levels should have the same width for the name. -


    \glsFindWidestAnyName  \glsFindWidestAnyName[glossary list]

    -

    -This is like the previous command but doesn’t check if the entry has been -used. -


    \glsFindWidestUsedLevelTwo  \glsFindWidestUsedLevelTwo[glossary list] -

    -

    -This is like \glsFindWidestUsedTopLevelName but also sets the first two sub-levels -as well. Any entry that has a great-grandparent is ignored. -


    \glsFindWidestLevelTwo  \glsFindWidestLevelTwo[glossary list] -

    -

    -This is like the previous command but doesn’t check if the entry has been -used. -


    \glsFindWidestUsedAnyNameSymbol  \glsFindWidestUsedAnyNameSymbol -[glossary list]{registerbib2gls, you will need the --group (or -g) switch to +support this. +


    \glstopicItem{label}{location list}

    -

    -This is like \glsFindWidestUsedAnyName but also measures the symbol. The length -of the widest symbol is stored in ⟨register⟩. +

    +Used to format the name, symbol, description and location list for the top-level +entries. This starts with a paragraph break followed by: +


    \glstopicPreSkip

    +

    +which defaults to \medskip. There is then a hook: +


    \glstopicMarker{label}

    +

    +which does nothing by default, but may be redefined. For example, to add a line to +the table of contents. The name and symbol are set in the form of a title +using: +


    \glstopicTitle{label}

    +

    +This uses \Glossentryname which converts the first letter to upper case. If there’s a +symbol, this is added in parentheses. Both name and symbol (if present) are +encapsulated by +


    \glstopicTitleFont{text}

    +

    +This uses a bold, large font by default. +

    If the entry has the description key set (tested with \ifglshasdesc) then a +paragraph break is inserted followed by: +


    \glstopicMidSkip

    +

    +which defaults to \smallskip. This is followed by the description which is formatted +according to: +


    \glstopicDesc{label}

    +

    +This just does \Glossentrydesc{label} followed by the post-description +hook. +

    A paragraph break followed by: +


    \glstopicPostSkip

    +

    +comes next regardless of whether or not the description was displayed. This defaults +to \smallskip. This is then followed by: -


    \glsFindWidestAnyNameSymbol  \glsFindWidestAnyNameSymbol[glossary -list]{register}

    -

    -This is like the previous command but it doesn’t check if the entry has been -used. -


    \glsFindWidestUsedAnyNameSymbolLocation  \glsFindWidestUsedAnyNameSymbolLocation -[glossary list]{symbol register}{location register}

    -

    -This is like \glsFindWidestUsedAnyNameSymbol but also measures the number list. -This requires \glsentrynumberlist (see the glossaries user manual). The length of -the widest symbol is stored in ⟨symbol register⟩ and the length of the widest number -list is stored in ⟨location register⟩. -


    \glsFindWidestAnyNameSymbolLocation  \glsFindWidestAnyNameSymbolLocation -[glossary list]{symbol register


    \glstopicLoc{label}{location registerlocation list}

    -

    -This is like the previous command but it doesn’t check if the entry has been -used. -


    \glsFindWidestUsedAnyNameLocation  \glsFindWidestUsedAnyNameLocation -[glossary list]{register

    +which may be used to display the location list, but does nothing by default. +

    The sub-entries first set up the paragraph and hanging indentations using: +


    \glstopicAssignSubIndent{level}

    -

    -This is like \glsFindWidestUsedAnyNameSymbolLocation but doesn’t measure the -symbol. The length of the widest number list is stored in ⟨register⟩. -


    \glsFindWidestAnyNameLocation  \glsFindWidestAnyNameLocation[glossary -list]{register

    +This uses: +


    \glstopicAssignWidest{level}

    -

    -This is like the previous command but doesn’t check if the entry has been -used. -

    The layout of the symbol, description and number list is governed by -


    \glsxtralttreeSymbolDescLocation  \glsxtralttreeSymbolDescLocation -{

    +to determine if a widest name has been set for the given level. +

    The sub-entry has its information displayed using: +


    \glstopicSubItem{level}{label}{number listlocation}

    -

    -for top-level entries and -


    \glsxtralttreeSubSymbolDescLocation  \glsxtralttreeSubSymbolDescLocation -{

    +This encapsulates the name with: +


    \glstopicSubNameFont{text}

    +

    +By default this just uses \textbf. This is followed by: +


    \glstopicSubItemSep

    +

    +which defaults to \quad. The name and separator are passed in the ⟨text⟩ argument +of: +


    \glstopicSubItemBox{level}{text}

    +

    +If a widest name was set for the given level, this will put ⟨text⟩ inside a box of that +width otherwise it just does ⟨text⟩. +

    This is followed by the symbol in parentheses if set. Then, if the description is set, +the description and post-description hook are displayed followed by: +


    \glstopicSubPreLocSep

    +

    +(This command isn’t used if the description isn’t set.) +

    Finally the location list is displayed using: +


    \glstopicSubLoc{label}{number listlocation}

    -

    -for sub-entries. -

    There is now a user level command that performs the initialisation for the alttree -style: -


    \glsxtralttreeInit  \glsxtralttreeInit

    -

    -

    The paragraph indent for subsequent paragraphs in multi-paragraph descriptions -is provided by the length -


    \glsxtrAltTreeIndent  \glsxtrAltTreeIndent

    -

    - - - -

    For additional commands that are available with the alttree style, see the -documented code (glossaries-extra-code.pdf). For examples, see the -accompanying sample files sample-alttree.tex, sample-alttree-sym.tex and -sample-alttree-marginpar.tex. +

    +which just does ⟨location⟩ by default.

    -

    -

    Top

    3.

    +

    Top

    4. Abbreviations

    -

    The new abbreviation system provided by

    The new abbreviation system provided by glossaries-extra is more flexible than the acronym handling provided by the base glossaries package. The glossaries-extra package modifies the underlying formatting used by \gls (and -its variants) so that terms that are recognised as abbreviations can have -their formatting dealt with by the style. You therefore need to select an -abbreviation style that ensures that \gls (and its variants) displays the desired -output. -

    Don’t use commands like \glstext or \glsfirst with abbreviations as they -aren’t flexible enough to handle some abbreviation styles and unexpected -results may occur. Use commands like \gls (and its +variants) so that terms that are recognised as abbreviations can have their +formatting dealt with by the style. You therefore need to select an abbreviation +style that ensures that \gls (and its variants) displays the desired output. +See the file sample-abbr-styles.pdf for samples of all provided abbreviation +styles. +

    Don’t use \glsfirst, \Glsfirst or \GLSfirst with abbreviations as they aren’t +flexible enough to handle some abbreviation styles and unexpected results may occur. +(To a lesser degree, this also applies to \glstext etc.) Use commands like +\glsfmttext, \glsfmtshort or \glsfmtlong in -section headings or captions instead of \gls. If you don’t want the full form -to show on first use of \gls use one of the “nolong” or “noshort” styles. -
    -

    -

    Abbreviations include acronyms (words formed from initial letters, such as +class="cmtt-10">\glsfmtlong in section headings or captions instead +of \gls. If you don’t want the full form to show on first use of \gls use one of the +“nolong” or “noshort” styles.

    +

    +

    This lack of flexibility in \glsfirst can be demonstrated with the following +document: + + + +

    +
    +\documentclass{article} + 
    \usepackage{glossaries-extra} + 
    \setabbreviationstyle{footnote} + 
    \newabbreviation{ex}{EX}{Example} + 
    \begin{document} + 
    Compare \gls{ex}['s] with \glsfirst{ex}['s]. + 
    \end{document} +
    +

    The first use \gls has the footnote marker after the inserted material “EX’s1” but +\glsfirst has it before the inserted material “EX1’s” which is inappropriate. Note +that if the style is changed to postfootnote, the footnote marker appears after the +inserted material as \footnote is in the post-link hook. +

    There are some instances where \glstext can be useful. It’s used internally by +\glsfmttext, which in turn is used by \glsseelistformat if the entry has a +short form. If \glsfmtshort is used, this enforces the short form, but if +\glsfmttext is used, then the long form will be used for the “noshort” styles, which +is more appropriate. In this particular situation, there’s no need to worry +about inserted material as the final optional argument isn’t supported by +\glsfmttext. +

    Abbreviations include acronyms (words formed from initial letters, such as “laser”), initialisms (initial letters of a phrase, such as “html”, that aren’t pronounced as words) and contractions (where parts of words are omitted, often replaced by an apostrophe, such as “don’t”). The “acronym” code provided by the @@ -9406,19 +9133,16 @@ replaced by an apostrophe, such as “don’t”). The “acrony class="cmss-10">glossaries package is misnamed as it’s more often than not used for initialisms instead. Acronyms tend not to be expanded on first use (although they may need + id="dx1-24010">first use (although they may need to be described for readers unfamiliar with the term). They are therefore more like a regular term, which may or may not require a description in the glossary. -

    The

    The glossaries-extra package corrects this misnomer, and provides better abbreviation handling, with -


    \newabbreviation 


    \newabbreviation[options]{}{short}{long} -

    -

    -

    This sets the }


    +

    +

    This sets the category key to key to abbreviation by default, but that value may be overridden in ⟨options⟩. The category may have attributes that modify the way abbreviations are defined. For example, the insertdots attribute will automatically + id="dx1-24013"> attribute will automatically insert full stops (periods) into ⟨short⟩ or the noshortplural attribute will set the default + id="dx1-24014"> attribute will set the default value of the shortplural key to just ⟨ key to just ⟨short⟩ (without appending the plural suffix). See §5 +class="cmsy-10">§6 Categories for further details. -

    See

    See §2.7 §2.8 Nested Links regarding the pitfalls of using commands like \gls or + id="dx1-24016"> or \glsxtrshort within ⟨ within ⟨short⟩ or ⟨long⟩. -

    Make sure that you set the category attributes before defining new abbreviations -or they may not be correctly applied.
    -

    -

    The \newacronym command provided by the glossaries package is redefined by +

    Make sure that you set the category attributes before defining new abbreviations +or they may not be correctly applied.
    +

    +

    The \newacronym command provided by the glossaries package is redefined by glossaries-extra to use \newabbreviation with the category set to set to acronym (see also §2.8 §2.9 Acronym Style Modifications) so -


    \newacronym 


    \newacronym[options]{short}{long}

    -

    +

    is now equivalent @@ -9520,7 +9241,7 @@ class="cmtt-10">{⟨long}
    -

    The

    The \newabbreviation command is superficially similar to the glossaries package’s \newacronym but you can apply different styles to differe default style is short-nolong for entries in the for entries in the acronym category and category and short-long for + id="dx1-24023"> for entries in the abbreviation category. (These aren’t the same as the acronym + id="dx1-24024"> category. (These aren’t the same as the acronym styles provided by the glossaries package, although they may produce similar results.) -

    The way the abbreviations are displayed by commands like

    The way the abbreviations are displayed by commands like \gls varies according to the abbreviation style. The styles are set according to the entry’s category so, unlike the base glossaries package, you can have different abbreviation styles within the same glossary. -

    There are two types of full forms. The display full form, which is used on +

    There are two types of full forms. The display full form, which is used on first use by commands like \gls and the inline full form, which is used by + id="dx1-24026"> and the inline full form, which is used by commands like \glsxtrfull. For some of the abbreviation styles, such as + id="dx1-24027">. For some of the abbreviation styles, such as long-short, the display and inline forms are the same. In the case of styles + id="dx1-24028">, the display and inline forms are the same. In the case of styles such as short-nolong or or short-footnote, the display and inline full forms are + id="dx1-24030">, the display and inline full forms are different. -

    These formatting commands aren’t stored in the

    These formatting commands aren’t stored in the short, , shortplural, , long or + id="dx1-24033"> or longplural fields, which means they won’t be used within commands like + id="dx1-24034"> fields, which means they won’t be used within commands like \glsentryshort (but they are used within commands like \glsxtrshort and \glsfmtshort). Note that \glsxtrlong and the case-changing variants don’t use + id="dx1-24035"> and the case-changing variants don’t use \glsfirstlongfont. -

    You can apply the formatting command used for the short form to some arbitrary +

    You can apply the formatting command used for the short form to some arbitrary text using -


    \glsuseabbrvfont 


    \glsuseabbrvfont{text}{category}

    -

    + + + +

    where ⟨category⟩ is the category label that identifies the abbreviation style. Similarly for the formatting command use by the long form: -


    \glsuselongfont 


    \glsuselongfont{text}{category}

    -

    - - - +

    +

    You can’t use the acronym commands provided by the base package with the new +abbreviations provided by the glossaries-extra package. The style commands that +replace \setacronymstyle, \acrshort etc are described in §4.2 Abbreviation Styles. +The acronymlists package option and associated commands aren’t supported. The +\forallacronyms command, which iterates over all acronym lists, should be replaced +with: +


    \forallabbreviationlists{cs}{body}

    +

    -

    Top

    3.1

    Top

    4.1 Tagging Initials

    -

    If you would like to tag the initial letters in the long form such that those letters are +

    If you would like to tag the initial letters in the long form such that those letters are underlined in the glossary but not in the main part of the document, you can use -


    \GlsXtrEnableInitialTagging 


    \GlsXtrEnableInitialTagging{categories} -{}{cs}

    -

    +

    before you define your abbreviations. -

    This command (robustly) defines ⟨

    This command (robustly) defines ⟨cs⟩ (a control sequence) to accept a single argument, which is the letter (or letters) that needs to be tagged. The normal behaviour of this command within the document is to simply do its argument, but in the glossary it’s activated for those categories that have the tagging attribute set to + id="dx1-25002"> attribute set to “true”. For those cases it will use -


    \glsxtrtagfont 


    \glsxtrtagfont{text}

    -

    +

    This command defaults to \underline{text} but may be redefined as required. -

    The control sequence ⟨

    The control sequence ⟨cs⟩ can’t already be defined when used with the unstarred version of \GlsXtrEnableInitialTagging for safety reasons. The starred @@ -9666,39 +9402,39 @@ class="cmti-10">cs⟩. As with redefining any commands, ensure that you don’t redefine something important. In fact, just forget the existence of the starred version and let’s pretend I didn’t mention it. -

    The first argument of

    The first argument of \GlsXtrEnableInitialTagging is a comma-separated list of category names. The tagging attribute will automatically be set for those + id="dx1-25005"> attribute will automatically be set for those categories. You can later set this attribute for other categories (see §5 §6 Categories) but this must be done before the glossary is displayed. -

    The accompanying sample file

    The accompanying sample file sample-mixtures.tex uses initial tagging for both the acronym and and abbreviation categories: + id="dx1-25007"> categories:

    -
    +
    \GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}
    -

    This defines the command

    This defines the command \itag which can be used in the definitions. For example:

    -
    +
    \newacronym  
     [description={a system for detecting the location and  
     speed of ships, aircraft, etc, through the use of radio @@ -9710,28 +9446,25 @@ example:  
    \newabbreviation{xml}{XML}  
     {e\itag{x}tensible \itag{m}arkup \itag{l}anguage}
    -

    The underlining of the tagged letters only occurs in the glossary and then only for +

    The underlining of the tagged letters only occurs in the glossary and then only for entries with the tagging attribute set. -

    + id="dx1-25008"> attribute set. +

    -

    Top

    3.2

    Top

    4.2 Abbreviation Styles

    -

    The abbreviation style must be set before abbreviations are defined using: -


    \setabbreviationstyle 

    The abbreviation style must be set before abbreviations are defined using: +


    \setabbreviationstyle[category]{style-name} -

    -

    +class="cmtt-10">}


    +

    where ⟨style-name⟩ is the name of the style and ⟨category⟩ is the category label @@ -9744,22 +9477,22 @@ modify one or more of the attributes associated with the given category. For example, the long-noshort and and short-nolong styles set the styles set the regular attribute to + id="dx1-26004"> attribute to true. -

    If you want to apply different styles to groups of abbreviations, assign a +

    If you want to apply different styles to groups of abbreviations, assign a different category to each group and set the style for the given category.
    -

    -

    Note that

    +

    Note that \setacronymstyle is disabled by is disabled by glossaries-extra. Use

    }
    instead. The original acronym interface can be restored with \RestoreAcronyms (see + id="dx1-26006"> (see §2.8 §2.9 Acronym Style Modifications). However the original acronym interface is incompatible with all the commands described here. -

    Abbreviations can be used with the standard

    Abbreviations can be used with the standard glossaries commands, such as \gls, + id="dx1-26007">, but don’t use the acronym commands like \acrshort (which use (which use \acronymfont). + id="dx1-26009">). The short form can be produced with: -


    \glsxtrshort 


    \glsxtrshort[options]{label}[insert]

    -

    +

    (Use this instead of \acrshort.) -

    The long form can be produced with -


    \glsxtrlong  .) +

    The long form can be produced with +


    \glsxtrlong[options]{label}[insert]

    -

    +

    (Use this instead of \acrlong.) -

    The .) +

    The inline full form can be produced with -


    \glsxtrfull 


    \glsxtrfull[options]{label}[insert]

    -

    +

    (This this instead of \acrfull.) -

    In general, it’s best not to use commands like .) +

    In general, it’s best not to use commands like \glsfirst for abbreviations, + id="dx1-26016"> for abbreviations, especially if you use the ⟨insert⟩ optional argument. Use either \gls (possibly with a reset) or \glsxtrfull.
    -

    -

    As mentioned earlier, the inline full form may not necessarily match the format +

    +

    As mentioned earlier, the inline full form may not necessarily match the format used on first use with \gls. For example, the short-nolong style only displays the + id="dx1-26018"> style only displays the short form on first use, but the full form will display the long form followed by the + id="dx1-26019">first use, but the full form will display the long form followed by the short form in parentheses. -

    If you want to use an abbreviation in a chapter or section title, use the +

    If you want to use an abbreviation in a chapter or section title, use the commands described in §4 §5 Entries in Sectioning Titles, Headers, Captions and Contents instead.
    -

    -

    The arguments ⟨

    +

    The arguments ⟨options⟩, ⟨label⟩ and ⟨insert⟩ are the same as for commands such as \glstext. There are also analogous case-changing commands: -

    First letter upper case short form: -


    \Glsxtrshort 

    First letter upper case short form: +


    \Glsxtrshort[options]{label}[insert]

    -

    -

    First letter upper case long form: -


    \Glsxtrlong 

    +

    First letter upper case long form: +


    \Glsxtrlong[options]{label}[insert]

    -

    -

    First letter upper case inline full form: -


    \Glsxtrfull 

    +

    First letter upper case inline full form: +


    \Glsxtrfull[options]{label}[insert]

    -

    -

    All upper case short form: +

    +

    All upper case short form: -


    \Glsxtrshort 


    \GLSxtrshort[options]{label}[insert]

    -

    -

    All upper case long form: -


    \Glsxtrlong 

    +

    All upper case long form: +


    \GLSxtrlong[options]{label}[insert]

    -

    -

    All upper case inline full form: -


    \GLSxtrfull 

    +

    All upper case inline full form: +


    \GLSxtrfull[options]{label}[insert]

    -

    -

    Plural forms are also available. -

    Short form plurals: -


    \glsxtrshortpl 

    +

    Plural forms are also available. +

    Short form plurals: +


    \glsxtrshortpl[options]{label}[insert]

    -

    -


    \Glsxtrshortpl 

    +


    \Glsxtrshortpl[options]{label}[insert]

    -

    -


    \GLSxtrshortpl 

    +


    \GLSxtrshortpl[options]{label}[insert]

    -

    -

    Long form plurals: -


    \glsxtrlongpl 

    +

    Long form plurals: +


    \glsxtrlongpl[options]{label}[insert]

    -

    -


    \Glsxtrlongpl 

    +


    \Glsxtrlongpl[options]{label}[insert]

    -

    -


    \GLSxtrlongpl 

    +


    \GLSxtrlongpl[options]{label}[insert]

    -

    -

    Full form plurals: -


    \glsxtrfullpl 

    +

    Full form plurals: +


    \glsxtrfullpl[options]{label}[insert]

    -

    -


    \Glsxtrfullpl 

    +


    \Glsxtrfullpl[options]{label}[insert]

    -

    -


    \GLSxtrfullpl 

    +


    \GLSxtrfullpl[options]{label}[insert]

    -

    -

    Be careful about using

    +

    Be careful about using \glsentryfull, \Glsentryfull, \glsentryfullpl and @@ -10071,49 +9768,48 @@ class="cmtt-10">\Glsentryfullpl. These commands will use the currently ap than the style in use when the entry was defined. If you have mixed styles, you’ll need to use \glsxtrfull instead. Similarly for instead. Similarly for \glsentryshort etc.
    -

    -

    +

    +

    -

    Top

    3.3

    Top

    4.3 Shortcut Commands

    -

    The abbreviation shortcut commands can be enabled using the package option -

    The abbreviation shortcut commands can be enabled using the shortcuts=abbreviation (or =abbreviations +package option (or shortcuts=abbr) or ) or shortcuts=ac. (You can use -both settings at the same time.) The provided shortcut commands listed in -table 3.1. + id="dx1-27003">. (You can use both settings at the +same time.) The provided shortcut commands listed in table 4.1.

    -


    Table 3.1: Abbreviation Shortcut Commands
    +>Table 4.1: Abbreviation Shortcut Commands
    (shortcuts=abbreviation) + id="dx1-27009"> + id="dx1-27012"> + id="dx1-27015"> + id="dx1-27018"> + id="dx1-27021"> + id="dx1-27024"> + id="dx1-27027"> + id="dx1-27030"> + id="dx1-27033"> + id="dx1-27036"> + id="dx1-27039"> + id="dx1-27042"> + id="dx1-27045"> + id="dx1-27048"> + id="dx1-27051"> + id="dx1-27054"> + id="dx1-27057"> + id="dx1-27060"> + id="dx1-27063"> + id="dx1-27066"> + id="dx1-27069"> + id="dx1-27072"> + id="dx1-27075"> + id="dx1-27078">
    (shortcuts=ac)
    \ab \ac \cgls
    \abp \acp \cglspl
    \as \acs \glsxtrshort
    \asp \acsp \glsxtrshortpl
    \al \acl \glsxtrlong
    \alp \aclp \glsxtrlongpl
    \af \acf \glsxtrfull
    \afp \acfp \glsxtrfullpl
    \Ab \Ac \cgls
    \Abp \Acp \cglspl
    \As \Acs \Glsxtrshort
    \Asp \Acsp \Glsxtrshortpl
    \Al \Acl \Glsxtrlong
    \Alp \Aclp \Glsxtrlongpl
    \Af \Acf \Glsxtrfull
    \Afp \Acfp \Glsxtrfullpl
    \AB \AC \cGLS
    \ABP \ACP \cGLSpl
    \AS \ACS \GLSxtrshort
    \ASP \ACSP \GLSxtrshortpl
    \AL \ACL \GLSxtrlong
    \ALP \ACLP \GLSxtrlongpl
    \AF \ACF \GLSxtrfull
    \AFP \ACFP \GLSxtrfullpl
    \newabbr \newabbr \newabbreviation
    + id="dx1-27081">

    -

    Top

    3.4

    Top

    4.4 Predefined Abbreviation Styles

    -

    There are two types of abbreviation styles: those that treat the abbreviation as a +

    There are two types of abbreviation styles: those that treat the abbreviation as a regular entry (so that \gls uses uses \glsgenentryfmt) and those that don’t treat the + id="dx1-28002">) and those that don’t treat the abbreviation as a regular entry (so that \gls uses uses \glsxtrgenabbrvfmt). -

    The regular entry abbreviation styles set the ). +

    The regular entry abbreviation styles set the regular attribute to “true” for the + id="dx1-28005"> attribute to “true” for the category assigned to each abbreviation with that style. This means that on first use, \gls uses the value of the uses the value of the first field and on subsequent use field and on subsequent use \gls uses the value of the + id="dx1-28009"> uses the value of the text field (and analogously for the plural and case-changing versions). The field (and analogously for the plural and case-changing versions). The short and + id="dx1-28011"> and long fields are set as appropriate and may be accessed through commands like + id="dx1-28012"> fields are set as appropriate and may be accessed through commands like \glsxtrshort. -

    The other abbreviation styles don’t modify the . +

    The other abbreviation styles don’t modify the regular attribute. The attribute. The first + id="dx1-28015"> and text fields (and their plural forms) are set and can be accessed through + id="dx1-28016"> fields (and their plural forms) are set and can be accessed through commands like \glsfirst, but they aren’t used by commands like \gls, which + id="dx1-28017">, which instead use the short form (stored in the short key) and the display full + id="dx1-28018"> key) and the display full format (through commands like \glsxtrfullformat that are defined by the + id="dx1-28019"> that are defined by the style). -

    In both cases, the first use of

    In both cases, the first use of \gls may not match the text produced by + id="dx1-28021"> may not match the text produced by \glsfirst (and likewise for the plural and case-changing versions). -

    The sample file (and likewise for the plural and case-changing versions). +

    The sample file sample-abbr-styles.tex demonstrates all predefined styles described here. -

    For the “sc” styles that use

    For the “sc” styles that use \textsc, be careful about your choice of fonts as + id="dx1-28023">, be careful about your choice of fonts as some only have limited support. For example, you may not be able to combine bold and small-caps. I recommend that you at least use the fontenc package with the package with the T1 option or something similar.
    -

    -

    The parenthetical styles, such as

    +

    Many of the styles have helper commands in the form \glsxtr...name and +\glsxtr...sort that are expanded within the name and sort fields when the +abbreviation is defined. These commands may use the helper token registers available +within \newabbreviation, such as \glsshorttok. The contents of a register can be +accessed with \theregister⟩. It’s essential that these expand when the abbreviation is +defined so don’t hide them behind no-expandable content if you redefine these helper +commands. +

    The parenthetical styles, such as long-short, use -


    \glsxtrparen  , use +


    \glsxtrparen{text}

    -

    +

    to set the parenthetical material. This just puts parentheses around the text: (⟨text⟩). -

    The basic abbreviation styles, such as

    The basic abbreviation styles, such as long-short and and short-long use -


    \glsabbrvdefaultfont  use +


    \glsabbrvdefaultfont{text}

    -

    + + + +

    for the short form. This just does ⟨text⟩ by default. (That is, no font change is applied.) On first use, -


    \glsfirstabbrvdefaultfont 


    \glsfirstabbrvdefaultfont{text}

    -

    +

    is used instead. By default, this just does \glsabbrvdefaultfont. The long form is formatted according to -


    \glslongdefaultfont 


    \glslongdefaultfont{text}

    - - - -

    +

    which again just does ⟨text⟩ (no font change). On first use, -


    \glsfirstlongdefaultfont 


    \glsfirstlongdefaultfont{text}

    -

    +

    is used instead. This just does \glslongdefaultfont. The plural suffix used for the short form is given by -


    \glsxtrabbrvpluralsuffix 


    \glsxtrabbrvpluralsuffix

    -

    +

    which defaults to \glspluralsuffix. -

    The small-cap styles, such as . +

    The small-cap styles, such as long-short-sc and and short-sc-long, use -


    \glsabbrvscfont  , use +


    \glsabbrvscfont{text}

    -

    +

    which uses \textsc.3.1 +href="#fn1x4" id="fn1x4-bk">4.1 On first use -


    \glsabbrvdefaultfont 


    \glsfirstabbrvscfont{text}

    -

    +

    is used instead. This uses \glsabbrvscfont by default. So redefine, \glsabbrvscfont to change first and subsequent uses or \glsfirstabbrvscfont to change just the first use. -

    The long form for the small-cap styles uses

    The long form for the small-cap styles uses \glslongdefaultfont or \glsfirstlongdefaultfont, as with the basic style. The suffix is given by -


    \glsxtrscsuffix 


    \glsxtrscsuffix

    -

    +

    This is defined as

    -
    +
    \newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}}
    -

    The

    The \glstextup command is provided by command is provided by glossaries and is used to switch off the small caps font for the suffix. If you override the default short plural using the shortplural key when you define the abbreviation you will need to make the + id="dx1-28046"> key when you define the abbreviation you will need to make the appropriate adjustment if necessary. (Remember that the default plural suffix behaviour can be modified through the use of the aposplural and and noshortplural + id="dx1-28048"> attributes. See §5 §6 Categories for further details.) -

    The small styles, such as

    The small styles, such as long-short-sm and and short-sm-long, use -


    \glsabbrvsmfont  , use +


    \glsabbrvsmfont{text}

    -

    +

    which uses \textsmaller. (This requires the relsizes package, which isn’t loaded by + id="dx1-28052"> package, which isn’t loaded by glossaries-extra, so must be loaded explicitly.) On first use -


    \glsfirstabbrvsmfont 


    \glsfirstabbrvsmfont{text}

    -

    +

    is used instead. This uses \glsabbrvsmfont by default. -

    The long form for the smaller styles uses

    The long form for the smaller styles uses \glslongdefaultfont or \glsfirstlongdefaultfont, as with the basic style. The suffix is given by -


    \glsxtrsmsuffix 


    \glsxtrsmsuffix

    -

    +

    which defaults to just \glsxtrabbrvpluralsuffix. -

    The “short-em” (emphasize short) styles, such as

    The “short-em” (emphasize short) styles, such as long-short-em or or short-em-long, + id="dx1-28056">, use -


    \glsabbrvemfont 


    \glsabbrvemfont{text}

    -

    +

    On first use -


    \glsfirstabbrvemfont 


    \glsfirstabbrvemfont{text}

    -

    +

    is used instead. This uses \glsabbrvemfont by default. The suffix is given by -


    \glsxtremsuffix 


    \glsxtremsuffix

    -

    +

    which defaults to just \glsxtrabbrvpluralsuffix. The long form is as for the basic style unless the style is a “long-em” style. -

    The “long-em” (emphasize long) styles, such as

    The “long-em” (emphasize long) styles, such as long-em-short-em or or short-em-long-em, + id="dx1-28061">, use -


    \glsfirstlongemfont 


    \glsfirstlongemfont{long-form}

    -

    +

    instead of \glsfirstlongdefaultfont{long-form} and -


    \glslongemfont 


    \glslongemfont{long-form}

    -

    +

    instead of \glslongdefaultfont{long-form}. The first form \glsfirstlongemfont is initialised to use \glslongemfont. -

    The user styles have similar commands: -


    \glsabbrvuserfont 

    The user styles have similar commands: +


    \glsabbrvuserfont{text}

    -

    +

    for the short form, -


    \glsfirstabbrvuserfont 


    \glsfirstabbrvuserfont{text}

    -

    +

    for the first use short form, -


    \glslonguserfont 


    \glslonguserfont{text}

    -

    +

    for the long form, -


    \glsfirstlonguserfont 


    \glsfirstlonguserfont{text}

    -

    +

    for the first use long form, and -


    \glsxtrusersuffix 


    \glsxtrusersuffix

    -

    +

    for the short plural suffix. -

    Similarly for the hyphen styles: -


    \glsabbrvhyphenfont 

    Similarly for the hyphen styles: +


    \glsabbrvhyphenfont{text}

    -

    +

    for the short form, -


    \glsfirstabbrvhyphenfont 


    \glsfirstabbrvhyphenfont{text}

    -

    +

    for the first use short form, -


    \glslonghyphenfont 


    \glslonghyphenfont{text}

    -

    +

    for the long form, -


    \glsfirstlonghyphenfont 


    \glsfirstlonghyphenfont{text}

    -

    +

    for the first use long form, and -


    \glsxtrhyphensuffix 


    \glsxtrhyphensuffix

    -

    +

    for the short plural suffix. -

    Similarly for the “only” styles, such as

    Similarly for the “only” styles, such as long-only-short-only: -


    \glsabbrvonlyfont  : +


    \glsabbrvonlyfont{text}

    -

    +

    for the short form, -


    \glsfirstabbrvonlyfont 


    \glsfirstabbrvonlyfont{text}

    -

    +

    for the first use short form, -


    \glslongonlyfont 


    \glslongonlyfont{text}

    -

    +

    for the long form, -


    \glsfirstlongonlyfont 


    \glsfirstlongonlyfont{text}

    -

    +

    for the first use long form, and -


    \glsxtronlysuffix 


    \glsxtronlysuffix

    -

    +

    for the short plural suffix. -

    Note that by default inserted material (provided in the final optional argument of +

    Note that by default inserted material (provided in the final optional argument of commands like \gls), is placed outside the font command in the predefined styles. To move it inside, use: -


    \glsxtrinsertinsidetrue 


    \glsxtrinsertinsidetrue

    -

    +

    This applies to all the predefined styles. For example:

    -
    +
    \setabbreviationstyle{long-short}  
    \renewcommand*{\glsfirstlongdefaultfont}[1]{\emph{#1}}  
    \glsxtrinsertinsidetrue
    -

    This will make the long form and the inserted text emphasized, whereas the default +

    This will make the long form and the inserted text emphasized, whereas the default (without \glsxtrinsertinsidetrue) would place the inserted text outside of the emphasized font. -

    Note that for some styles, such as the

    Note that for some styles, such as the short-long, the inserted text would be + id="dx1-28081">, the inserted text would be placed inside the font command for the short form (rather than the long form in the above example). -

    Remember that

    Remember that \textsc renders lowercase letters as small capitals. Uppercase letters are rendered as normal uppercase letters, so if you specify the short form in @@ -10950,49 +10599,47 @@ convert its argument to lowercase. For example:

    -
    +
    \renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}}
    -

    -

    If you want to easily switch between the “sc” and “sm” styles, you may find it +

    +

    If you want to easily switch between the “sc” and “sm” styles, you may find it easier to redefine this command to convert case:

    -
    +
    \renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{#1}}}  
    \renewcommand*{\glsabbrvsmfont}[1]{\textsmaller{\MakeTextUppercase{#1}}}
    -

    -

    Some of the styles use -


    \glsxtrfullsep 

    +

    Some of the styles use +


    \glsxtrfullsep{label}

    -

    +

    as a separator between the long and short forms. This is defined as a space by default, but may be changed as required. For example:

    -
    +
    \renewcommand*{\glsxtrfullsep}[1]{~}
    -

    or +

    or

    -
    +
    \renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}}
    -

    -

    The new naming scheme for abbreviation styles is as follows:

    +

    +

    The new naming scheme for abbreviation styles is as follows:

    • field1⟩[field2⟩[-modifier2⟩][-user] -

      This is for the parenthetical styles. The

      This is for the parenthetical styles. The -modifier⟩ parts may be omitted. These styles display ⟨field1⟩ or ⟨field2⟩ starts with “no” then that element is omitted from the display style (no parenthetical part) but is included in the inline style. -

      If the

      If the -modifier⟩ part is present, then the field has a font changing command applied to it. The special modifier -only indicates that field is only present according to whether or not the entry has been used. -

      If

      If post is present then ⟨field2⟩ is placed after the link-text using the post-link hook. -

      If the

      If the -user part is present, then the user1 value, if provided, is inserted + id="dx1-28084"> value, if provided, is inserted into the parenthetical material . (The field used for the inserted material may be changed.) -

      Examples:

      +

      Examples:

      • long-noshort-sc: ⟨: ⟨field1⟩ is the long form, the short form is set in smallcaps but omitted in the display style.
      • long-em-short-em: both the long form and the short form are + id="dx1-28086">: both the long form and the short form are emphasized. The short form is in parentheses.
      • long-short-em: the short form is emphasized but not the long form. + id="dx1-28087">: the short form is emphasized but not the long form. The short form is in parentheses.
      • long-short-user: if the : if the user1 key has been set, this produces the style + id="dx1-28089"> key has been set, this produces the style ⟨long⟩ (⟨short⟩, ⟨short⟩).
      • long-hyphen-postshort-hyphen: the short form and the inserted + id="dx1-28090">: the short form and the inserted material (provided by the final optional argument of commands like \gls) is moved to the post-link hook. The long form is formatted @@ -11087,31 +10734,31 @@ class="cmtt-10">\glsfirstabbrvhyphenfont on first
      • style-noreg -

        Some styles set the

        Some styles set the regular attribute. In some cases, there’s a version of the + id="dx1-28091"> attribute. In some cases, there’s a version of the style that doesn’t set this attribute. For example, long-em-noshort-em sets the + id="dx1-28092"> sets the regular attribute. The attribute. The long-em-noshort-em-noreg style is a minor variation that + id="dx1-28094"> style is a minor variation that style that doesn’t set the attribute. -

        There are a few “noshort” styles, such as

        There are a few “noshort” styles, such as long-hyphen-noshort-noreg, that have + id="dx1-28095">, that have “-noreg” version without a regular version. This is because the style won’t work properly with the regular set, but the naming scheme is maintained for + id="dx1-28096"> set, but the naming scheme is maintained for consistency with the other “noshort” styles.

      • modifier1⟩]-[post]footnote -

        The display style uses ⟨

        The display style uses ⟨field1⟩ followed by a footnote with the other field in it. If post is present then the footnote is placed after the link-text using the post-link hook. The inline style does ⟨field1⟩ followed by the other field in parentheses. -

        If

        If -modifier1⟩ is present, ⟨field1⟩ has a font-changing command applied to it. -

        Examples:

        +

        Examples:

        • short-footnote: short form in the text with the long form in the + id="dx1-28098">: short form in the text with the long form in the footnote.
        • short-sc-postfootnote: short form in smallcaps with the long form in + id="dx1-28099">: short form in smallcaps with the long form in the footnote outside of the link-text.
        -

        Take care with the footnote styles. Remember that there are some situations + id="dx1-28100">link-text.
      +

      Take care with the footnote styles. Remember that there are some situations where \footnote doesn’t work.
      -

      + id="dx1-28101"> doesn’t work.

    +

  • style-desc -

    Like ⟨

    Like ⟨style⟩ but the description key must be provided when defining abbreviations + id="dx1-28102"> key must be provided when defining abbreviations with this style. -

    Examples:

    +

    Examples:

  • -

    Not all combinations that fit the above syntax are provided. Pre-version 1.04 +

    Not all combinations that fit the above syntax are provided. Pre-version 1.04 styles that didn’t fit this naming scheme are either provided with a synonym (where the former name wasn’t ambiguous) or provided with a deprecated synonym (where the former name was confusing). The deprecated style names generate a warning using: -


    \GlsXtrWarnDeprecatedAbbrStyle  \GlsXtrWarnDeprecatedAbbrStyle -{


    \GlsXtrWarnDeprecatedAbbrStyle{old-name}{new-name}

    -

    +

    where ⟨old-name⟩ is the deprecated name and ⟨new-name⟩ is the preferred name. You can suppress these warnings by redefining this command to do nothing. -

    +

    -

    Top

    3.4.1

    Top

    4.4.1 Predefined Abbreviation Styles that Set the Regular Attribute

    -

    The following abbreviation styles set the

    The following abbreviation styles set the regular attribute to “true” for all categories + id="dx1-29001"> attribute to “true” for all categories that have abbreviations defined with any of these styles.

    short-nolong
    This only displays the short form on first use. The name is set to the + id="dx1-29004"> is set to the short form through the command -


    \glsxtrshortnolongname 


    \glsxtrshortnolongname

    -

    +

    (Similarly for the other shortmodifier\newacronym) for it to take effect. Make sure to \protect any formatting commands (or anything else that shouldn’t be expanded). -

    The

    The description is set to the long form. The inline full form displays ⟨ is set to the long form. The inline full form displays ⟨short⟩ (⟨long⟩). The long form on its own can be displayed through commands like \glsxtrlong. + id="dx1-29007">.

    short
    A synonym for short-nolong. + id="dx1-29009">.
    nolong-short
    Like short-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩).
    short-sc-nolong
    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvscfont (which defaults to (which defaults to \textsc).
    short-sc
    A synonym for short-sc-nolong + id="dx1-29016"> @@ -11304,11 +10945,11 @@ class="cmss-10">short-sc-nolongnolong-short-sc
    Like short-sc-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩). The name is still obtained from modifier⟩ unless indicated short-sm-nolong
    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont (which defaults to (which defaults to \textsmaller).
    short-sm
    A synonym for short-sm-nolong. + id="dx1-29023">.
    nolong-short-sm
    Like short-sm-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩). @@ -11358,33 +10999,33 @@ class="cmti-10">short⟩). short-em-nolong
    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-29028">.
    short-em
    A synonym for short-em-nolong + id="dx1-29030">
    nolong-short-em
    Like short-em-nolong but the inline full form displays ⟨ but the inline full form displays ⟨long⟩ (⟨short⟩). @@ -11392,20 +11033,18 @@ class="cmti-10">short⟩). short-nolong-desc
    Like the short-nolong style, but the style, but the name is set to the full form + id="dx1-29035"> is set to the full form obtained by expanding -


    \glsxtrshortdescname 


    \glsxtrshortdescname

    -

    +

    (Similarly for the other shortmodifier\protect fragile and formatting commands and only redefin before \newabbreviation (or \newacronym). -

    The

    The description must be supplied by the user. You may prefer to use + id="dx1-29037"> must be supplied by the user. You may prefer to use the short-nolong style with the post-description hook set to display + id="dx1-29038"> style with the post-description hook set to display the long form and override the description key. (See the sample file + id="dx1-29039"> key. (See the sample file sample-acronym-desc.tex.)

    short-desc
    A synonym for short-nolong-desc. + id="dx1-29041">.
    short-sc-nolong-desc
    Like short-nolong but redefines but redefines \glsabbrvfont to use \glsabbrvscfont (which defaults to (which defaults to \textsc). @@ -11460,83 +11099,81 @@ class="cmtt-10">\textsc). short-sc-desc
    A synonym for short-sc-nolong-desc. + id="dx1-29046">.
    short-sm-nolong-desc
    Like short-nolong-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont (which defaults to (which defaults to \textsmaller).
    short-sm-desc
    A synonym for short-sm-nolong-desc. + id="dx1-29051">.
    short-em-nolong-desc
    Like short-nolong-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-29054">.
    short-em-desc
    A synonym for short-em-nolong-desc. + id="dx1-29056">.
    long-noshort-desc
    This style only displays the long form, regardless of first or subsequent use of commands \gls. The short form may be accessed + id="dx1-29058">. The short form may be accessed through commands like \glsxtrshort. The inline full form displays ⟨. The inline full form displays ⟨long⟩ (⟨short⟩). -

    The

    The sort key are set to the long form. The key are set to the long form. The name key is also set to the long form, + id="dx1-29061"> key is also set to the long form, but this is done by expanding -


    \glsxtrlongnoshortdescname 


    \glsxtrlongnoshortdescname

    -

    +

    (Similarly for the other longmodifier-desc styles, unless indicated otherwise.) This command should only be redefined before abbreviations are defined, and any fragile or formatting commands within it need protecting. -

    The

    The description must be provided by the user. The predefined glossary styles + id="dx1-29063"> must be provided by the user. The predefined glossary styles won’t display the short form. You can use the post-description hook to automatically append the short form to the description. The inline full form will display ⟨short⟩). long-desc

    A synonym for long-noshort-desc. + id="dx1-29065">.
    long-noshort-sc-desc
    Like the long-noshort-desc style but the short form (accessed + id="dx1-29067"> style but the short form (accessed through commands like \glsxtrshort) use ) use \glsabbrvscfont. (This style was + id="dx1-29069">. (This style was originally called long-desc-sc. Renamed in version 1.04, but original name + id="dx1-29070">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    long-noshort-sm-desc
    Like long-noshort-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. (This style was originally called . (This style was originally called long-desc-sm. Renamed in + id="dx1-29074">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.) @@ -11605,60 +11242,58 @@ class="cmss-10">long-desc-smlong-noshort-em-desc
    Like long-noshort-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. The long form isn’t emphasized. (This style was originally + id="dx1-29077">. The long form isn’t emphasized. (This style was originally called long-desc-em. Renamed in version 1.04, but original name retained as a + id="dx1-29078">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    long-em-noshort-em-desc
    New to version 1.04, like long-noshort-desc but + id="dx1-29080"> but redefines \glsabbrvfont to use \glsabbrvemfont. The long form uses + id="dx1-29081">. The long form uses \glsfirstlongemfont and and \glslongemfont. + id="dx1-29083">.
    long-noshort
    This style doesn’t really make sense if you don’t use the short form anywhere in the document, but is provided for completeness. This is like the long-noshort-desc style, but the style, but the sort key is set to the short + id="dx1-29086"> key is set to the short form. The name key is also set to the short form, but this is done by + id="dx1-29087"> key is also set to the short form, but this is done by expanding -


    \glsxtrlongnoshortname 


    \glsxtrlongnoshortname

    -

    +

    (Similarly for other longmodifier-noshortmodifier⟩ styles, unless indicated otherwise.) This command should only be redefined before abbreviations are defined, and fragile or formatting commands should be protected. -

    The

    The description is set to the long form. + id="dx1-29089"> is set to the long form.

    long
    A synonym for long-noshort + id="dx1-29091">
    long-noshort-sc
    Like the long-noshort style but the short form (accessed through + id="dx1-29093"> style but the short form (accessed through commands like \glsxtrshort) use ) use \glsabbrvscfont. (This style was originally + id="dx1-29095">. (This style was originally called long-sc. Renamed in version 1.04, but original name retained as a + id="dx1-29096">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    long-noshort-sm
    Like long-noshort but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. (This style was originally called . (This style was originally called long-sm. Renamed in + id="dx1-29100">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    long-noshort-em
    This style is like long-noshort but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. The long form isn’t emphasized. (This style was originally + id="dx1-29103">. The long form isn’t emphasized. (This style was originally called long-em. Renamed in version 1.04, but original name retained as a + id="dx1-29104">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    long-em-noshort-em
    New to version 1.04, this style is like long-noshort but redefines + id="dx1-29106"> but redefines \glsabbrvfont to use \glsabbrvemfont, , \glsfirstlongfont to use \glsfirstlongemfont and \glslongfont to use \glslongemfont. The short form isn’t used by commands like \gls, but can be obtained using + id="dx1-29108">, but can be obtained using \glsxtrshort. The related style . The related style long-em-noshort-em-noreg doesn’t set the + id="dx1-29110"> doesn’t set the regular attribute. + id="dx1-29111"> attribute.
    -

    +

    -

    Top

    3.4.2

    Top

    4.4.2 Predefined Abbreviation Styles that Don’t Set the Regular Attribute

    -

    The following abbreviation styles will set the

    The following abbreviation styles will set the regular attribute to “false” if it has + id="dx1-30001"> attribute to “false” if it has previously been set. If it hasn’t already been set, it’s left unset. Other attributes may also be set, depending on the style.

    long-short
    On first use, this style uses the format ⟨long⟩ (⟨short⟩). The inline and display full forms are the same. The sort key is set to the short form. The key is set to the short form. The name + id="dx1-30005"> is also set to the short form through -


    \glsxtrlongshortname 


    \glsxtrlongshortname

    -

    +

    (Similarly for other longmodifiermodifier⟩ styles, unless indicated class="cmtt-10">\the\glslongtok and the short form can be referenced with \the\glsshorttok. -

    The

    The description is set to the long form. The long and short forms are separated + id="dx1-30007"> is set to the long form. The long and short forms are separated by \glsxtrfullsep. If you want to insert material within the parentheses (such as a translation), try the long-short-user style. + id="dx1-30008"> style.

    long-short-sc
    Like long-short but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-30011">.
    long-short-sm
    Like long-short but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-30014">.
    long-short-em
    Like long-short but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-30017">.
    long-em-short-em
    New to version 1.04, this style is like long-short-em but redefines + id="dx1-30019"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-30020">. @@ -11875,20 +11508,18 @@ class="cmtt-10">\glsfirstlongemfontlong-only-short-only
    New to version 1.17, this style only shows the long form on first use and only shows the short form on subsequent use. The inline full form \glsxtrfull shows the long form followed by the short form in parentheses. The name field is obtained from -


    \glsxtronlyname  field is obtained from +


    \glsxtronlyname

    -

    +

    Any redefinition of this command must come before the abbreviations are defined as it expands on definition. Make sure you protect any commands that shouldn’t be expanded. The long form can be referenced @@ -11900,21 +11531,19 @@ class="cmtt-10">\the\glsshorttok. long-only-short-only-desc

    New to version 1.17, this style is like long-only-short-only + id="dx1-30025"> but the user must supply the description. The name field is obtained + id="dx1-30026"> field is obtained from -


    \glsxtronlydescname 


    \glsxtronlydescname

    -

    +

    Any redefinition of this command must come before the abbreviations are defined as it expands on definition. Make sure you protect any commands that shouldn’t be expanded. The long form can be referenced @@ -11926,41 +11555,39 @@ class="cmtt-10">\the\glsshorttok. long-em-noshort-em-noreg

    New to version 1.17, this style is like long-em-noshort-em + id="dx1-30029"> but doesn’t set the regular attribute. + id="dx1-30030"> attribute.
    long-short-user
    This style was introduced in version 1.04. It’s like the long-short style + id="dx1-30032"> style but additional information can be inserted into the parenthetical material. This checks the value of the field given by -


    \glsxtruserfield 


    \glsxtruserfield

    -

    +

    (which defaults to useri) using \ifglshasfield (provided by (provided by glossaries). If the field hasn’t been set, the style behaves like the long-short style and produces + id="dx1-30035"> style and produces ⟨long⟩ (⟨short⟩) but if the field has been set, the contents of that field are inserted @@ -11969,53 +11596,49 @@ class="cmti-10">long⟩ (⟨short⟩, ⟨field-value⟩). The format is governed by -


    \glsxtruserparen 


    \glsxtruserparen{text}{label}

    -

    +

    where ⟨text⟩ is the short form (for the long-short-user style) or the long form (for + id="dx1-30037"> style) or the long form (for the short-long-user style). This command first inserts a space using + id="dx1-30038"> style). This command first inserts a space using \glsxtrfullsep and then the parenthetical content (using \glsxtrparen). + id="dx1-30039">). The description is set to -


    \glsuserdescription  is set to +


    \glsuserdescription{long}{label}

    -

    +

    The default definition ignores the ⟨label⟩ and encapsulates ⟨long⟩ with \glslonguserfont. -

    The

    The name is obtained by expanding is obtained by expanding \glsxtrlongshortname (see above). The ⟨text⟩ argument includes the font formatting command, short} in the case of the long-short-user style and style and \glsfirstlongfont{long} in the case of the short-long-user style. -

    For example: + id="dx1-30044"> style. +

    For example:

    -
    +
    \setabbreviationstyle[acronym]{long-short-user}  
    \newacronym{tug}{TUG}{\TeX\ User Group}  
    \newacronym  
     [user1={German Speaking \TeX\ User Group}]  
     {dante}{DANTE}{Deutschsprachige Anwendervereinigung \TeX\ e.V}
    -

    On first use,

    On first use, \gls{tug} will appear as:

    -

    T

    TEX User Group (TUG)

    -

    whereas

    whereas \gls{dante} will appear as:

    -

    Deutschsprachige Anwendervereinigung T

    Deutschsprachige Anwendervereinigung TEX e.V (DANTE, German Speaking TEX User Group)

    -

    The short form is formatted according to -


    \glsabbrvuserfont 

    The short form is formatted according to +


    \glsabbrvuserfont{text}

    -

    +

    and the plural suffix is given by -


    \glsxtrusersuffix 


    \glsxtrusersuffix

    -

    -

    These may be redefined as appropriate. For example, if you want a smallcaps +

    +

    These may be redefined as appropriate. For example, if you want a smallcaps style, you can just set these commands to those used by the long-short-sc + id="dx1-30047"> style:

    -
    +
    \renewcommand{\glsabbruserfont}[1]{\glsabbrvscfont{#1}}  
    \renewcommand{\glsxtrusersuffix}{\glsxtrscsuffix}
    -

    +

    long-noshort-noreg
    This style is like long-noshort but it doesn’t set the but it doesn’t set the regular + id="dx1-30050"> attribute.
    long-noshort-desc-noreg
    This style is like long-noshort-desc but it doesn’t set the + id="dx1-30052"> but it doesn’t set the regular attribute. + id="dx1-30053"> attribute.
    long-short-desc
    On first use, this style uses the format ⟨long⟩ (⟨short⟩). The inline and display full forms are the same. The name is set to the full + id="dx1-30056"> is set to the full form. The sort key is set to ⟨ key is set to ⟨long⟩ (⟨short⟩). Before version 1.04, this was incorrectly set to the short form. If you want to revert back to this you can redefine -


    \glsxtrlongshortdescsort 


    \glsxtrlongshortdescsort

    -

    +

    For example:

    -
    +
    \renewcommand*{\glsxtrlongshortdescsort}{\the\glsshorttok}
    -

    The

    The description must be supplied by the user. The long and short + id="dx1-30059"> must be supplied by the user. The long and short forms are separated by \glsxtrfullsep. The name field is obtained + id="dx1-30060"> field is obtained from -


    \glsxtrlongshortdescname 


    \glsxtrlongshortdescname

    -

    +

    (Similarly for other longmodifier\the\glsshorttok. long-short-sc-desc

    Like long-short-desc but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-30064">.
    long-short-sm-desc
    Like long-short-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-30067">.
    long-short-em-desc
    Like long-short-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-30070">.
    long-em-short-em-desc
    New to version 1.04, this style is like long-short-em-desc but + id="dx1-30072"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-30073">.
    long-em-noshort-em-desc-noreg
    New to version 1.17, this style is like long-em-noshort-em-desc but doesn’t set the but doesn’t set the regular attribute. + id="dx1-30076"> attribute.
    long-short-user-desc
    New to version 1.04, this style is like a cross between the long-short-desc style and the style and the long-short-user style. The display and + id="dx1-30079"> style. The display and inline forms are as for long-short-user and the and the name key is obtained + id="dx1-30081"> key is obtained from -


    \glsxtrlongshortuserdescname 


    \glsxtrlongshortuserdescname

    -

    +

    Again, this should only be redefined before \newabbreviation (or \newacronym), and fragile and formatting commands need protecting. -

    The

    The description key must be supplied in the optional argument of + id="dx1-30083"> key must be supplied in the optional argument of \newabbreviation (or \newacronym). The sort key is set to ⟨ key is set to ⟨long⟩ (⟨short⟩) as per the long-short-desc style. + id="dx1-30085"> style.

    short-nolong-noreg
    This is like short-nolong but doesn’t set the but doesn’t set the regular attribute. + id="dx1-30088"> attribute.
    nolong-short-noreg
    This is like nolong-short but doesn’t set the but doesn’t set the regular attribute. + id="dx1-30091"> attribute.
    short-long
    On first use, this style uses the format ⟨short⟩ (⟨long⟩). The inline and display full forms are the same. The name and and sort keys are set to the + id="dx1-30095"> keys are set to the short form. The description is set to the long form. The short and long + id="dx1-30096"> is set to the long form. The short and long forms are separated by \glsxtrfullsep. If you want to insert material within the parentheses (such as a translation), try the short-long-user + id="dx1-30097"> style. -

    The

    The name field is obtained from -


    \glsxtrshortlongname  field is obtained from +


    \glsxtrshortlongname

    -

    +

    (Similarly for other shortmodifier\the\glsshorttok. short-sc-long

    Like short-long but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-30102">.
    short-sm-long
    Like short-long but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-30105">.
    short-em-long
    Like short-long but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-30108">.
    short-em-long-em
    New to version 1.04, this style is like short-em-long but redefines + id="dx1-30110"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-30111">.
    short-long-user
    New to version 1.04. This style is like the long-short-user style but + id="dx1-30113"> style but with the long and short forms switched. The parenthetical material is governed by the same command \glsxtruserparen, but the first argument supplied to it + id="dx1-30114">, but the first argument supplied to it is the long form instead of the short form. The name field is obtained by + id="dx1-30115"> field is obtained by expanding -


    \glsxtrshortlongname 


    \glsxtrshortlongname

    -

    +

    Again, this should only be redefined before \newabbreviation (or \newacronym) and commands that should be expanded need to be protected. The description is set to is set to \glsuserdescription{long}{}. short-nolong-desc-noreg

    This style is like short-nolong-desc but it doesn’t set the + id="dx1-30119"> but it doesn’t set the regular attribute. + id="dx1-30120"> attribute.
    short-long-desc
    On first use, this style uses the format ⟨short⟩ (⟨long⟩). The inline and display full forms are the same. The name is set to the full + id="dx1-30123"> is set to the full form. The description must be supplied by the user. The short and long + id="dx1-30124"> must be supplied by the user. The short and long forms are separated by \glsxtrfullsep. The name field is obtained + id="dx1-30125"> field is obtained from -


    \glsxtrshortlongdescname 


    \glsxtrshortlongdescname

    -

    +

    (Similarly for other shortmodifier\the\glsshorttok. short-sc-long-desc

    Like short-long-desc but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. + id="dx1-30129">.
    short-sm-long-desc
    Like short-long-desc but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. + id="dx1-30132">.
    short-em-long-desc
    Like short-long-desc but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. + id="dx1-30135">.
    short-em-long-em-desc
    New to version 1.04, this style is like short-em-long-desc but + id="dx1-30137"> but redefines \glsfirstlongfont to use \glsfirstlongemfont. + id="dx1-30138">.
    short-long-user-desc
    New to version 1.04, this style is like a cross between the short-long-desc style and the style and the short-long-user style. The display and + id="dx1-30141"> style. The display and inline forms are as for short-long-user, but the , but the name key is obtained + id="dx1-30143"> key is obtained from -


    \glsxtrshortlonguserdescname 


    \glsxtrshortlonguserdescname

    -

    +

    Again, this should only be redefined before \newabbreviation (or \newacronym), and fragile and formatting commands need protecting. -

    The

    The description key must be supplied in the optional argument of + id="dx1-30145"> key must be supplied in the optional argument of \newabbreviation (or \newacronym). @@ -12593,36 +12198,34 @@ class="cmtt-10">\newacronym). short-footnote

    On first use, this style displays the short form with the long form as a footnote. This style automatically sets the nohyperfirst attribute to “true” for + id="dx1-30148"> attribute to “true” for the supplied category, so the first use won’t be hyperlinked (but the footnote + id="dx1-30149">first use won’t be hyperlinked (but the footnote marker may be, if the hyperref package is used). -

    The inline full form uses the ⟨ package is used). +

    The inline full form uses the ⟨short⟩ (⟨long⟩) style. The name is set to the short + id="dx1-30151"> is set to the short form. The description is set to the long form. The is set to the long form. The name key is obtained by - expanding -


    \glsxtrfootnotename  key is obtained by + expanding: +


    \glsxtrfootnotename

    -

    +

    (Similarly for other shortmodifierfootnote styles, unless class="cmtt-10">\newabbreviation (or \newacronym), and fragile or formatting commands should be protected from expansion. -

    As from version 1.05, all the footnote styles use: -


    \glsfirstlongfootnotefont 

    As from version 1.05, all the footnote styles use: +


    \glsfirstlongfootnotefont{text} -

    -

    +class="cmtt-10">}


    +

    to format the long form on first use or for the full form and -


    \glslongfootnotefont  first use or for the full form and +


    \glslongfootnotefont{text}

    -

    +

    to format the long form elsewhere (for example, when used with \glsxtrlong). -

    As from version 1.07, all the footnote styles use: -


    \glsxtrabbrvfootnote 

    As from version 1.07, all the footnote styles use: +


    \glsxtrabbrvfootnote{label}{long}

    -

    +

    By default, this just does \footnote{long} (the first argument is ignored). For @@ -12679,282 +12275,438 @@ class="cmtt-10">} (the first argument is ignored). For

    -
    +
    \renewcommand{\glsxtrabbrvfootnote}[2]{%  
      \footnote{\glshyperlink[#2]{#1}}%  
    }
    -

    or to include the short form with a hyperlink: +

    or to include the short form with a hyperlink:

    -
    +
    \renewcommand{\glsxtrabbrvfootnote}[2]{%  
      \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}%  
    }
    -

    Note that I haven’t used commands like

    Note that I haven’t used commands like \glsxtrshort to avoid interference (see §2.3 §2.4 Entry Display Style Modifications and §2.7 §2.8 Nested Links).

    footnote
    A synonym for short-footnote. + id="dx1-30161">.
    short-sc-footnote
    Like short-footnote but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. (This style was originally called . (This style was originally called footnote-sc. Renamed in + id="dx1-30165">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    short-sc-footnote
    Like short-footnote but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. (This style was originally called . (This style was originally called footnote-sm. Renamed in + id="dx1-30169">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    short-em-footnote
    Like short-footnote but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. (This style was originally called . (This style was originally called footnote-em. Renamed in + id="dx1-30173">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    +short-footnote-desc
    (New to v1.42.) This is similar to short-footnote, but the + description must be supplied by the user. The name field is obtained + from: +


    \glsxtrfootnotedescname

    +

    + which defaults to ⟨short⟩ followed by ⟨long⟩ in parentheses, and the sort field is + obtained from: +


    \glsxtrfootnotedescsort

    +

    + which defaults to just the short form. (Similarly for other + shortmodifier-[post]footnote-desc styles, unless indicated otherwise.) + + + +

    Any redefinition of these commands must come before the abbreviations + are defined as it expands on definition. Make sure you protect any + commands that shouldn’t be expanded. The long form can be referenced + with \the\glslongtok and the short form can be referenced with + \the\glsshorttok. +

    +footnote-desc
    A synonym for short-footnote-desc. +
    +short-sc-footnote-desc
    Like short-footnote-desc but redefines \glsabbrvfont to use + \glsabbrvscfont. +
    +short-sm-footnote-desc
    Like short-footnote-desc but redefines \glsabbrvfont to use + \glsabbrvsmfont. +
    +short-em-footnote-desc
    Like short-footnote-desc but redefines \glsabbrvfont to use + \glsabbrvemfont. +
    short-postfootnote
    This is similar to the short-footnote style but doesn’t modify the + id="dx1-30193"> style but doesn’t modify the category attribute. Instead it changes \glsxtrpostlinkcategory to insert the + id="dx1-30194"> to insert the footnote after the link-text on first use. This will also defer the footnote until after any following punctuation character that’s recognised by \glsxtrifnextpunc. -

    The inline full form uses the ⟨. +

    The inline full form uses the ⟨short⟩ (⟨long⟩) style. The name is set to the short + id="dx1-30198"> is set to the short form. The description is set to the long form. Note that this style will change + id="dx1-30199"> is set to the long form. Note that this style will change \glsxtrfull (and its variants) so that it fakes non-first use. (Otherwise the + id="dx1-30200">first use. (Otherwise the footnote would appear after the inline form.)

    postfootnote
    A synonym for short-postfootnote. - - - + id="dx1-30202">.
    short-sc-postfootnote
    Like short-postfootnote but redefines but redefines \glsabbrvfont to use \glsabbrvscfont. (This style was originally called . (This style was originally called postfootnote-sc. Renamed in + id="dx1-30206">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    short-sm-postfootnote
    Like short-postfootnote but redefines but redefines \glsabbrvfont to use \glsabbrvsmfont. (This style was originally called . (This style was originally called postfootnote-sm. Renamed + id="dx1-30210">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.) + + +
    short-em-postfootnote
    Like short-postfootnote but redefines but redefines \glsabbrvfont to use \glsabbrvemfont. (This style was originally called . (This style was originally called postfootnote-em. Renamed + id="dx1-30214">. Renamed in version 1.04, but original name retained as a deprecated synonym for backward-compatibility.)
    +short-postfootnote-desc
    (New to v1.42.) This is similar to short-postfootnote, but + the description must be supplied by the user. The name and sort are set as for + short-footnote-desc. +
    +postfootnote-desc
    A synonym for short-postfootnote-desc. +
    +short-sc-postfootnote-desc
    Like short-postfootnote-desc but redefines \glsabbrvfont + to use \glsabbrvscfont. +
    +short-sm-postfootnote-desc
    Like short-postfootnote-desc but redefines \glsabbrvfont + to use \glsabbrvsmfont. +
    +short-em-postfootnote-desc
    Like short-postfootnote-desc but redefines \glsabbrvfont + to use \glsabbrvemfont. +
    short-postlong-user
    This style was introduced in version 1.12. It’s like the short-long-user style but defers the parenthetical material to after the link-text. + id="dx1-30233"> style but defers the parenthetical material to after the link-text. This means that you don’t have such a long hyperlink (which can cause problems for the DVI LATEX format) and it also means that the user supplied material can include a hyperlink to another location. The name key is obtained + id="dx1-30234"> key is obtained from \glsxtrshortlongname.
    short-postlong-user-desc
    This style was introduced in version 1.12. It’s like the above short-postlong-user style but the style but the description must be specified. The must be specified. The name + id="dx1-30238"> is obtained from \glsxtrshortlonguserdescname.
    long-postshort-user
    This style was introduced in version 1.12. It’s like the above short-postlong-user style but the long form is shown first and + id="dx1-30240"> style but the long form is shown first and the short form is in the parenthetical material (as for long-short-user) + id="dx1-30241">) style.
    long-postshort-user-desc
    This style was introduced in version 1.12. It’s like the above long-postshort-user style but the style but the description must be specified. The must be specified. The name + id="dx1-30245"> is obtained from \glsxtrlongshortuserdescname. + + +
    long-hyphen-short-hyphen
    This style (new to v1.17) is designed to work with the markwords category attribute. The full form is formatted + id="dx1-30247"> category attribute. The full form is formatted using -


    \glsxtrlonghyphenshort 


    \glsxtrlonghyphenshort{label}{long}{short} - {}{insert}

    - - - -

    +

    where ⟨insert⟩ is the inserted material provided in the final optional argument of commands like \insert. If ⟨insert⟩ start with a hyphen, then this locally redefines \glsxtrwordsep to a hyphen, which means that if the to a hyphen, which means that if the markwords + id="dx1-30250"> attribute is set then the long form will become hyphenated. (If this attribute isn’t set, there’s no alteration to the way the long form is displayed.) The name + id="dx1-30251"> key is obtained from \glsxtrlongshortname. -

    Unlike the other ⟨

    Unlike the other ⟨long⟩ (⟨short⟩) type of styles, such as long-short, this style also + id="dx1-30252">, this style also repeats the insertion in the parenthetical part, so that the first use form is:

    -

    \glsfirstlonghyphenfont{long}\glsfirstabbrvhyphenfont{short}insert⟩)

    -

    The space before the parenthetical material is actually given by +

    The space before the parenthetical material is actually given by \glsxtrfullsep{labelinsert⟩ may be moved into the formatting commands according to the conditional \ifglsxtrinsertinside. -

    For example, if

    For example, if ip is defined using:

    -
    +
    \glssetcategoryattribute{english}{markwords}{true}  
    \setabbreviationstyle[english]{long-hyphen-short-hyphen}  
    \newabbreviation[category=english]{ip}{IP}{Internet Protocol}
    -

    then +

    then

    -
    +
    \gls{ip}[-Adressen]
    -

    will do +

    will do

    -

    Internet-Protocol-Adressen (IP-Adressen)

    -

    on first use, whereas +

    Internet-Protocol-Adressen (IP-Adressen)

    +

    on first use, whereas

    -
    +
    \gls{ip}[ Address]
    -

    will do +

    will do

    -

    Internet Protocol Address (IP Address)

    -

    on first use. -

    Note that the hyphenation isn’t applied when using commands like +

    Internet Protocol Address (IP Address)

    +

    on first use. +

    Note that the hyphenation isn’t applied when using commands like \glsxtrlong. This means that

    -
    +
    \glsxtrlong{ip}[-Adressen]
    -

    will do +

    will do

    -

    Internet Protocol-Adressen

    +

    Internet Protocol-Adressen

    -

    -

    If the

    +

    If the markwords attribute hadn’t been set, then the first use of + id="dx1-30253"> attribute hadn’t been set, then the first use of

    -
    +
    \gls{ip}[-Adressen]
    -

    would do +

    would do

    -

    Internet Protocol-Adressen (IP-Adressen)

    -

    instead. -

    If the inserted material ⟨

    Internet Protocol-Adressen (IP-Adressen)

    +

    instead. +

    If the inserted material ⟨insert⟩ is likely to contain commands like \gls, then use long-hyphen-postshort-hyphen instead to avoid nested links. + id="dx1-30254"> instead to avoid nested links.
    -

    -

    If you want the short version in small-caps, you can just redefine +

    +

    If you want the short version in small-caps, you can just redefine \glsabbrvhyphenfont and \glsxtrhyphensuffix to use the small-caps @@ -13082,65 +12834,65 @@ class="cmtt-10">\glsxtrhyphensuffix to use the small-caps

    -
    +
    \renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont}  
    \renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix}
    -

    Similarly for other font-changing variations. +

    Similarly for other font-changing variations.

    long-hyphen-noshort-desc-noreg
    New to version 1.17, this style is like long-hyphen-short-hyphen-desc except that the parenthetical part is omitted and + id="dx1-30256"> except that the parenthetical part is omitted and the long form is displayed on subsequent use. The short form can be accessed with \glsxtrshort but just uses the default abbreviation font. There’s no regular version of this style as the regular form doesn’t have the flexibility to deal with the hyphen switch. The name is obtained from + id="dx1-30257"> is obtained from \glsxtrlongnoshortdescname.
    long-hyphen-noshort-noreg
    New to version 1.17, this style is like long-hyphen-noshort-desc-noreg but the name is set to the short form and the + id="dx1-30259"> but the name is set to the short form and the description is set to the long form.
    long-hyphen-short-hyphen-desc
    -

    New to version 1.17. This is similar to

    New to version 1.17. This is similar to long-hyphen-short-hyphen but the user + id="dx1-30261"> but the user supplies the description. The name is obtained from is obtained from \glsxtrlongshortdescname.

    long-hyphen-postshort-hyphen
    -

    New to version 1.17. This is similar to

    New to version 1.17. This is similar to long-hyphen-short-hyphen but the + id="dx1-30264"> but the inserted and parenthetical material are moved to the post-link hook. On first use, \gls{}insert
    where -


    \glsxtrposthyphenshort 


    \glsxtrposthyphenshort{label}insert⟩ -

    -

    +class="cmitt-10">insert⟩


    +

    is in the post-link hook. This uses the format:
    insert⟩ (isnert⟩) -

    The singular short form is always used here, even with

    The singular short form is always used here, even with \glspl. (Unlike long-hyphen-long-hyphen.)
    -

    -

    The part in the link-text on first use: -


    \glsxtrlonghyphen  .)
    +

    +

    The part in the link-text on first use: +


    \glsxtrlonghyphen{long}{label}{insert} -

    -

    +class="cmtt-10">}


    +

    checks if ⟨insert⟩ starts with a hyphen. If it does, then \glsxtrwordsep is locally @@ -13217,15 +12963,15 @@ class="cmti-10">insert⟩ for this style without causing nested hyperlinks, but only for commands like \gls. -

    Don’t use

    Don’t use \gls in the ⟨insert⟩ part for commands like \glsxtrfull, \glsxtrshort or \glsxtrlong.
    -

    -

    The inline full display format used by commands like

    +

    The inline full display format used by commands like \glsxtrfull behaves differently to the first use of \gls with this style. It’s better @@ -13240,63 +12986,59 @@ class="cmtt-10">} if you want to ensure the full long-hyphen-postshort-hyphen-desc

    -

    New to version 1.17. This is similar to

    New to version 1.17. This is similar to long-hyphen-postshort-hyphen + id="dx1-30269"> but the user supplies the description. The name is obtained from + id="dx1-30270"> is obtained from \glsxtrlongshortdescname.

    short-hyphen-long-hyphen
    This style (new to v1.17) is like long-hyphen-short-hyphen, + id="dx1-30272">, except that the short form is displayed first followed by the long form in parentheses. The full form is formatted using -


    \glsxtrshorthyphenlong 


    \glsxtrshorthyphenlong{label}{short}{long} - {}{insert}

    -

    +

    which behaves in an analogous way to \glsxtrlonghyphenshort. The name is + id="dx1-30274"> is obtained from \glsxtrshortlongname.

    short-hyphen-long-hyphen-desc
    -

    New to version 1.17. This is similar to

    New to version 1.17. This is similar to short-hyphen-long-hyphen but the user + id="dx1-30276"> but the user supplies the description. The name is obtained from is obtained from \glsxtrshortlongdescname. @@ -13305,12 +13047,12 @@ class="cmtt-10">\glsxtrshortlongdescname. short-hyphen-postlong-hyphen

    This style (new to v1.17) is like long-hyphen-postshort-hyphen, but the short form is displayed first followed by + id="dx1-30279">, but the short form is displayed first followed by the long form in parentheses. On first use, \gls{label}insert
    where -


    \glsxtrposthyphenlong 


    \glsxtrposthyphenlong{label}insert⟩ -

    -

    +class="cmitt-10">insert⟩


    +

    is in the post-link hook. These commands behave in an analogous manner to those used with long-hyphen-postshort-hyphen. The . The name is obtained from + id="dx1-30282"> is obtained from \glsxtrshortlongname. -

    Don’t use

    Don’t use \gls in the ⟨insert⟩ part for commands like \glsxtrfull, \glsxtrshort or \glsxtrlong.
    -

    -

    The inline full display format used by commands like

    +

    The inline full display format used by commands like \glsxtrfull behaves differently to the first use of \gls with this style. It’s better @@ -13375,107 +13114,102 @@ class="cmtt-10">} if you want to ensure the full short-hyphen-postlong-hyphen-desc

    -

    New to version 1.17. This is similar to

    New to version 1.17. This is similar to short-hyphen-postlong-hyphen + id="dx1-30284"> but the user supplies the description. The name is obtained from + id="dx1-30285"> is obtained from \glsxtrshortlongdescname.

    -

    +

    -

    Top

    3.5

    Top

    4.5 Defining New Abbreviation Styles

    -

    New abbreviation styles may be defined using: -


    \newabbreviationstyle 

    New abbreviation styles may be defined using: +


    \newabbreviationstyle{name}{setup}{fmts} -

    -

    - - - -

    where ⟨}


    +

    +

    where ⟨name⟩ is the name of the new style (as used in the mandatory argument of \setabbreviationstyle). This is similar but not identical to the ). This is similar but not identical to the glossaries package’s \newacronymstyle command. -

    You can’t use styles defined by command. + + + +

    You can’t use styles defined by \newacronymstyle with glossaries-extra unless you have reverted \newacronym back to its generic definition from + id="dx1-31004"> back to its generic definition from glossaries (using \RestoreAcronyms). The acronym styles from the ). The acronym styles from the glossaries package can’t be used with abbreviations defined with \newabbreviation.
    -

    -

    The ⟨

    +

    The ⟨setup⟩ argument deals with the way the entry is defined and may set attributes for the given abbreviation category. This argument should redefine -


    \CustomAbbreviationFields 


    \CustomAbbreviationFields

    -

    +

    to set the entry fields including the name (defaults to the short form if omitted), + id="dx1-31007"> (defaults to the short form if omitted), sort, , first, , firstplural. Other fields may also be set, such as . Other fields may also be set, such as text, , plural and + id="dx1-31012"> and description. -

    . +

    \CustomAbbreviationFields is expanded by \newabbreviation so take care to protect commands that shouldn’t be expanded.
    -

    -

    For example, the

    +

    For example, the long-short style has the following in ⟨ style has the following in ⟨setup⟩:

    -
    +
      \renewcommand*{\CustomAbbreviationFields}{%  
        name={\protect\glsabbrvfont{\the\glsshorttok}},  
        sort={\the\glsshorttok}, @@ -13488,24 +13222,24 @@ class="cmti-10">setup⟩:  
        plural={\protect\glsabbrvfont{\the\glsshortpltok}},%  
        description={\the\glslongtok}}%
    -

    Note that the

    Note that the first and and firstplural are set even though they’re not used by + id="dx1-31016"> are set even though they’re not used by \gls. -

    The basic styles, such as

    The basic styles, such as long-short, use commands like , use commands like \glsabbrvfont (which are redefined whenever the style formatting is set) within \CustomAbbreviationFields. Other styles, such as long-em-short-em directly use their own custom commands, such + id="dx1-31018"> directly use their own custom commands, such as \glsabbrvemfont. With these styles, commands like \glsabbrvfont still need to @@ -13513,26 +13247,24 @@ be defined as appropriate in the ⟨fmts⟩ argument even if they’re not used within \CustomAbbreviationFields. -

    The ⟨

    The ⟨setup⟩ argument may also redefine -


    \GlsXtrPostNewAbbreviation 


    \GlsXtrPostNewAbbreviation

    -

    +

    which can be used to assign attributes. (This will automatically be initialised to do nothing.) -

    For example, the

    For example, the short-footnote includes the following in ⟨ includes the following in ⟨setup⟩:

    -
    +
      \renewcommand*{\GlsXtrPostNewAbbreviation}{%  
        \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%  
        \glshasattribute{\the\glslabeltok}{regular}% @@ -13542,252 +13274,216 @@ class="cmti-10">setup⟩:  
        {}%  
      }%
    -

    This sets the

    This sets the nohyperfirst attribute to “true”. It also unsets the attribute to “true”. It also unsets the regular attribute if it + id="dx1-31022"> attribute if it has previously been set. Note that the nohyperfirst attribute doesn’t get unset by + id="dx1-31023"> attribute doesn’t get unset by other styles, so take care not to switch styles for the same category. -

    You can access the short, long, short plural and long plural values through the +

    You can access the short, long, short plural and long plural values through the following token registers. -

    Short value (defined by

    Short value (defined by glossaries): -


    \glsshorttok 


    \glsshorttok

    -

    -

    Short plural value (defined by

    +

    Short plural value (defined by glossaries-extra): -


    \glsshortpltok 


    \glsshortpltok

    -

    +

    (This may be the default value or, if provided, the value provided by the user through the shortplural key in the optional argument of key in the optional argument of \newabbreviation.) -

    Long value (defined by .) +

    Long value (defined by glossaries): -


    \glslongtok 


    \glslongtok

    -

    -

    Long plural value (defined by

    +

    Long plural value (defined by glossaries-extra): -


    \glslongpltok 


    \glslongpltok

    -

    +

    (This may be the default value or, if provided, the value provided by the user through the longplural key in the optional argument of key in the optional argument of \newabbreviation.) -

    The short or long values may be modified by attributes (such as .) +

    The short or long values may be modified by attributes (such as markwords). The + id="dx1-31032">). The above registers reflect the modification. If you want to access the original (unmodified) short or long form (as provided in the final two arguments of \newabbreviation), then use the commands: -


    \glsxtrorgshort 


    \glsxtrorgshort

    -

    +

    for the short form and -


    \glsxtrorglong 


    \glsxtrorglong

    -

    +

    for the long form. (These may be useful for the sort key to avoid any formatting that + id="dx1-31035"> key to avoid any formatting that may be added by the attribute setting.) -

    There are two other registers available that are defined by

    There are two other registers available that are defined by glossaries: -


    \glslabeltok 


    \glslabeltok

    -

    +

    which contains the entry’s label and -


    \glskeylisttok 


    \glskeylisttok

    -

    +

    which contains the values provided in the optional argument of \newabbreviation. -

    Remember put . +

    Remember put \the in front of the register command as in the examples above. The category label can be access through the command (not a register): -


    \glscategorylabel 


    \glscategorylabel

    -

    +

    This may be used inside the definition of \GlsXtrPostNewAbbreviation. -

    If you want to base a style on an existing style, you can use -


    \GlsXtrUseAbbrStyleSetup 

    If you want to base a style on an existing style, you can use +


    \GlsXtrUseAbbrStyleSetup{name}

    -

    +

    where ⟨name⟩ is the name of the existing style. For example, the long-noshort-sc-desc + id="dx1-31041"> style simply does

    -
    +
    \GlsXtrUseAbbrStyleSetup{long-noshort-desc}
    -

    within ⟨

    within ⟨setup⟩. -

    The ⟨

    The ⟨fmts⟩ argument deals with the way the entry is displayed in the document. This argument should redefine the following commands. -

    The default suffix for the plural short form (if not overridden by the

    The default suffix for the plural short form (if not overridden by the shortplural + id="dx1-31042"> key): -


    \abbrvpluralsuffix 


    \abbrvpluralsuffix

    -

    +

    (Note that this isn’t used for the plural long form, which just uses the regular \glspluralsuffix.) -

    The font used for the short form on

    The font used for the short form on first use or in the full forms: -


    \glsfirstabbrvfont 


    \glsfirstabbrvfont{text}

    -

    -

    The font used for the short form on subsequent use or through commands like +

    +

    The font used for the short form on subsequent use or through commands like \glsxtrshort: -


    \glsabbrvfont  : +


    \glsabbrvfont{text}

    -

    -

    The font used for the long form on first use or in the full forms: -


    \glsfirstlongfont 

    +

    The font used for the long form on first use or in the full forms: +


    \glsfirstlongfont{text}

    -

    -

    The font used for the long form in commands like

    +

    The font used for the long form in commands like \glsxtrlong use: -


    \glslongfont 


    \glslongfont{text}

    -

    -

    Display full form singular no case-change (used by

    +

    Display full form singular no case-change (used by \gls on first use for + id="dx1-31051"> on first use for abbreviations without the regular attribute set): -


    \glsxtrfullformat  attribute set): +


    \glsxtrfullformat{label}{insert}

    -

    -

    Display full form singular first letter converted to upper case (used by

    +

    Display full form singular first letter converted to upper case (used by \Gls on + id="dx1-31055"> on first use for abbreviations without the first use for abbreviations without the regular attribute set): -


    \Glsxtrfullformat  attribute set): +


    \Glsxtrfullformat{label}{insert}

    -

    -

    Display full form plural no case-change (used by

    +

    Display full form plural no case-change (used by \glspl on first use for + id="dx1-31059"> on first use for abbreviations without the regular attribute set): -


    \glsxtrfullplformat  attribute set): +


    \glsxtrfullplformat{label}{}

    -

    -

    Display full form plural first letter converted to upper case (used by

    +

    Display full form plural first letter converted to upper case (used by \Glspl on + id="dx1-31063"> on first use for abbreviations without the regular attribute set): -


    \Glsxtrfullplformat  attribute set): +


    \Glsxtrfullplformat{label}{insert}

    -

    -

    In addition ⟨

    +

    In addition ⟨fmts⟩ may also redefine the following commands that govern the inline full formats. If the style doesn’t redefine them, they will default to the same as the display full forms. -

    Inline singular no case-change (used by

    Inline singular no case-change (used by \glsentryfull, , \glsxtrfull and + id="dx1-31068"> and \GLSxtrfull): -


    \glsxtrinlinefullformat  ): +


    \glsxtrinlinefullformat{label}{insert} -

    -

    -

    Inline singular first letter converted to upper case (used by }


    +

    +

    Inline singular first letter converted to upper case (used by \Glsentryfull and + id="dx1-31071"> and \Glsxtrfull): -


    \Glsxtrinlinefullformat  ): +


    \Glsxtrinlinefullformat{label}{insert} -

    -

    -

    Inline plural no case-change (used by }


    +

    +

    Inline plural no case-change (used by \glsentryfullpl, , \glsxtrfullpl and + id="dx1-31075"> and \GLSxtrfullpl): -


    \glsxtrinlinefullplformat  ): +


    \glsxtrinlinefullplformat{label}{insert} -

    -

    -

    Inline plural first letter converted to upper case (used by }


    +

    +

    Inline plural first letter converted to upper case (used by \Glsentryfullpl and + id="dx1-31078"> and \Glsxtrfullpl): -


    \Glsxtrinlinefullplformat  ): +


    \Glsxtrinlinefullplformat{label}{insert} -

    -

    -

    (New to version 1.17.) You can also modify the way the subsequent use is +class="cmtt-10">}


    +

    +

    (New to version 1.17.) You can also modify the way the subsequent use is formatted by redefining the following four commands, but these won’t be used for abbreviations with the regular attribute set. If the style doesn’t redefine these + id="dx1-31081"> attribute set. If the style doesn’t redefine these commands, the default values are used. -

    Singular with no case-change: -


    \glsxtrsubsequentfmt 

    Singular with no case-change: +


    \glsxtrsubsequentfmt{label}{insert}

    -

    -

    Singular with first letter upper case: -


    \Glsxtrsubsequentfmt  \Glsxtrsubsequentfmt{

    +

    Singular with first letter upper case: +


    \Glsxtrsubsequentfmt{label}{insert}

    +

    +

    Plural with no case-change: +


    \glsxtrsubsequentplfmt{label}{insert}

    -

    +

    -

    Plural with no case-change: -


    \glsxtrsubsequentplfmt  \glsxtrsubsequentplfmt{label}{insert} -

    -

    -

    Plural with first letter upper case: -


    \Glsxtrsubsequentplfmt 

    Plural with first letter upper case: +


    \Glsxtrsubsequentplfmt{label}{insert} -

    -

    -

    If you want to provide support for }


    +

    +

    If you want to provide support for glossaries-accsupp use the following + id="dx1-31086"> use the following \glsaccessxxx⟩ commands (§11.2 §12.2 Accessibility Support) within the definitions of \glsxtrfullformat etc instead of the analogous \glsentryxxx⟩ commands. (If you don’t use glossaries-accsupp, they will just do the corresponding , they will just do the corresponding \glsentryxxx⟩ command.) -

    For example, the

    For example, the short-long style has the following in ⟨ style has the following in ⟨fmts⟩:

    -
    +
      \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%  
      \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}%  
      \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}% @@ -14005,44 +13677,42 @@ class="cmti-10">fmts⟩:  
        \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%  
      }%
    -

    Since the inline full commands aren’t redefined, they default to the same as the +

    Since the inline full commands aren’t redefined, they default to the same as the display versions. -

    If you want to base a style on an existing style, you can use -


    \GlsXtrUseAbbrStyleFmts 

    If you want to base a style on an existing style, you can use +


    \GlsXtrUseAbbrStyleFmts{name}

    -

    +

    within ⟨fmts⟩, where ⟨name⟩ is the name of the existing style. For example, the long-short-desc style has the following in ⟨ style has the following in ⟨fmts⟩:

    -
    +
      \GlsXtrUseAbbrStyleFmts{long-short}%
    -

    -

    Here’s an example of an abbreviation style that’s based on

    +

    Here’s an example of an abbreviation style that’s based on long-short that displays + id="dx1-31091"> that displays the short form within \textsf:

    -
    +
    \newabbreviationstyle  
    {custom-sf}% label  
    {% setup @@ -14053,37 +13723,37 @@ class="cmtt-10">\textsf:  
      \renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}%  
    }
    -

    Note that this wouldn’t work if it was instead based on one of the modified versions +

    Note that this wouldn’t work if it was instead based on one of the modified versions such as short-sc-long as they explicitly use their own formatting commands, such as + id="dx1-31092"> as they explicitly use their own formatting commands, such as \glsabbrvemfont. The base styles, such as short-long, use the more generic + id="dx1-31093">, use the more generic \glsabbrvfont etc which makes them easier to adapt than the modified styles. -

    For further details, see the “Abbreviations” section in the documented code +

    For further details, see the “Abbreviations” section in the documented code (glossaries-extra-code.pdf).

    -

    -

    Top

    4.

    +

    Top

    5. Entries in Sectioning Titles, Headers, Captions and Contents

    -

    The

    The glossaries user manual cautions against using commands like \gls in chapter or section titles. The principle problems are:

    • if you have a table of contents, the first use flag will be unset in the contents rather than later in the document;
    • @@ -14100,27 +13770,31 @@ class="cmtt-10">\gls etc) will be converted to upper case and the
    • if you use hyperref, commands like , commands like \gls can’t be expanded to a simple string and only the label will appear in the PDF bookmark (with a warning from hyperref); + id="dx1-32003">);
    • if you use hyperref, you will end up with nested hyperlinks in the table of + id="dx1-32004">, you will end up with nested hyperlinks in the table of contents.
    -

    Similar problems can also occur with captions (except for the page header and bookmark +

    Similar problems can also occur with captions (except for the page header and bookmark issues). -

    To get around all these problems, the +

    Top

    5.1 Simplistic Approach

    +

    To get around all these problems, the glossaries user manual recommends using the expandable non-hyperlink commands, such as \glsentrytext + id="dx1-33001"> (for regular entries) or \glsentryshort (for abbreviations). This is the + id="dx1-33002"> (for abbreviations). This is the simplest solution, but doesn’t allow for special formatting that’s applied to the entry through commands like \glstext or \glsxtrshort. This means that if, for example, you are using one of the abbreviation styles that uses \textsc then the short form displayed with then the short form displayed with \glsentryshort won’t use small caps. If you only have one abbreviation style in use, you can explicitly enclose -

    +
    \chapter{A Chapter about \glsabbrvfont{\glsentryshort{html}}}
    -

    Or, if you are using

    Or, if you are using hyperref: + id="dx1-33004">:

    -
    +
    \chapter{A Chapter about  
    \texorpdfstring{\glsabbrvfont{\glsentryshort{html}}}{\glsentryshort{html}}}
    -

    -

    Since this is a bit cumbersome, you might want to define a new command to do +

    +

    Since this is a bit cumbersome, you might want to define a new command to do this for you. However, if you have mixed styles this won’t work as commands like \gls and \MakeUppercase. -

    The . +

    The glossaries-extra package tries to resolve this by modifying \markright and + id="dx1-33006"> and \markboth and and \@starttoc. If you don’t like this change, you can restore their former definitions using -


    \glsxtrRevertMarks 


    \glsxtrRevertMarks

    -

    +

    If you only want to restore \@starttoc you can use: -


    \glsxtrRevertTocMarks 


    \glsxtrRevertTocMarks

    -

    +

    If you restore the header or table of contents commands, you’ll have to use the glossaries manual’s recommendations of either simply using -

    +
    \chapter[A Chapter about \glsentryshort{html}]{A Chapter about \gls{html}}
    -

    Alternatively, you need to find a way to insert

    Alternatively, you need to find a way to insert \glsxtrmarkhook and \@glsxtrinmark at the start of the header or table of contents either scoped or afterwards cancelled with \@glsxtrnotinmark and \glsxtrrestoremarkhook. -

    If you don’t revert the mark commands back with

    If you don’t revert the mark commands back with \glsxtrRevertMarks, you can use the commands described below in the argument of sectioning commands. You can still use them even if the mark commands have been reverted, but only where they don’t conflict with the page style. -

    The commands listed below all use

    +

    +

    Top

    5.2 New Commands Designed for Chapter/Section Headings

    +

    The commands listed below are designed for use in chapter or section headings. +There are still limitations, but they provide a better solution. They all use +\texorpdfstring if if hyperref has been -loaded so that the expandable non-formatted version is added to the PDF -bookmarks. Note that since the commands that convert the first letter to -upper case aren’t expandable, the non-case-changing version is used for the -bookmarks. -

    These commands essentially behave as though you have used \glsxtrshort (or -equivalent) with the options has been loaded so that the expandable non-formatted +version is added to the PDF bookmarks. Note that since the commands that convert +the first letter to upper case aren’t expandable, the non-case-changing version is used +for the bookmarks. If the required field contains non-expandable (robust or fragile) +commands that cause a problem for the bookmarks then \texorpdfstring will be +needed as appropriate in that field. (Take care if the field has its value expanded +before being assigned.) +

    These commands essentially behave as though you have used \glsxtrshort, +\glstext etc with the options noindex and and hyper=false. The text produced won’t be + id="dx1-34005">. The text produced won’t be converted to upper case in the page headings by default. If you want the text converted to upper case you need to set the headuc attribute to “true” for the + id="dx1-34006"> attribute to “true” for the appropriate category. -

    If you use one of the

    If you use one of the \textsc styles, be aware that the default fonts don’t + id="dx1-34007"> styles, be aware that the default fonts don’t provide bold small-caps or italic small-caps. This means that if the chapter or section title style uses bold, this may override the small-caps setting, in which case the abbreviation will just appear as lower case bold. If the @@ -14251,339 +13933,399 @@ heading style uses italic, the abbreviation may appear in upright small-caps, class="cmti-10">even if you have set the headuc attribute since the all-capitals form still uses \glsabbrvfont. You may want to consider using the slantsc package in this case. -
    -

    -

    Display the short form: -


    \glsfmtshort  package in this case. +
    +

    +

    Display the short form: +


    \glsfmtshort{label}

    -

    -

    Display the plural short form: -


    \glsfmtshortpl 

    +

    Display the plural short form: +


    \glsfmtshortpl{label}

    -

    -

    First letter upper case singular short form: -


    \Glsfmtshort 

    +

    First letter upper case singular short form: +


    \Glsfmtshort{label}

    -

    +

    (No case-change applied to PDF bookmarks.) -

    First letter upper case plural short form: - - - -


    \Glsfmtshortpl 

    First letter upper case plural short form: +


    \Glsfmtshortpl{label}

    -

    +

    +(No case-change applied to PDF bookmarks.) +

    All caps singular short form: +


    \GLSfmtshort{label}

    +

    (No case-change applied to PDF bookmarks.) -

    Display the long form: -


    \glsfmtlong 

    All caps plural short form: +


    \Glsfmtshortpl{label}

    +

    +(No case-change applied to PDF bookmarks.) +

    Display the long form: +


    \glsfmtlong{label}

    -

    -

    Display the plural long form: -


    \glsfmtlongpl 

    +

    Display the plural long form: +


    \glsfmtlongpl{label}

    -

    -

    First letter upper case singular long form: -


    \Glsfmtlong 

    +

    First letter upper case singular long form: +


    \Glsfmtlong{label}

    -

    +

    (No case-change applied to PDF bookmarks.) -

    First letter upper case plural long form: -


    \Glsfmtlongpl 

    First letter upper case plural long form: +


    \Glsfmtlongpl{label}

    -

    +

    +(No case-change applied to PDF bookmarks.) +

    All caps singular long form: +


    \GLSfmtlong{label}

    +

    +(No case-change applied to PDF bookmarks.) +

    All caps plural long form: +


    \GLSfmtlongpl{label}

    +

    (No case-change applied to PDF bookmarks.) -

    There are similar commands for the full form, but note that these use the

    There are similar commands for the full form, but note that these use the inline full form, which may be different from the full form used by \gls. -

    Display the full form: -


    \glsfmtfull  \gls. The PDF version +has to be a simple fully expandable command, so one of two commands that are +unrelated to the style is used instead: +


    \glspdffmtfull{label}

    +

    +for the singular form or: +


    \glspdffmtfullpl{label}

    +

    +for the full form. These simply do the long form followed by the short form in +parentheses. +

    Display the full form: +


    \glsfmtfull{label}

    -

    -

    Display the plural full form: -


    \glsfmtfullpl 

    +

    Display the plural full form: +


    \glsfmtfullpl{label}

    -

    -

    First letter upper case singular full form: -


    \Glsfmtfull 

    +

    First letter upper case singular full form: +


    \Glsfmtfull{label}

    -

    +

    (No case-change applied to PDF bookmarks.) -

    First letter upper case plural full form: -


    \Glsfmtfullpl 

    First letter upper case plural full form: +


    \Glsfmtfullpl{label}

    -

    +

    +(No case-change applied to PDF bookmarks.) +

    All caps singular full form: +


    \GLSfmtfull{label}

    +

    (No case-change applied to PDF bookmarks.) -

    There are also equivalent commands for the value of the

    All caps plural full form: +


    \GLSfmtfullpl{label}

    +

    +(No case-change applied to PDF bookmarks.) +

    There are also equivalent commands for the value of the text field: -


    \glsfmttext  field: +


    \glsfmttext{label}

    -

    -

    First letter converted to upper case: -


    \Glsfmttext 

    +

    First letter converted to upper case: +


    \Glsfmttext{label}

    -

    +

    (No case-change applied to PDF bookmarks.) -

    The plural equivalents: +

    All caps: +


    \GLSfmttext{label}

    -


    \glsfmtplural 

    +(No case-change applied to PDF bookmarks.) +

    The plural equivalents: +


    \glsfmtplural{label}

    -

    -and -


    \Glsfmtplural 

    +First letter upper case: +


    \Glsfmtplural{label}

    -

    -

    Likewise for the value of the

    +and all caps: +


    \GLSfmtplural{label}

    +

    +

    Likewise for the value of the name field: -


    \glsfmtname  field: +


    \glsfmtname{label}

    -

    -

    First letter converted to upper case: -


    \Glsfmtname 

    +

    First letter converted to upper case: +


    \Glsfmtname{label}

    -

    +

    +(No case-change applied to PDF bookmarks.) +

    All caps: +


    \GLSfmtname{label}

    +

    (No case-change applied to PDF bookmarks.) -

    Similarly for the value of the

    Similarly for the value of the first field: -


    \glsfmtfirst  field: +


    \glsfmtfirst{label}

    -

    -

    First letter converted to upper case: -


    \Glsfmtfirst 

    +

    First letter converted to upper case: +


    \Glsfmtfirst{label}

    -

    +

    (No case-change applied to PDF bookmarks.) -

    The plural equivalents: -


    \glsfmtfirstpl 

    All caps: +


    \GLSfmtfirst{label}

    +

    +(No case-change applied to PDF bookmarks.) +

    The plural equivalents: +


    \glsfmtfirstpl{label}

    -

    -and -


    \Glsfmtfirstpl 

    +First letter upper case: +


    \Glsfmtfirstpl{label}

    -

    +

    +and all caps: +


    \GLSfmtfirstpl{label}

    +

    + + +

    -

    -

    Top

    5.

    +

    Top

    6. Categories

    -

    Each entry defined by

    Each entry defined by \newglossaryentry (or commands that internally use it + id="dx1-35001"> (or commands that internally use it such as \newabbreviation) is assigned a category through the ) is assigned a category through the category key. You may + id="dx1-35003"> key. You may add any category that you like, but since the category is a label used in the creation of some control sequences, avoid problematic characters within the category label. (So take care if you have babel shorthands on that make some characters + id="dx1-35004"> shorthands on that make some characters active.) -

    The use of categories can give you more control over the way entries are displayed +

    The use of categories can give you more control over the way entries are displayed in the text or glossary. Note that an entry’s category is independent of the glossary type. Be careful not to confuse category with with type. -

    The default category assumed by . +

    The default category assumed by \newglossaryentry is labelled general. + id="dx1-35007">. Abbreviations defined with \newabbreviation have the category set to abbreviation + id="dx1-35008"> by default. Abbreviations defined with \newacronym have the category set to acronym by default. -

    Additionally, if you have enabled by default. +

    Additionally, if you have enabled \newterm with the with the index package option + id="dx1-35011"> package option that command will set the category to index by default. If you have enabled + id="dx1-35012"> by default. If you have enabled \glsxtrnewsymbol with the with the symbols package option, that command will set the + id="dx1-35014"> package option, that command will set the category to symbol. If you have enabled . If you have enabled \glsxtrnewnumber with the with the numbers package + id="dx1-35017"> package option, that command will set the category to number. -

    You can obtain the category label for a given entry using -


    \glscategory  . +

    You can obtain the category label for a given entry using +


    \glscategory{label}

    -

    +

    This is equivalent to commands like \glsentryname and so may be used in an expandable context. No error is generated if the entry doesn’t exist. -

    You can test the category for a given entry using -


    \glsifcategory 

    You can test the category for a given entry using +


    \glsifcategory{entry-label}{category-label}{true -parttrue part}{false part}

    -

    +class="cmtt-10">} +


    +

    This is equivalent to

    \ifglsfieldeq{entry-label}}
    so any restrictions that apply to \ifglsfieldeq also apply to \glsifcategory. -

    Each category may have a set of attributes. For example, the

    Each category may have a set of attributes. For example, the general and and acronym + id="dx1-35023"> categories have the attribute regular set to “true” to indicate that all entries with + id="dx1-35024"> set to “true” to indicate that all entries with either of those categories are regular entries (as opposed to abbreviations). This attribute is accessed by \glsentryfmt to determine whether to use \glsgenentryfmt or \glsxtrgenabbrvfmt. -

    Other attributes recognised by

    Other attributes recognised by glossaries-extra are:

    nohyperfirst
    When using commands like \gls this will automatically suppress the + id="dx1-35026"> this will automatically suppress the hyperlink on first use for entries with a category that has this attribute set to “true”. (This settings can be overridden by explicitly setting the hyper + id="dx1-35028"> key on or off in the optional argument of commands like \gls.) As from version 1.07, \glsfirst, \Glsfirst, \GLSfirst and their plural versions (which should ideally behave in a similar way to the first use of + id="dx1-35029">first use of \gls or \glspl) now honour this attribute (but not the package-wide @@ -14653,67 +14395,65 @@ class="cmtt-10">\glspl) now honour this attribute (but not the package-wi href="#styopt.hyperfirst">hyperfirst=false option, which matches the behaviour of option, which matches the behaviour of glossaries). If you want + id="dx1-35031">). If you want commands like \glsfirst to ignore the nohyperfirst attribute then just + id="dx1-35032"> attribute then just redefine -


    \glsxtrchecknohyperfirst 


    \glsxtrchecknohyperfirst{label}

    -

    +

    to do nothing.

    nohyper
    When using commands like \gls this will automatically suppress the + id="dx1-35035"> this will automatically suppress the hyperlink for entries with a category that has this attribute set to “true”. (This settings can be overridden by explicitly setting the hyper key on or off in the + id="dx1-35036"> key on or off in the optional argument of commands like \gls.)
    indexonlyfirst
    This is similar to the indexonlyfirst package option but only for entries + id="dx1-35038"> package option but only for entries that have a category with this attribute set to “true”.
    wrgloss
    When using commands like \gls, if this attribute is set to “after”, it will + id="dx1-35040">, if this attribute is set to “after”, it will automatically implement wrgloss=after. (New to v1.14.)
    discardperiod
    If set to “true”, the post-link-text hook will discard a full stop (period) that follows non-plural commands like \newacronym if it’s using \newabbreviation.) This attribute doesn’t apply to the accessibility fields. -

    Note that this can cause a problem if you access a field that doesn’t end with a +

    Note that this can cause a problem if you access a field that doesn’t end with a full stop. For example:

    -
    +
    \newabbreviation  
     [user1={German Speaking \TeX\ User Group}]  
     {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\  
    e.V.}
    -

    Here the

    Here the short and and long fields end with a full stop, but the fields end with a full stop, but the user1 field doesn’t. + id="dx1-35046"> field doesn’t. The simplest solution in this situation is to put the sentence terminator in the final optional argument. For example:

    -
    +
    \glsuseri{dante}[.]
    -

    This will bring the punctuation character inside the

    This will bring the punctuation character inside the link-text and it won’t be discarded.

    pluraldiscardperiod
    If this attribute is set to “true” and the discardperiod attribute is + id="dx1-35049"> attribute is set to “true”, this will behave as above for the plural commands like \glspl or \newabbreviation.) retainfirstuseperiod
    If this attribute is set to “true” then the full stop won’t be discarded for first use instances, even if discardperiod or or pluraldiscardperiod are + id="dx1-35053"> are set. This is useful for ⟨short⟩ (⟨long⟩) abbreviation styles where only the @@ -14805,52 +14545,48 @@ class="cmtt-10">\newabbreviation.) This attribute doesn’t apply to markwords
    If this attribute is set to “true” any entry defined using \newabbreviation + id="dx1-35055"> will automatically have spaces in the long form replaced with -


    \glsxtrwordsep 


    \glsxtrwordsep

    -

    +

    and each word is encapsulated with -


    \glsxtrword 


    \glsxtrword{word}

    -

    +

    For example:

    -
    +
    \glssetcategoryattribute{abbreviation}{markwords}{true}  
    \newabbreviation{ip}{IP}{Internet Protocol}
    -

    is essentially the same as +

    is essentially the same as

    -
    +
    \newabbreviation{ip}{IP}  
    {\glsxtrword{Internet}\glsxtrwordsep\glsxtrword{Protocol}}
    -

    The “hyphen” styles, such as

    The “hyphen” styles, such as long-hyphen-short-hyphen, take advantage of this + id="dx1-35058">, take advantage of this markup. If the inserted material (provided in the final argument of commands like \gls) starts with a hyphen then ) starts with a hyphen then \glsxtrwordsep is locally redefined to a hyphen. (The default value is a space). Note that this only applies to commands like \glsxtrlong. You can provide your own

    -
    +
    \newcommand{\hyplong}[2][]{%  
     {\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}}
    -

    -

    This setting will also adjust the long plural. This attribute is only applicable to +

    +

    This setting will also adjust the long plural. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.) -

    This setting may result in the

    This setting may result in the \glsxtrword and \glsxtrwordsep markup ending up in the sort field, depending on the style in use.
    -

    + id="dx1-35060"> field, depending on the style in use.

    +

    markshortwords
    This is similar to markwords but applies to the short form. (Only + id="dx1-35062"> but applies to the short form. (Only useful for abbreviations that contain spaces.) This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using - \newabbreviation.) -

    This setting will only adjust the short plural if the shortplural key isn’t used. - This setting will take precedence over insertdots. -

    This setting may result in the \glsxtrword and \glsxtrwordsep markup - ending up in the sort field, depending on the style in use.
    -

    -

    -insertdots
    If this attribute is set to “true” any entry defined using \newabbreviation - will automatically have full stops (periods) inserted after each letter. The entry - will be defined with those dots present as though they had been present in the - ⟨short⟩ argument of \newabbreviation (rather than inserting them every time - the entry is used). The short plural form defaults to the new dotted version of - the original ⟨short⟩ form with the plural suffix appended. This setting is - incompatible with markshortwords. This attribute is only applicable to - entries defined using \newabbreviation (or \newacronym if it’s using - \newabbreviation.) -

    If you explicitly override the short plural using the shortplural key, you must - explicitly insert the dots yourself (since there’s no way for the code to - determine if the plural has a suffix that shouldn’t be followed by a dot). -
    -

    - - - -

    This attribute is best used with the discardperiod attribute set to “true”. -

    -aposplural
    If this attribute is set to “true”, \newabbreviation will insert an - apostrophe (’) before the plural suffix for the short plural form (unless - explicitly overridden with the shortplural key). The long plural form is - unaffected by this setting. This setting overrides noshortplural. This - attribute is only applicable to entries defined using \newabbreviation (or - \newacronym if it’s using \newabbreviation.) Check with your supervisor, - publisher or editor if you want to use this attribute as this usage is - controversial. -
    -noshortplural
    If this attribute is set to “true”, \newabbreviation won’t append - the plural suffix for the short plural form. This means the short and - shortplural values will be the same unless explicitly overridden. This setting - is incompatible with aposplural. This attribute is only applicable to - entries defined using \newabbreviation (or \newacronym if it’s using - \newabbreviation.) -
    -accessinsertdots
    If this attribute is set to “true” and the glossaries-accsupp package - has been loaded (with the accsupp option), then this behaves like insertdots but - for the shortaccess field instead of the short field. This can be used to assist the - screen reader for initialisms that should be read out letter by letter rather than - as a word. For example: - - - -
    - \glssetcategoryattribute{initialism}{accessinsertdots}{true} -  
    \newabbreviation[category=initialism]{pi}{PI}{Private Investigator} -
    -

    This setting will be overridden by an explicit use of the shortaccess key in the - optional argument of \newabbreviation (or \newacronym). This attribute is - only applicable to entries defined using \newabbreviation (or \newacronym if - it’s using \newabbreviation.) -

    -nameshortaccess
    If this attribute is set to “true”, the access field (used for the name - field’s accessibility support) is set to the shortaccess value. This attribute has no - effect if there’s no accessibility support or if the shortaccess field hasn’t been - assigned or if the access field is used explicitly. This attribute is only applicable - to entries defined using \newabbreviation (or \newacronym if it’s using - \newabbreviation.) -
    -textshortaccess
    Like nameshortaccess but applies to the textaccess field (for use with - regular abbreviations). -
    -firstshortaccess
    Like nameshortaccess but applies to the firstaccess field (for use with - regular abbreviations). -
    -accessaposplural
    This boolean attribute overrides aposplural for the shortpluralaccess - key. Has no effect if there’s no accessibility support or if the shortaccess key - hasn’t been set or if the shortpluralaccess key is explicitly set. If the aposplural is - set and this attribute isn’t set and the shortaccess key is set, then the - aposplural setting governs the default shortpluralaccess setting. If you want - aposplural but don’t want it applied to the accessibility support, set the - accessaposplural attribute to “false”. This attribute is only applicable to + \newabbreviation.) +

    This setting will only adjust the short plural if the shortplural key isn’t used. + This setting will take precedence over insertdots. +

    This setting may result in the \glsxtrword and \glsxtrwordsep markup + ending up in the sort field, depending on the style in use.
    +

    +

    +insertdots
    If this attribute is set to “true” any entry defined using \newabbreviation + will automatically have full stops (periods) inserted after each letter. The entry + will be defined with those dots present as though they had been present in the + ⟨short⟩ argument of \newabbreviation (rather than inserting them every time + the entry is used). The short plural form defaults to the new dotted version of + the original ⟨short⟩ form with the plural suffix appended. This setting is + incompatible with markshortwords. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.) -
    +

    If you explicitly override the short plural using the shortplural key, you must + explicitly insert the dots yourself (since there’s no way for the code to + determine if the plural has a suffix that shouldn’t be followed by a dot). +
    +

    + + + +

    This attribute is best used with the discardperiod attribute set to “true”. +

    accessnoshortplural
    This boolean attribute overrides aposplural
    If this attribute is set to “true”, \newabbreviation will insert an + apostrophe (’) before the plural suffix for the short plural form (unless + explicitly overridden with the shortplural key). The long plural form is + unaffected by this setting. This setting overrides noshortplural for the - shortpluralaccess key. The same conditions apply as for accessaposplural. This + id="dx1-35074">. This attribute is only applicable to entries defined using \newabbreviation (or \newacronym if it’s using \newabbreviation.) Check with your supervisor, + publisher or editor if you want to use this attribute as this usage is + controversial. +
    +noshortplural
    If this attribute is set to “true”, \newabbreviation won’t append + the plural suffix for the short plural form. This means the short and + shortplural values will be the same unless explicitly overridden. This setting + is incompatible with aposplural. This attribute is only applicable to + entries defined using \newabbreviation (or \newacronym if it’s using + \newabbreviation.)
    headuc
    If this attribute is set to “true”, commands like \glsfmtshort will use the + id="dx1-35081"> will use the upper case version in the page headers. - - -
    tagging
    If this attribute is set to “true”, the tagging command defined by \GlsXtrEnableInitialTagging will be activated to use will be activated to use \glsxtrtagfont in + id="dx1-35084"> in the glossary (see §3.1 §4.1 Tagging Initials).
    entrycount
    Unlike the above attributes, this attribute isn’t boolean but instead must be an integer value and is used in combination with \glsenableentrycount + id="dx1-35086"> (see §2.4 §2.5 Entry Counting Modifications). Leave blank or undefined for categories that shouldn’t have this facility enabled. The value of this attribute is used by \glsxtrifcounttrigger to determine how commands such as to determine how commands such as \cgls + id="dx1-35088"> should behave. -

    With

    With glossaries, commands like \cgls use \cglsformat only if the previous @@ -15204,43 +14789,46 @@ class="cmss-10">glossaries-extra the test is now for entries that have the entrycount attribute set and where the previous + id="dx1-35089"> attribute set and where the previous usage count for that entry is less than or equal to the value of that attribute.

    linkcount
    This attribute is set to true by \GlsXtrEnableLinkCounting (see (see §6.2 +class="cmsy-10">§7.2 Link Counting).
    linkcountmaster
    This attribute is set to the name of the master counter by + + + \GlsXtrEnableLinkCounting if the optional argument is provided (see if the optional argument is provided (see §6.2 +class="cmsy-10">§7.2 Link Counting).
    glossdesc
    The \glossentrydesc command (used in the predefined glossary styles) is + id="dx1-35095"> command (used in the predefined glossary styles) is modified by glossaries-extra to check for this attribute. The attribute may have one of the following values: @@ -15249,34 +14837,31 @@ class="cmss-10">glossaries-extra to check for this attribute. The attribu class="cmtt-10">firstuc: the first letter of the description will be converted to upper case (using \Glsentrydesc). + id="dx1-35096">).
  • title: the description will be used in the argument of the title casing command \capitalisewords (provided by (provided by mfirstuc). If you want to use a + id="dx1-35098">). If you want to use a different command you can redefine: -


    \glsxtrfieldtitlecasecs 


    \glsxtrfieldtitlecasecs{phrase cs} -

    -

    +class="cmtt-10">}


    +

    For example:

    -
    +
    \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisefmtwords*{#1}}
    -

    (Note that the argument to

    (Note that the argument to \glsxtrfieldtitlecasecs will be a control sequence whose replacement text is the entry’s description, which is why \xcapitalisefmtwords is needed instead of \capitalisefmtwords.)

  • -

    Any other values of this attribute are ignored. Remember that there are design +

    Any other values of this attribute are ignored. Remember that there are design limitations for both the first letter uppercasing and the title casing commands. See the mfirstuc user manual for further details. + id="dx1-35100"> user manual for further details.

    glossdescfont
    (New to version 1.04) In addition to the above, the modified \glossentrydesc command also checks this attribute. If set, it should be the + id="dx1-35102"> command also checks this attribute. If set, it should be the name of a control sequence (without the leading backslash) that takes one argument. This control sequence will be applied to the description text. For example: -
    +
    \glssetcategoryattribute{general}{glossdescfont}{emph}
    -

    +

    glossname
    As glossdesc but applies to but applies to \glossentryname. Additionally, if this + id="dx1-35105">. Additionally, if this attribute is set to “uc” the name is converted to all capitals.
    indexname
    If set, the \glsxtrpostnamehook hook used at the end of \glossentryname + id="dx1-35107"> will index the entry using \index. See . See §7 §8 Auto-Indexing for further details.
    glossnamefont
    (New to version 1.04) In addition to the above, the modified \glossentryname command also checks this attribute. If set, it should be the + id="dx1-35110"> command also checks this attribute. If set, it should be the name of a control sequence (without the leading backslash) that takes one argument. This control sequence will be applied to the name text. For example: -
    +
    \glssetcategoryattribute{general}{glossnamefont}{emph}
    -

    Note that this overrides

    Note that this overrides \glsnamefont which will only be used if this attribute hasn’t been set. -

    Remember that glossary styles may additionally apply a font change, +

    Remember that glossary styles may additionally apply a font change, such as the list styles which put the name in the optional argument of \item.

    +glosssymbolfont
    (New to version 1.42.) This is similar to glossnamefont and + glossdescfont but is used by \glossentrysymbol. +
    textformat
    (New to version 1.21.) Commands like \gls and \glstext have the link @@ -15380,51 +14980,51 @@ class="cmtt-10">\glstextformat by default. If this hyperoutside
    (New to v1.21.) The attribute value may be false, true or unset. If unset, true is assumed. This indicates the default setting of the hyperoutside + id="dx1-35117"> key, described in §2.1 §2.2 Entry Indexing.
    dualindex
    If set, whenever a glossary entry has information written to the external glossary file through commands like \gls and and \glsadd, a corresponding line + id="dx1-35120">, a corresponding line will be written to the indexing file using \index. See . See §7 §8 Auto-Indexing for further details.
    targeturl
    If set, the hyperlink generated by commands like \gls will be set to the URL provided by this attributes value. For example: -
    +
    \glssetcategoryattribute{general}{targeturl}{master-doc.pdf}
    -

    (See also the accompanying sample file

    (See also the accompanying sample file sample-external.tex.) If the URL contains awkward characters (such as % or ~) remember that the base glossaries package provides commands like \glspercentchar and and \glstildechar that expand to literal characters. -

    If you want to a named anchor within the target URL (notionally adding +

    If you want to a named anchor within the target URL (notionally adding #name⟩ to the URL), then you also need to set targetname to the anchor ⟨ to the anchor ⟨name⟩. You may use \glslabel within ⟨name⟩ which is set by commands like \gls to the entry’s label. -

    All the predefined glossary styles start each entry listing with

    All the predefined glossary styles start each entry listing with \glstarget which sets the anchor to \glolinkprefix\glslabel, so if you want entries to link to glossaries in the URL given by targeturl, you can just + id="dx1-35125">, you can just do:

    -
    +
    \glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}
    -

    (If the target document changed

    (If the target document changed \glolinkprefix then you will need to adjust the above as appropriate.) -

    If the anchor is in the form ⟨

    If the anchor is in the form ⟨name1.name2⟩ then use targetname for the ⟨ for the ⟨name2⟩ part and targetcategory for the ⟨ for the ⟨name1⟩ part. -

    For example: +

    For example:

    -
    +
    \glssetcategoryattribute{general}{targeturl}{master-doc.pdf}  
    \glssetcategoryattribute{general}{targetcategory}{page}  
    \glssetcategoryattribute{general}{targetname}{7}
    -

    will cause all link text for

    will cause all link text for general entries to link to master-doc.pdf#page.7 (page 7 of that PDF). -

    If you want a mixture in your document of entries that link to an internal +

    If you want a mixture in your document of entries that link to an internal glossary and entries that link to an external URL then you can use the starred form of \newignoredglossary for the external list. For + id="dx1-35128"> for the external list. For example:

    -
    +
    \newignoredglossary*{external}  
    \glssetcategoryattribute{external}{targeturl}{master-doc.pdf}  
    \glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel} @@ -15514,165 +15114,319 @@ class="cmtt-10">\newignoredglossary  category=external,  
      description={external example}}
    -

    +

    externallocation
    The value should be the file name of the target document when manually indexing an external location (see §2.1 §2.2 Entry Indexing). In general, it’s better to use bib2gls v1.7+ which can handle multiple external sources and doesn’t require this attribute.
    -

    An attribute can be set using: -


    \glssetcategoryattribute 

    If a term is defined using \newabbreviation and accessibility support has been +supplied via the accsupp package option then the following attributes are also +available. If shortaccess isn’t set its value will be obtained from: +


    \glsdefaultshortaccess{short}{long}

    +

    +This is defined by glossaries-accsupp to just do ⟨long⟩ but glossaries-extra redefines it to +do ⟨long⟩ (⟨short⟩). The accessinsertdots, accessaposplural and accessnoshortplural +attributes below refer to the ⟨short⟩ form that’s passed to this command. +

    The following attributes are only applicable to entries defined using +\newabbreviation (or \newacronym if it’s using \newabbreviation). They have no +effect if the accsupp package option hasn’t been used. +

    +accessinsertdots
    If this attribute is set to “true” and the glossaries-accsupp + package has been loaded (with the accsupp option), then this behaves + like insertdots but for the ⟨short⟩ part used in the shortaccess field instead + of the short field. This setting will be overridden by an explicit use of + the shortaccess key in the optional argument of \newabbreviation (or + \newacronym). +
    +accessaposplural
    This boolean attribute overrides aposplural for + + + + the shortpluralaccess key. Has no effect if there’s no accessibility support + or if the shortaccess key hasn’t been set or if the shortpluralaccess key + is explicitly set. If the aposplural is set and this attribute isn’t set and + the shortaccess key is set, then the aposplural setting governs the default + shortpluralaccess setting. If you want aposplural but don’t want it applied to + the accessibility support, set the accessaposplural attribute to “false”. This + attribute is only applicable to entries defined using \newabbreviation (or + \newacronym if it’s using \newabbreviation.) +
    +accessnoshortplural
    + This boolean attribute overrides noshortplural for the shortpluralaccess key. + The same conditions apply as for accessaposplural. This attribute is only + applicable to entries defined using \newabbreviation (or \newacronym if + it’s using \newabbreviation.) +
    +nameshortaccess
    If this attribute is set to “true”, the access field (used for + the name field’s accessibility support) automatically assigned if it’s not + provided. +
    +textshortaccess
    Like nameshortaccess but applies to the textaccess field + automatically assigned if it’s not provided. +
    +firstshortaccess
    Like nameshortaccess but applies to the firstaccess field + automatically assigned if it’s not provided. +
    +

    An attribute can be set using: +


    \glssetcategoryattribute{category-label} -{}{attribute-label}{value}

    -

    +class="cmtt-10">} +


    +

    where ⟨category-label⟩ is the category label, ⟨attribute-label⟩ is the attribute label and ⟨value⟩ is the new value for the attribute. -

    There is a shortcut version to set the

    There is a shortcut version to set the regular attribute to “true”: -


    \glssetregularcategory  attribute to “true”: +


    \glssetregularcategory{category-label} -

    -

    -

    If you need to lookup the category label for a particular entry, you can use the +class="cmtt-10">}


    +

    +

    If you need to lookup the category label for a particular entry, you can use the shortcut command: -


    \glssetattribute 


    \glssetattribute{entry-label}{attribute-label} -{}{value}

    -

    +

    This uses \glssetcategoryattribute with \glscategory to set the attribute. Note that this will affect all other entries that share this entry’s category. -

    You can fetch the value of an attribute for a particular category using: -


    \glsgetcategoryattribute  \glsgetcategoryattribute{category-label} -{attribute-label}

    +

    You can fetch the value of an attribute for a particular category using: -

    +


    \glsgetcategoryattribute{category-label}{attribute-label} +

    +

    Again there is a shortcut if you need to lookup the category label for a given entry: -


    \glsgetattribute 


    \glsgetattribute{entry-label}{attribute-label} -

    -

    -

    You can test if an attribute has been assigned to a given category using: -


    \glshascategoryattribute  }

    +

    +

    You can test if an attribute has been assigned to a given category using: +


    \glshascategoryattribute{category-label} -{}{attribute-label}{true codetrue +code}{false code}

    -

    +

    This uses etoolbox’s ’s \ifcsvoid and does ⟨true code⟩ if the attribute has been set and isn’t blank and isn’t \relax. The shortcut if you need to lookup the category label from an entry is: -


    \glshasattribute 


    \glshasattribute{entry-label}{attribute-label}{true +class="cmitt-10">true code⟩}{false code}{false code}

    -

    -

    You can test the value of an attribute for a particular category using: -


    \glsifcategoryattribute 

    +

    You can test the value of an attribute for a particular category using: +


    \glsifcategoryattribute{category-label} -{}{attribute-label}{value} {} +{true-part}{false-part}

    -

    +

    This tests if the attribute (given by ⟨attribute-label⟩) for the category (given by ⟨true-part⟩ is done. If the attribute isn’t set or is set but isn’t equal to ⟨value⟩, ⟨false part⟩ is done. -

    For example: +

    For example:

    -
    +
    \glsifcategoryattribute{general}{nohyper}{true}{NO HYPER}{HYPER}
    -

    This does “NO HYPER” if the

    This does “NO HYPER” if the general category has the category has the nohyper attribute set to + id="dx1-35183"> attribute set to true otherwise if does “HYPER”. -

    With boolean-style attributes like

    With boolean-style attributes like nohyper, make sure you always test for , make sure you always test for true not false in case the attribute hasn’t been set. -

    Again there’s a shortcut if you need to lookup the category label from a particular +

    Again there’s a shortcut if you need to lookup the category label from a particular entry: -


    \glsifattribute 


    \glsifattribute{entry-label}{attribute-label}{value}{true-part} {true-part} {false-part}

    -

    -

    There’s also a shortcut to determine if a particular category has the

    +

    There’s also a shortcut to determine if a particular category has the regular + id="dx1-35186"> attribute set to “true”: -


    \glsifregularcategory 


    \glsifregularcategory{category-label} -{}{true-part}{false-part}

    -

    +class="cmtt-10">} +


    +

    Alternatively, if you need to lookup the category for a particular entry: -


    \glsifregular 


    \glsifregular{entry-label}{true-part}{false-part} -

    -

    +class="cmtt-10">}


    +

    Note that if the regular attribute hasn’t be set, the above do ⟨ attribute hasn’t be set, the above do ⟨false-part⟩. There are also reverse commands that test if the regular attribute has been set to + id="dx1-35190"> attribute has been set to “false”: -


    \glsifnotregularcategory 


    \glsifnotregularcategory{category-label} -{}{true-part}{false-part}

    -

    +class="cmtt-10">} +


    +

    or for a particular entry: -


    \glsifnotregular 


    \glsifnotregular{entry-label}{true-part}{false-part} -

    -

    +class="cmtt-10">}


    +

    Again, if the regular attribute hasn’t been set, the above do ⟨ attribute hasn’t been set, the above do ⟨false-part⟩, so these reverse commands aren’t logically opposite in the strict sense. -

    You can iterate through all entries with a given category using: -


    You can iterate through all entries with a given category using: +


    \glsforeachincategory[glossary-labels]{label-cs}{body}

    -

    +

    This iterates through all entries in the glossaries identified by the comma-separated list ⟨glossary-labels⟩ that have the category given by ⟨label-cs⟩ (which much be control sequences) to access the current glossary and entry label. If ⟨glossary-labels⟩ is omitted, all glossaries are assumed. +

    Similarly, you can iterate through all entries that have a category with a given +attribute using: -

    Similarly, you can iterate through all entries that have a category with a given -attribute using: -


    \glsforeachwithattribute 


    \glsforeachwithattribute[glossary-labels] +class="cmtt-10">]{⟨attribute-label} {attribute-label} {attribute-value}{glossary-cs}{label-cs}{body} -

    -

    +class="cmtt-10">}


    +

    This will do ⟨body⟩ for each entry that has a category with the attribute ⟨attribute-label⟩ set to ⟨attribute-value⟩. The remaining arguments are as the previous command. -

    You can change the category for a particular entry using the standard glossary +

    You can change the category for a particular entry using the standard glossary field changing commands, such as \glsfielddef. Alternatively, you can + id="dx1-35195">. Alternatively, you can use -


    \glsxtrsetcategory 


    \glsxtrsetcategory{entry-labels}{category-label} -

    -

    +class="cmtt-10">}


    +

    This will change the category to ⟨category-label⟩ for each entry listed in the comma-separated list ⟨entry-labels⟩. This command uses \glsfieldxdef so it will + id="dx1-35197"> so it will expand ⟨category-label⟩ and make the change global. -

    You can also change the category for all entries with a glossary or glossaries +

    You can also change the category for all entries with a glossary or glossaries using: -


    \glsxtrsetcategoryforall 


    \glsxtrsetcategoryforall{glossary-labels} -{}{category-label}

    -

    +class="cmtt-10">} +


    +

    where ⟨glossary-labels⟩ is a comma-separated list of glossary labels.

    -

    -

    Top

    6.

    +

    Top

    7. Counting References

    -

    There are three basic ways of counting entry references: +

    There are three basic ways of counting entry references:

    1. Counting the total number of times Counting the total number of times \glsunset is used (\glsreset resets the count and is best avoided). This is provided by the base glossaries class="cmtt-10">.aux file so that it’s available on the next LATEX run. -

      This method is extended by

      This method is extended by glossaries-extra and is described in §6.1 §7.1 Entry Counting (First Use Flag).

    2. Counting the total number of records. This method is only available with + class="enumerate" id="x1-36004x2">Counting the total number of records. This method is only available with bib2gls and is intended for documents where the term should be displayed differently if it’s only been recorded (indexed) a certain number of times. @@ -15943,7 +15674,7 @@ class="cmsy-10">§9.5 Record Counting for further details.
    3. Counting the number of times the Counting the number of times the \gls-like or \glstext-like commands are used. (That is, those commands that internally use @@ -15958,52 +15689,52 @@ class="cmtt-10">\glslinkpostsetkeys or \glslinkpresetkeys. See §6.2 §7.2 Link Counting for further details.
    -

    Top

    6.1

    Top

    7.1 Entry Counting (First Use Flag)

    -

    As mentioned in

    As mentioned in §2.4 §2.5 Entry Counting Modifications, glossaries-extra modifies the \glsenableentrycount command to allow for the command to allow for the entrycount attribute. This means + id="dx1-37002"> attribute. This means that you not only need to enable entry counting with \glsenableentrycount, but + id="dx1-37003">, but you also need to set the appropriate attribute (see §5 §6 Categories). -

    Remember that entry counting only counts the number of times an entry is used +

    Remember that entry counting only counts the number of times an entry is used by commands that change the first use flag. (That is, all those commands that mark the entry as having been used.) There are many commands that don’t modify this flag and they won’t contribute to the entry use count.
    -

    -

    With

    +

    With glossaries-extra, you may use \cgls instead of instead of \gls even if you haven’t enabled + id="dx1-37006"> even if you haven’t enabled entry counting. You will only get a warning if you use \glsenableentrycount without setting the entrycount attribute. (With attribute. (With glossaries, commands like \cgls + id="dx1-37008"> will generate a warning if \glsenableentrycount hasn’t been used.) The @@ -16011,40 +15742,38 @@ class="cmtt-10">\glsenableentrycount hasn’t been used.) The abbreviation shortcut \ab uses uses \cgls (see §3.3 §4.3 Shortcut Commands). The acronym shortcut \ac uses uses \cgls if it’s been defined with shortcuts=ac (or + id="dx1-37011"> (or shortcuts=all) but uses ) but uses \gls if it’s been defined with shortcuts=acronyms (or + id="dx1-37013"> (or shortcuts=acro). -

    All upper case versions (not provided by ). +

    All upper case versions (not provided by glossaries) are also available: -


    \cGLS 


    \cGLS[options]{label}[insert]

    -

    +

    and -


    \cGLSpl 


    \cGLSpl[options]{label}[insert]

    -

    +

    These are analogous to \cgls and \cglspl but they use -


    \cGLSformat 


    \cGLSformat{label}{insert}

    -

    +

    and -


    \cGLSplformat 


    \cGLSplformat{label}{insert}

    -

    +

    which convert the analogous \cglsformat and \cglsplformat to upper case. -

    Just using

    Just using glossaries:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries}  
    \makeglossaries @@ -16113,17 +15836,17 @@ class="cmss-10">glossaries:  
    \printglossaries  
    \end{document}
    -

    -

    If you switch to

    +

    If you switch to glossaries-extra you must set the entrycount attribute: + id="dx1-37019"> attribute:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \makeglossaries @@ -16137,31 +15860,27 @@ class="cmss-10">entrycount\printglossaries  
    \end{document}
    -

    -

    When activated with

    +

    When activated with \glsenableentrycount, commands such as \cgls now + id="dx1-37020"> now use -


    \glsxtrifcounttrigger 


    \glsxtrifcounttrigger{label}{trigger code} -{}{normal code}

    -

    +

    to determine if the entry trips the entry count trigger. The ⟨trigger code⟩ uses commands like \cglsformat and unsets the first use flag. The ⟨normal code⟩ is the code that would ordinarily be performed by whatever the equivalent command is (for @@ -16172,12 +15891,12 @@ class="cmti-10">trigger code⟩ but the usual \gls behaviour in ⟨normal code⟩). -

    The default definition is: +

    The default definition is:

    -
    +
    \newcommand*{\glsxtrifcounttrigger}[3]{%  
     \glshasattribute{#1}{entrycount}%  
     {% @@ -16190,57 +15909,53 @@ class="cmti-10">normal code⟩).  
     {#3}%  
    }
    -

    This means that if an entry is assigned to a category that has the

    This means that if an entry is assigned to a category that has the entrycount + id="dx1-37023"> attribute then the ⟨trigger code⟩ will be used if the previous count value (the number of times the entry was used on the last run) is greater than the value of the attribute. -

    For example, to trigger normal use if the previous count value is greater than +

    For example, to trigger normal use if the previous count value is greater than four:

    -
    +
    \glssetcategoryattribute{abbreviation}{entrycount}{4}
    -

    -

    There is a convenient command provided to enable entry counting, set the +

    +

    There is a convenient command provided to enable entry counting, set the entrycount attribute and redefine attribute and redefine \gls, etc to use , etc to use \cgls etc: -


    \GlsXtrEnableEntryCounting  etc: +


    \GlsXtrEnableEntryCounting{categories} -{}{value}

    -

    +

    The first argument ⟨categories⟩ is a comma-separated list of categories. For each category, the entrycount attribute is set to ⟨ attribute is set to ⟨value⟩. In addition, this does:

    -
    +
    \renewcommand*{\gls}{\cgls}%  
    \renewcommand*{\Gls}{\cGls}%  
    \renewcommand*{\glspl}{\cglspl}% @@ -16248,19 +15963,19 @@ class="cmti-10">value⟩. In addition, this does:  
    \renewcommand*{\GLS}{\cGLS}%  
    \renewcommand*{\GLSpl}{\cGLSpl}%
    -

    This makes it easier to enable entry-counting on existing documents. -

    If you use

    This makes it easier to enable entry-counting on existing documents. +

    If you use \GlsXtrEnableEntryCounting more than once, subsequent uses will just set the entrycount attribute for each listed category. -

    The above example document can then become: + id="dx1-37029"> attribute for each listed category. +

    The above example document can then become:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \makeglossaries @@ -16273,45 +15988,42 @@ class="cmss-10">entrycount\printglossaries  
    \end{document}
    -

    -

    The standard entry-counting function describe above counts the number of times +

    +

    The standard entry-counting function describe above counts the number of times an entry has been marked as used throughout the document. (The reset commands will reset the total back to zero.) If you prefer to count per sectional-unit, you can use -


    \GlsXtrEnableEntryUnitCounting  \GlsXtrEnableEntryUnitCounting -{


    \GlsXtrEnableEntryUnitCounting{categories}{value}{counter-name}

    -

    +class="cmtt-10">} +


    +

    where ⟨categories⟩ is a comma-separated list of categories to which this feature should be applied, ⟨value⟩ is the trigger value and ⟨counter-name⟩ is the name of the counter used by the sectional unit. -

    Due to the asynchronous nature of T

    Due to the asynchronous nature of TEX’s output routine, discrepancies will occur in page spanning paragraphs if you use the page counter.
    -

    -

    Note that you can’t use both the document-wide counting and the per-unit + id="dx1-37031"> counter.

    +

    +

    Note that you can’t use both the document-wide counting and the per-unit counting in the same document. -

    The counter value is used as part of a label, which means that

    The counter value is used as part of a label, which means that \thecounter-name⟩ needs to be expandable. Since hyperref also has a similar requirement and provides + id="dx1-37032"> also has a similar requirement and provides \theHcounter-name⟩ as an expandable alternative, \theHcounter-name⟩ if it exists otherwise it will use \thecounter-name⟩. -

    The per-unit counting function uses two attributes:

    The per-unit counting function uses two attributes: entrycount (as before) and + id="dx1-37033"> (as before) and unitcount (the name of the counter). -

    Both the original document-wide counting mechanism and the per-unit counting + id="dx1-37034"> (the name of the counter). +

    Both the original document-wide counting mechanism and the per-unit counting mechanism provide a command that can be used to access the current count value for this run: -


    \glsentrycurrcount 


    \glsentrycurrcount{label}

    -

    +

    and the final value from the previous run: -


    \glsentryprevcount 


    \glsentryprevcount{label}

    -

    +

    In the case of the per-unit counting, this is the final value for the current unit. In both commands ⟨label⟩ is the entry’s label. -

    The per-unit counting mechanism additionally provides: -


    \glsentryprevtotalcount 

    The per-unit counting mechanism additionally provides: +


    \glsentryprevtotalcount{label}

    -

    +

    which gives the sum of all the per-unit totals from the previous run for the entry given by ⟨label⟩, and -


    \glsentryprevmaxcount 


    \glsentryprevmaxcount{label}

    -

    +

    which gives the maximum per-unit total from the previous run. -

    The above two commands are unavailable for the document-wide counting. -

    Example of per-unit counting, where the unit is the chapter: +

    The above two commands are unavailable for the document-wide counting. +

    Example of per-unit counting, where the unit is the chapter:

    -
    +
    \documentclass{report}  
    \usepackage{glossaries-extra}  
    \GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter} @@ -16402,11 +16106,11 @@ which gives the maximum per-unit total from the previous run.  
    \printglossaries  
    \end{document}
    -

    In this document, the

    In this document, the css entry is used three times in the first chapter. This is more than the trigger value of 2, so \gls{css} is expanded on first use with the short form used on subsequent use, and the css entries in that @@ -16416,40 +16120,38 @@ only used once, which trips the suppression trigger, so in that chapter, the long form is used and \gls{css} doesn’t get a line added to the glossary file. -

    The

    The html is used a total of three times, but the expansion and indexing suppression trigger is tripped in both chapters because the per-unit total (1 for the first chapter and 2 for the second chapter) is less than or equal to the trigger value. -

    The

    The sample entry has only been used once, but it doesn’t trip the indexing suppression because it’s in the general category, which hasn’t been listed in + id="dx1-37040"> category, which hasn’t been listed in \GlsXtrEnableEntryUnitCounting. -

    The per-unit entry counting can be used for other purposes. In the following +

    The per-unit entry counting can be used for other purposes. In the following example document the trigger value is set to zero, which means the index suppression won’t be triggered, but the unit entry count is used to automatically suppress the hyperlink for commands like \gls by modifying the hook -


    \glslinkcheckfirsthyperhook  by modifying the hook +


    \glslinkcheckfirsthyperhook

    -

    +

    which is used at the end of the macro the determines whether or not to suppress the hyperlink.

    -
    +
    \documentclass{article}  
    \usepackage[colorlinks]{hyperref}  
    \usepackage{glossaries-extra} @@ -16470,22 +16172,22 @@ hyperlink.  
    \printglossaries  
    \end{document}
    -

    This only produces a hyperlink for the first instance of

    This only produces a hyperlink for the first instance of \gls{sample} on each page. -

    The earlier warning about using the

    The earlier warning about using the page counter still applies. If the + id="dx1-37043"> counter still applies. If the first instance of \gls occurs at the top of the page within a paragraph that started on the previous page, then the count will continue from the previous page. -

    +

    -

    Top

    6.2

    Top

    7.2 Link Counting

    -

    As from version 1.26, an alternative method of entry counting is to count the number +

    As from version 1.26, an alternative method of entry counting is to count the number @@ -16499,21 +16201,17 @@ class="cmtt-10">\hyperlink although \@gls@link may use \hyperlink when displaying the link-text.) -

    To enable link counting use the preamble-only command: -


    \GlsXtrEnableLinkCounting 

    To enable link counting use the preamble-only command: +


    \GlsXtrEnableLinkCounting[master counter] -{]{categories}

    -

    +

    where ⟨categories⟩ is a list of category labels. The optional argument ⟨master @@ -16523,24 +16221,22 @@ present, the associated link counter will be reset when the master counter is incremented. This command automatically sets the linkcount attribute for the given + id="dx1-38003"> attribute for the given categories. If the optional argument is present, it also sets the linkcountmaster + id="dx1-38004"> attribute. -

    When enabled, commands like

    When enabled, commands like \gls and \glstext increment the associated counter using -


    \glsxtrinclinkcounter 


    \glsxtrinclinkcounter{counter name}

    -

    +

    This just does \stepcounter{counter name\refstepcounter instead, just redefine this command:

    -
    +
    \renewcommand*{\glsxtrinclinkcounter}[1]{\refstepcounter{#1}}
    -

    -

    You can access the internal count register using -


    \GlsXtrLinkCounterValue 

    +

    You can access the internal count register using +


    \GlsXtrLinkCounterValue{label}

    -

    +

    where ⟨label⟩ is the entry’s label. This will expand to 0 if the counter hasn’t been defined. -

    It’s also possible to access the display value (

    It’s also possible to access the display value (\thecounter⟩) using -


    \GlsXtrTheLinkCounter 


    \GlsXtrTheLinkCounter{counter}

    -

    +

    (This will expand to 0 if the counter hasn’t been defined.) -

    In order to conserve resources, the counter is only defined when it first +

    In order to conserve resources, the counter is only defined when it first needs to be incremented so terms that have been defined but haven’t been used in the document won’t have the associated count register allocated.
    -

    -

    You can test if the counter has been defined using: -


    \GlsXtrIfLinkCounterDef 

    +

    You can test if the counter has been defined using: +


    \GlsXtrIfLinkCounterDef{label}{true}{false} -

    -

    +class="cmtt-10">}


    +

    where ⟨label⟩ is the entry’s label. -

    The counter name can be obtained using -


    \GlsXtrLinkCounterName 

    The counter name can be obtained using +


    \GlsXtrLinkCounterName{label}

    -

    +

    This simply expands to the counter name associated with the entry given by ⟨label⟩ without any check for existence. For example, to change the display command @@ -16616,15 +16303,15 @@ without any check for existence. For example, to change the display command class="cmtt-10">\the⟨counter⟩) using etoolbox: + id="dx1-38010">:

    -
    +
    \csdef{the\GlsXtrLinkCounterName{duck}}{\Roman{\GlsXtrLinkCounterName{duck}}}
    -

    This is useful if you just want to change the display for specific entries but isn’t +

    This is useful if you just want to change the display for specific entries but isn’t convenient if you want to change the display for all entries. Instead, it’s simpler to redefine \GlsXtrTheLinkCounter. For example: @@ -16632,19 +16319,19 @@ class="cmtt-10">\GlsXtrTheLinkCounter. For example:

    -
    +
    \renewcommand*{\GlsXtrTheLinkCounter}[1]{%  
     \GlsXtrIfLinkCounterDef{#1}%  
     {\Roman{\GlsXtrLinkCounterName{#1}}}%  
     {0}%  
    }
    -

    In both cases, the redefinition should be implemented after

    In both cases, the redefinition should be implemented after \GlsXtrEnableLinkCounting. -

    Here’s an example document that uses link counting to disable the hyperlink after +

    Here’s an example document that uses link counting to disable the hyperlink after the first reference. This redefines \glslinkpresetkeys (which is used by both (which is used by both \gls and \glstext) instead of \glstext).

    -
    +
    \documentclass{article}  
    \usepackage[colorlinks]{hyperref}  
    \usepackage{glossaries-extra} @@ -16679,32 +16366,32 @@ class="cmtt-10">\glstext).  
    \printglossaries  
    \end{document}
    -

    The use of

    The use of \glslinkpresetkeys means that the options can override this. For + id="dx1-38012"> means that the options can override this. For example

    -
    +
    \gls[hyper=true]{sample1}
    -

    will override the

    will override the hyper=false setting in \glslinkpresetkeys. If . If \glslinkpostsetkeys + id="dx1-38014"> is used instead, the hyper=false setting will override the setting provided in the optional argument. -

    The

    The abbreviation category doesn’t have the category doesn’t have the linkcount attribute set (since it’s not + id="dx1-38016"> attribute set (since it’s not listed in the argument of \GlsXtrEnableLinkCounting). This means that -

    +
    \ifnum\GlsXtrLinkCounterValue{\glslabel}>1
    -

    will always be false. This means that the abbreviation won’t have

    will always be false. This means that the abbreviation won’t have hyper=false applied. If the test is changed to

    -
    +
    \ifnum\GlsXtrLinkCounterValue{\glslabel}=1  
    \else  
     \setkeys{glslink}{hyper=false}%  
    \fi
    -

    Then the abbreviation will always have

    Then the abbreviation will always have hyper=false applied. -

    To reset the counter every section use the optional argument to set the master +

    To reset the counter every section use the optional argument to set the master counter:

    -
    +
    \GlsXtrEnableLinkCounting[section]{general}
    -

    +

    -

    -

    Top

    7.

    +

    Top

    8. Auto-Indexing

    -

    It’s possible that you may also want a normal index as well as the glossary, +

    It’s possible that you may also want a normal index as well as the glossary, and you may want entries to automatically be added to the index (as in this document). There are two attributes that govern this: indexname and + id="dx1-39001"> and dualindex. -

    The auto-indexing is designed for . +

    The auto-indexing is designed for makeindex syntax. If you’ve used the xindy + id="dx1-39004"> package option, the automatic escaping of xindy special characters in the sort field + id="dx1-39006"> field may result in an incorrect sort value for the \index command used by the auto-indexing. Note also that texindy has a fixed set of special characters + id="dx1-39007"> has a fixed set of special characters (corresponding to makeindex’s defaults) that can’t be customized. You may want to consider using bib2gls and its dual entries as an alternative approach.
    -

    -

    The

    +

    The \glsxtrpostnamehook macro, used at the end of macro, used at the end of \glossentryname and + id="dx1-39011"> and \Glossentryname, checks the , checks the indexname attribute for the category associated with + id="dx1-39013"> attribute for the category associated with that entry. Since \glossentryname is used in the default glossary styles, this makes a convenient way of automatically indexing each entry name at its location in the glossary without fiddling around with the value of the name + id="dx1-39014"> key. -

    The internal macro used by the

    The internal macro used by the glossaries package to write the information to the external glossary file is modified to check for the dualindex attribute. -

    In both cases, the indexing is done through -


    \glsxtrdoautoindexname  attribute. +

    In both cases, the indexing is done through +


    \glsxtrdoautoindexname{label}{attribute-label} -

    -

    +class="cmtt-10">}


    +

    This uses the standard \index command with the sort value taken from the entry’s + id="dx1-39017"> command with the sort value taken from the entry’s sort key and the actual value set to key and the actual value set to \glsentryname{label}. As from v1.16, there are user-level commands available to change the sort and actual value used by the automated index. -

    The actual value is given by -


    \glsxtrautoindexentry 

    The actual value is given by +


    \glsxtrautoindexentry{label}

    -

    +

    where ⟨label⟩ is the entry’s label. The default definition is:

    -
    +
    \newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}}
    -

    Note the use of

    Note the use of \string to prevent \glsentryname from being expanded as it’s written to the index file. -

    The sort value is assigned using: -


    \glsxtrautoindexassignsort 

    The sort value is assigned using: +


    \glsxtrautoindexassignsort{cs}{label} -

    -

    +class="cmtt-10">}


    +

    where ⟨label⟩ is the entry label and ⟨cs⟩ is the command which needs to be set to the @@ -16877,458 +16556,212 @@ sort value. The default definition is:

    -
    +
    \newcommand*{\glsxtrautoindexassignsort}[2]{%  
      \glsletentryfield{#1}{#2}{sort}%  
    }
    -

    After this macro is called, ⟨

    After this macro is called, ⟨cs⟩ is then processed to escape any of makeindex’s special + id="dx1-39021">’s special characters. Note that this escaping is only performed on the sort not on the actual value. The escaping of the sort value is performed by -


    \glsxtrautoindexesc 


    \glsxtrautoindexesc

    -

    +

    You can redefine this to do nothing if you want to omit the escaping. You may want to consider providing another field to obtain the appropriate sort value if the one provided in the sort field isn’t suitable (because it may already have had special + id="dx1-39023"> field isn’t suitable (because it may already have had special characters escaped or it may be a numeric value in the case of sort by use or definition). -

    The command used to perform the actual indexing is: -


    \glsxtrautoindex 

    The command used to perform the actual indexing is: +


    \glsxtrautoindex{text}

    -

    +

    This just does \index{text} by default. -

    The entry’s

    The entry’s parent field isn’t referenced in this automated indexing. + id="dx1-39025"> field isn’t referenced in this automated indexing.
    -

    -

    For example, to index the value of the

    +

    For example, to index the value of the first key, instead of the key, instead of the name key: + id="dx1-39027"> key:

    -
    +
    \renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}}
    -

    and if the sort value also needs to be set to the

    and if the sort value also needs to be set to the long field, if present, otherwise the + id="dx1-39028"> field, if present, otherwise the sort field: + id="dx1-39029"> field:

    -
    +
    \renewcommand*{\glsxtrautoindexassignsort}[2]{%  
      \ifglshaslong{#2}%  
      {\glsletentryfield{#1}{#2}{long}}%  
      {\glsletentryfield{#1}{#2}{sort}}%  
    }
    -

    -

    If the value of the attribute given by ⟨

    +

    If the value of the attribute given by ⟨attribute-label⟩ is “true”, no encap will be added, otherwise the encap will be the attribute value. For example:

    -
    +
    \glssetcategoryattribute{general}{indexname}{textbf}
    -

    will set the encap to

    will set the encap to textbf which will display the relevant page number in bold whereas

    -
    +
    \glssetcategoryattribute{general}{dualindex}{true}
    -

    won’t apply any formatting to the page number in the index. -

    The location used in the index will always be the page number not the counter +

    won’t apply any formatting to the page number in the index. +

    The location used in the index will always be the page number not the counter used in the glossary. (Unless some other loaded package has modified the definition of \index to use some thing else.)
    -

    -

    By default the

    +

    By default the format key won’t be used with the key won’t be used with the dualindex attribute. You can + id="dx1-39031"> attribute. You can allow the format key to override the attribute value by using the preamble-only + id="dx1-39032"> key to override the attribute value by using the preamble-only command: -


    \GlsXtrEnableIndexFormatOverride  \GlsXtrEnableIndexFormatOverride -

    -

    +


    \GlsXtrEnableIndexFormatOverride

    +

    If you use this command and hyperref has been loaded, then the has been loaded, then the theindex + id="dx1-39035"> environment will be modified to redefine \glshypernumber to allow formats that use + id="dx1-39037"> to allow formats that use that command. -

    The

    The dualindex attribute will still be used on subsequent use even if the + id="dx1-39038"> attribute will still be used on subsequent use even if the indexonlyfirst attribute (or attribute (or indexonlyfirst package option) is set. However, the package option) is set. However, the dualindex + id="dx1-39041"> attribute will honour the noindex key.
    -

    -

    The key.

    +

    +

    The \glsxtrdoautoindexname command will attempt to escape any of \makeindex’s special characters, but there may be special cases where it fails, so take + id="dx1-39043">’s special characters, but there may be special cases where it fails, so take care. This assumes the default makeindex actual, level, quote and encap values (unless any of the commands \actualchar, , \levelchar, , \quotechar or or \encapchar + id="dx1-39048"> have been defined before glossaries-extra is loaded). -

    If this isn’t the case, you can use the following preamble-only commands to set +

    If this isn’t the case, you can use the following preamble-only commands to set the correct characters. -

    Be very careful of possible shifting category codes!
    -

    -


    \GlsXtrSetActualChar 

    Be very careful of possible shifting category codes!
    +

    +


    \GlsXtrSetActualChar{char}

    -

    -Set the actual character to ⟨char⟩. -


    \GlsXtrSetLevelChar  \GlsXtrSetLevelChar{char}

    -

    -Set the level character to ⟨char⟩. -


    \GlsXtrSetEscChar  \GlsXtrSetEscChar{char}

    -

    -Set the escape (quote) character to ⟨char⟩. -


    \GlsXtrSetEncapChar  \GlsXtrSetEncapChar{char}

    - - - -

    -Set the encap character to ⟨char⟩. - - - -

    -

    -

    Top

    8. On-the-Fly Document Definitions

    -

    The commands described here may superficially look like ⟨word\index{word}, -but they behave rather differently. If you want to use \index then just use \index. -
    -

    -

    The glossaries package advises against defining entries in the document -environment. As mentioned in §1.2 New or Modified Package Options above, this -ability is disabled by default with glossaries-extra but can be enabled using the -docdefs package options. -

    Although this can be problematic, the glossaries-extra package provides a way of -defining and using entries within the document environment without the tricks used -with the docdefs option. There are limitations with this approach, so take care with it. -This function is disabled by default, but can be enabled using the preamble-only -command: -


    \GlsXtrEnableOnTheFly  \GlsXtrEnableOnTheFly

    -

    -When used, this defines the commands described below. -

    The commands \glsxtr, \glsxtrpl, \Glsxtr and \Glsxtrpl can’t be used after -the glossaries have been displayed (through \printglossary etc). It’s best not to -mix these commands with the standard glossary commands, such as \gls or there -may be unexpected results.
    -

    -


    \glsxtr  \glsxtr[gls-options][dfn-options]{label}

    -

    -If an entry with the label ⟨label⟩ has already been defined, this just does \gls -[gls-options]{label}. If ⟨label⟩ hasn’t been defined, this will define the entry using: -

    -
    -\newglossaryentry{label}{name={label}, -
     category=\glsxtrcat, -
     description={\nopostdesc}, -
     dfn-options} -
    -
    -

    The ⟨label⟩ must contain any non-expandable commands, such as formatting -commands or problematic characters. If the term requires any of these, they must be -omitted from the ⟨label⟩ and placed in the name key must be provided in the optional -argument ⟨dfn-options⟩.
    -

    - - - -

    The second optional argument ⟨dfn-options⟩ should be empty if the entry has -already been defined, since it’s too late for them. If it’s not empty, a warning will be -generated with -


    \GlsXtrWarning  \GlsXtrWarning{dfn-options}{label

    +Set the actual character to ⟨char⟩. +


    \GlsXtrSetLevelChar{char}

    +

    +Set the level character to ⟨char⟩. +


    \GlsXtrSetEscChar{char}

    +

    +Set the escape (quote) character to ⟨char⟩. +


    \GlsXtrSetEncapChar{char}

    -

    -

    For example, this warning will be generated on the second instance of \glsxtr -below: - - - -

    -
    -\glsxtr[][plural=geese]{goose} - 
     ... later - 
    \glsxtr[][plural=geese]{goose} -
    -

    -

    If you are considering doing something like: -

    -
    -\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}} - 
    \renewcommand*{\GlsXtrWarning}[2]{} - 
     ... later - 
    \goose\ some more text here -
    -

    then don’t bother. It’s simpler and less problematic to just define the entries in the -preamble with \newglossaryentry and then use \gls in the document. -

    There are plural and case-changing alternatives to \glsxtr: -


    \glsxtrpl  \glsxtrpl[gls-options][dfn-options]{label}

    -

    -This is like \glsxtr but uses \glspl instead of \gls. -


    \Glsxtr  \Glsxtr[gls-options][dfn-options]{label}

    -

    -This is like \glsxtr but uses \Gls instead of \gls. -


    \Glsxtrpl  \Glsxtrpl[gls-options][dfn-options]{label}

    -

    -This is like \glsxtr but uses \Glspl instead of \gls. -

    If you use UTF-8 and don’t want the inconvenient of needing to use an -ASCII-only label, then it’s better to use XƎLATEX or LuaLATEX instead of -LATEX (or pdfLATEX). If you really desperately want to use UTF-8 entry labels -without switching to XƎLATEX or LuaLATEX then there is a starred version of -\GlsXtrEnableOnTheFly that allows you to use UTF-8 characters in ⟨label⟩, but it’s -experimental and may not work in some cases. -

    If you use the starred version of \GlsXtrEnableOnTheFly don’t use any -commands in the ⟨label⟩, even if they expand to just text.
    -

    +

    +Set the encap character to ⟨char⟩.

    -

    -

    +

    Top

    9. bib2gls: Managing Reference Databases

    -

    There is a new command line application called

    There is a new command line application called bib2gls, which works in much the same way as a combination of \input or \loadglsentries, the entries can instead be stored in a .bib file and bib2gls can selectively write the appropriate commands to a .glstex file which is loaded using \glsxtrresourcefile (or \GlsXtrLoadResources). -

    This means that you can use a reference managing system, such as JabRef, to +

    This means that you can use a reference managing system, such as JabRef, to maintain the database and it reduces the TEX overhead by only defining the entries that are actually required in the document. If you currently have a .tex file containing glossary definitions to a .bib file using convertgls2bib, supplied with + id="dx1-40003">, supplied with bib2gls.) -

    There are some new commands and options added to

    There are some new commands and options added to glossaries-extra to help assist the integration of bib2gls into the document build process. -

    This chapter just provides a general overview of

    This chapter just provides a general overview of bib2gls. The full details and some sample documents are provided in the bib2gls manual. -

    An example of the contents of

    An example of the contents of .bib file that stores glossary entries that can be extracted with bib2gls:

    -
    +
    @entry{bird,  
      name={bird},  
      description = {feathered animal}, @@ -17401,13 +16834,13 @@ class="cmtt-10">bib2gls:  
      description={a waterbird with a long neck}  
    }
    -

    -

    The follow provides some abbreviations: +

    +

    The follow provides some abbreviations:

    -
    +
    @string{ssi={server-side includes}}  
    @string{html={hypertext markup language}}  
    @abbreviation{shtml, @@ -17426,13 +16859,13 @@ class="cmtt-10">bib2gls:  
      description={a simple interpreted server-side scripting language}  
    }
    -

    -

    Here are some symbols: +

    +

    Here are some symbols:

    -
    +
    preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"}  
    @symbol{M,  
      name={$\mtx{M}$}, @@ -17450,74 +16883,69 @@ preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"}  
      description={a set}  
    }
    -

    -

    To ensure that

    +

    To ensure that bib2gls can find out which entries have been used in the document, you need the record package option: + id="dx1-40010"> package option:

    -
    +
    \usepackage[record]{glossaries-extra}
    -

    If this option’s value is omitted (as above), the normal indexing will be switched off, +

    If this option’s value is omitted (as above), the normal indexing will be switched off, since bib2gls can also sort the entries and collate the locations. -

    If you still want to use an indexing application (for example, you need a custom +

    If you still want to use an indexing application (for example, you need a custom xindy rule), then just use record=alsoindex and continue to use and continue to use \makeglossaries and \printglossary (or \printglossaries), but you also need to instruct bib2gls to omit sorting to save time and to prevent the sort key from being + id="dx1-40015"> key from being set. -

    The

    The .glstex file created by bib2gls is loaded using: -


    \glsxtrresourcefile 


    \glsxtrresourcefile[options]{filename} -

    -

    +class="cmtt-10">}


    +

    (Don’t include the file extension in ⟨filename⟩.) There’s a shortcut version (recommended over the above) that sets ⟨filename⟩ to use \jobname: -


    \GlsXtrLoadResources 


    \GlsXtrLoadResources[options]

    -

    +

    On the first use, this command is a shortcut for

    }
    On subsequent use,9.1 this + id="x1-40019f1"> this command is a shortcut for
    }
    where ⟨n⟩ is the current value of -



    \glsxtrresourcecount

    -

    +

    which is incremented at the end of \GlsXtrLoadResources. Any advisory notes regarding \glsxtrresourcefile also apply to \GlsXtrLoadResources. -

    The

    The \glsxtrresourcefile command writes the line

    filename.glstex if it exists.9.2 + id="x1-40020f2"> -

    Since the

    Since the .glstex file won’t exist on the first LATEX run, the record package + id="dx1-40021"> package option additionally switches on undefaction=warn. Any use of commands like . Any use of commands like \gls or \glstext will produce ?? in the document, since the entries are undefined at this point. Once bib2gls has created the .glstex file the references should be resolved. This may cause a shift in the locations if the actual text produced once the entry is defined is significantly larger than the placeholder ?? (as this can alter the page breaking). -

    Note that as from v1.12,

    Note that as from v1.12, \glsxtrresourcefile temporarily switches the category code of @ to 11 (letter) while it reads the file to allow for any internal commands stored in the location field.

    -

    Top

    9.1 Selection

    -

    The default behaviour is for

    The default behaviour is for bib2gls to select all entries that have a record in the .aux file, and any dependent entries (including parent an class="cmtt-10">glsignore format (for example, \gls[format=glsignore]{duck}) is recognised by bib2gls as a special ignored record. This means that it will match the selection criteria but the record won’t be added to the location list. This means that you won’t get spurious commas in the location list (as can happen with the other indexing @@ -17621,66 +17049,66 @@ methods), so you can do, for example,

    -
    +
    \GlsXtrSetDefaultNumberFormat{glsignore}
    -

    at the start of the front matter and +

    at the start of the front matter and

    -
    +
    \GlsXtrSetDefaultNumberFormat{glsnumberformat}
    -

    at the start of the main matter to prevent any records in the front matter from +

    at the start of the main matter to prevent any records in the front matter from occurring in the location lists. -

    Note that commands like

    Note that commands like \glsaddall and \glsaddallunused don’t work with bib2gls as the command has to iterate over the internal lists of defined entry labels, which will be empty on the first run and on subsequent runs will only contain those entries that have been selected by bib2gls.
    -

    -

    If you want to add all entries to the glossary, you need to tell

    +

    If you want to add all entries to the glossary, you need to tell bib2gls this in the options list. For example:

    -
    +
    \GlsXtrLoadResources[src={terms},selection={all}]
    -

    This will add all entries, regardless of whether or not they have any records in the +

    This will add all entries, regardless of whether or not they have any records in the .aux file. Those that don’t have any records will have an empty location list. See the bib2gls user manual for more details of this option. -

    +

    -

    Top

    9.2 Sorting and Displaying the Glossary

    -

    There are many sorting options provided by

    There are many sorting options provided by bib2gls. The default is to sort according to the system locale. If the document has a language setting, you can use sort=doc to instruct bib2gls to sort according to that. (The language tag obtained from tracklang’s interface is written to the ’s interface is written to the .aux file.) For a multilingual document you need to explicitly set the locale using a well-formed language tag. For example: @@ -17688,26 +17116,26 @@ example:

    -
    +
    \GlsXtrLoadResources[  
      src=terms, % data in terms.bib  
      sort=de-DE-1996 % sort according to this locale  
    ]
    -

    The locale-sensitive sort methods usually ignore most punctuation so for lists of +

    The locale-sensitive sort methods usually ignore most punctuation so for lists of symbols you may find it more appropriate to use one of the letter-base sort methods that sort according to the Unicode value of each character. Alternatively you can provide a custom rule. See the bib2gls manual for full details of all the available sort methods. -

    Since the

    Since the .glstex file only defines those references required within the document (selected according to the selection option) and the definitions have been written in the order corresponding to bib2gls’s sorted list, the glossaries can simply be displayed using \printunsrtglossary (or \printunsrtglossaries), described in href="#sec:printunsrt">§10.2 Display All Entries Without Sorting or Indexing. -

    Suppose the

    Suppose the .bib examples shown above have been stored in the files terms.bib, EX’s path. Then the document might look like:

    -
    +
    \documentclass{article}  
    \usepackage[record]{glossaries-extra}  
    \setabbreviationstyle{long-short-desc} @@ -17740,18 +17168,18 @@ class="E">EX’s path. Then the document might look like:  
    \printunsrtglossaries  
    \end{document}
    -

    The document build process (assuming the document is called

    The document build process (assuming the document is called mydoc) is:

    -
    +
    pdflatex mydoc  
    bib2gls mydoc  
    pdflatex mydoc
    -

    This creates a single glossary containing the entries:

    This creates a single glossary containing the entries: bird, duck, goose, bird, shtml and M entries were added because bib2gls detected (from the .aux file) that they had been used in the document. The other entries were added because bib2gls detected (from the .bib files) that they are referenced by the used entries. In the case of duck and goose, they are in the see field for field for bird. In the case of ssi and html, they are referenced in the description field of field of shtml. These cross-referenced entries won’t have a location list when the glossary is first displayed, but depending on how they are referenced, they may pick up a location list on the next document build. -

    The entries can be separated into different glossaries with different sort +

    The entries can be separated into different glossaries with different sort methods:

    -
    +
    \documentclass{article}  
    \usepackage[record,abbreviations,symbols]{glossaries-extra}  
    \setabbreviationstyle{long-short-desc} @@ -17810,8 +17238,8 @@ methods:  
    \printunsrtglossaries  
    \end{document}
    -

    -

    Or you can have multiple instance of

    +

    Or you can have multiple instance of \GlsXtrLoadResources with the same type, which will produce a glossary with ordered sub-blocks. For example: @@ -17819,7 +17247,7 @@ class="cmtt-10">type, which will produce a glossary with ordered sub-bloc

    -
    +
    \documentclass{article}  
    \usepackage[record,style=indexgroup]{glossaries-extra}  
    \setabbreviationstyle{long-short-desc} @@ -17837,10 +17265,10 @@ class="cmtt-10">type, which will produce a glossary with ordered sub-bloc  
    \printunsrtglossaries  
    \end{document}
    -

    This will result in a glossary where the first group has the title “Abbreviations”, the +

    This will result in a glossary where the first group has the title “Abbreviations”, the second group has the title “Symbols” and then follow the usual letter groups. Note that for this example to work, you must run bib2gls with the --group (or myDoc.tex:

    -
    +
    pdflatex myDoc  
    bib2gls -g myDoc  
    pdflatex myDoc
    -

    The value of the

    The value of the group field must always be a label. You can set the corresponding + id="dx1-42011"> field must always be a label. You can set the corresponding title with \glsxtrsetgrouptitle (see §2.12 Glossary Style Modifications). If no title -is set then the label is used as the group title. -

    You can provide your own custom sort rule. For example, if you are using +class="cmsy-10">§2.10.1 Glossary Style Modifications). If no +title is set then the label is used as the group title. +

    You can provide your own custom sort rule. For example, if you are using XƎLATEX or LuaLATEX:

    ]
    Remember that if you are using inputenc then extended characters, such as é or ø, + id="dx1-42012"> then extended characters, such as é or ø, are active and will expand when written to the .aux file. So with PDFLATEX the @@ -18017,7 +17445,7 @@ class="cmti-10">hex⟩) in the .aux file. bib2gls will recognise this as the character given by the hexadecimal value ⟨\string\uE6 and so on. This is quite cumbersome, but you can use the shortcut \glshex E6 instead, so the above needs to be written as:
    @@ -18164,49 +17592,49 @@ class="cmsy-10">}]
    -

    +

    -

    Top

    9.3 The The glossaries-extra-bib2gls package

    -

    The package option

    The package option record=only (or simply (or simply record) automatically loads the + id="dx1-43002">) automatically loads the supplementary package glossaries-extra-bib2gls, which provides some commands that + id="dx1-43003">, which provides some commands that are specific to bib2gls. The package isn’t loaded by record=alsoindex as that option + id="dx1-43005"> as that option is intended for sorting with makeindex or xindy and it is expected that the sorting will be switched off (with the resource option sort=none). -

    If

    If glossaries-extra-bib2gls is loaded via the is loaded via the record package option then the + id="dx1-43009"> package option then the check for associated language resource files (see §13 §14 Multi-Lingual Support) will also search for the existence of glossariesxtr-script⟩ is the four letter script identifier, such as Latn). -

    This package provides some shortcut commands that use

    This package provides some shortcut commands that use \printunsrtglossary if the + id="dx1-43010"> if the relevant package option has defined the associated glossary: \printunsrtabbreviations, + id="dx1-43011">, \printunsrtacronyms, , \printunsrtsymbols, , \printunsrtnumbers and + id="dx1-43014"> and \printunsrtindex. -


    \glsxtrprovidecommand  . +

    The savenumberlist package option doesn’t have any effect with bib2gls. +The location lists are saved by default, so glossaries-extra-bib2gls patches +\glsentrynumberlist and \glsdisplaynumberlist to work with the location +field +


    \glsxtrprovidecommand{cs}[n][default] -{]{definition}

    -

    +

    This command is intended for use in @preamble. It’s simply defined to \providecommand in glossaries-extra-bib2gls but but bib2gls’s interpreter treats it as \renewcommand. This means that you can override bib2gls’s internal definition of a command without overriding the command definition in the document (if it’s already defined before the resource file is input). For example @@ -18266,11 +17707,11 @@ defined before the resource file is input). For example

    -
    +
    @preamble{"\glsxtrprovidecommand{\int}{integral}"}
    -

    This will force

    This will force bib2gls to treat \int as the word “integral” to assist sorting but if @@ -18278,7 +17719,7 @@ this preamble code is written to the .glstex file (as it is by default) then it won’t override the current definition (provided by the kernel or redefined by a package). -

    The helper commands in the resource files are defined using

    The helper commands in the resource files are defined using \providecommand. For many of them, if you want to provide an alternative definition then you need to define the command before the resource file is loaded. There are a few that may be @@ -18288,10 +17729,8 @@ first LATEX run when the .glstex file doesn’t exist. In this case, you may prefer to use: -


    \glsrenewcommand 


    \glsrenewcommand{cs}[][default]{definition} -

    -

    +class="cmtt-10">}


    +

    This behaves like \renewcommand but only generates a warning rather than an error if the command isn’t already defined so it won’t interrupt the document build. -


    \GlsXtrIndexCounterLink 


    \GlsXtrIndexCounterLink{text}{label} -

    -

    +class="cmtt-10">}


    +

    If the \hyperref command has been defined (that is, command has been defined (that is, hyperref has been + id="dx1-43030"> has been loaded before glossaries-extra) then this command checks for the existence of the text⟩. This command is provided for use with the indexcounter package option combined with package option combined with bib2gls’s save-index-counter resource option. See the bib2gls manual for further details (at least version 1.4). -

    If you use the

    If you use the set-widest resource option, bib2gls v1.8+ will now use: -


    \glsxtrSetWidest 


    \glsxtrSetWidest{type}{level}{text}

    -

    +

    (if it has been defined) to set the widest name for the given glossary type and level. This allows for both the alttree style and the styles provided by style and the styles provided by glossary-longextra, + id="dx1-43037">, which need to know the widest name. -

    If

    If bib2gls can’t determine the widest name (typically because the name field consists of commands that aren’t recognised by the interpreter) then bib2gls v1.8+ will now use: -


    \glsxtrSetWidestFallback 


    \glsxtrSetWidestFallback{max depth}{list} -

    - - - -

    +class="cmtt-10">}


    +

    (if defined). Currently the maximum hierarchical depth ⟨max depth⟩ may only be 0 or 2. This command requires commands provided by the glossaries-extra-stylemods + id="dx1-43041"> + + + package with the alttree style enabled. In this case, it may be simpler to just use + id="dx1-43042"> style enabled. In this case, it may be simpler to just use \glssetwidest. -

    + id="dx1-43043">. +

    -

    Top

    9.3.1 Supplemental Locations

    -


    \glsxtrdisplaysupploc 


    \glsxtrdisplaysupploc{prefix}{counter}{format} -{}{src}{location}

    -

    +class="cmtt-10">} +


    +

    This is used by bib2gls version 1.7+ for supplemental locations, instead of using \glsxtrsupphypernumber with the externallocation attribute. This command sets up + id="dx1-44003"> attribute. This command sets up the location counter and prefix (used in the formation of hyperlinks) and then uses -


    \glsxtrmultisupplocation 


    \glsxtrmultisupplocation{location}{src} -{}{format}

    -

    +

    to format the actual location (with an external hyperlink, if supported). -

    +

    -

    Top

    9.3.2 Nameref Record

    -

    Normally locations are recorded in the

    Normally locations are recorded in the .aux file in the form: -



    \glsxtr@record{label}{}{location}

    -

    +

    The record=nameref option, which requires at least option, which requires at least bib2gls v1.8, instead uses: -



    \glsxtr@record@nameref{label}{href}{hcounter}

    -

    +

    where ⟨title⟩ is obtained from \@currentlabelname and ⟨href ⟩ is obtained from \@currentHref. These commands require hyperref. If they are undefined, ⟨. If they are undefined, ⟨title⟩ and ⟨href ⟩ will be left empty and bib2gls will treat it as a regular record. -

    Be careful with this option as ⟨

    Be careful with this option as ⟨href ⟩ will globally change on every instance of \refstepcounter but ⟨title⟩ won’t necessarily change. It can therefore cause unexpected behaviour.
    -

    -

    The final argument ⟨

    +

    The final argument ⟨hcounter⟩ is obtained from \theHcounter⟩ which provides the partial target name associated with the indexing counter. With the original - - - makeindex/xindy approach, it’s not possible to include this information in the location, so the base glossaries package attempts to derive a prefix from which the + id="dx1-45007"> package attempts to derive a prefix from which the ⟨hcounter⟩ value can be reconstituted by appending the prefix. Unfortunately, not all definitions of counter⟩ are in the form ⟨prefix\thecounter⟩ (most notably the + + + equation counter with chapters) so this can fail. -

    Since counter with chapters) so this can fail. +

    Since bib2gls is customized specifically for use with glossaries-extra, it’s now @@ -18565,7 +17988,7 @@ class="cmti-10">hcounter⟩, so the record=nameref option does this. By providing both + id="dx1-45010"> option does this. By providing both ⟨href ⟩ and ⟨hcounter⟩, you can determine which target you would rather use. The default @@ -18576,10 +17999,10 @@ class="cmtt-10">\refstepcounter. However, you may choose to switch to using the ⟨href ⟩ target, which will take you to the nearest target before the indexing took place. -

    With

    With bib2gls v1.8+, normal locations are displayed using: -



    \glsnoidxdisplayloc{prefix}{format}{location}

    -

    +

    This is provided by the base glossaries package and is simply defined to do: -


    package and is simply defined to do: +


    \setentrycounter[prefix]{}{location}

    -

    +

    Earlier versions of bib2gls only used this in the loclist field and explicitly used + id="dx1-45014"> field and explicitly used \setentrycounter in the location field followed by field followed by \format{}, which follows the code that’s created with the default makeindex setting. The setting. The \setentrycounter command sets up the prefix needed for \glshypernumber to reform the target name from the given location. -

    The locations identified by

    The locations identified by \glsxtr@record@nameref are written by bib2gls to the location list using: -


    \glsxtrdisplaylocnameref 


    \glsxtrdisplaylocnameref{prefix}{counter} -{}{format}{location}{} +{title}{hrefhcounter}{file}

    -

    +

    With normal internal locations, ⟨file⟩ will always be empty. With supplemental locations, ⟨file⟩ will be the external file reference. -

    The default definition is: +

    The default definition is:

    -
    +
    \newcommand*{\glsxtrdisplaylocnameref}[8]{%  
      \ifstrequal{#2}{equation}%  
      {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% @@ -18682,11 +18103,9 @@ class="cmti-10">file⟩ will be the external file reference.  
      }%  
    }
    -

    which uses: -


    \glsxtrnamereflink 

    which uses: +


    \glsxtrnamereflink{format}{}{target}{file} -

    -

    +class="cmtt-10">}


    +

    This ignores the ⟨prefix⟩, ⟨counter⟩ and } arguments and instead creates a hyperlink with the target name obtained from ⟨target⟩ (and ⟨file⟩, if not empty). -

    Since pages and equations typically don’t have titles, the default definition of +

    Since pages and equations typically don’t have titles, the default definition of \glsxtrdisplaylocnameref checks the counter was used as the location. If it’s page + id="dx1-45020"> or if ⟨title⟩ is empty, then just the location is used as the hyperlink text. If the counter equation, then the text is the location in parentheses. Otherwise the text is obtained + id="dx1-45021">, then the text is the location in parentheses. Otherwise the text is obtained from ⟨title⟩. -

    If ⟨

    If ⟨file⟩ is empty an internal link is created with: -


    \glsxtrfmtinternalnameref 


    \glsxtrfmtinternalnameref{target}{format} -{}{title}

    -

    +

    otherwise an external link is created with: -


    \glsxtrfmtexternalnameref 


    \glsxtrfmtexternalnameref{target}{format} -{}{title}{file}

    -

    +

    The ⟨file⟩ argument is set by bib2gls for supplemental locations. -

    Here’s alternative definition that uses the ⟨

    Here’s alternative definition that uses the ⟨prefix⟩ and ⟨counter⟩ to reform the target name (as -

    +
    \renewcommand*{\glsxtrdisplaylocnameref}[7]{%  
     \glsxtrnamereflink{#3}{#5}{#6}{#7}%  
    }
    -

    which uses: -


    \glsxtrnameloclink 

    which uses: +


    \glsxtrnameloclink{prefix}{counter}{format} -{}{location}{title}{} +{file}

    -

    +

    This uses the same commands as \glsxtrnamereflink to produce the hyperlinks. -

    In both cases, the link is encapsulated with the text-block command whose +

    In both cases, the link is encapsulated with the text-block command whose name is given by ⟨format⟩, but \glshypernumber is first locally redefined to @@ -18807,8 +18215,8 @@ class="cmti-10">format⟩ is hyperbf then it will simply behave like textbf. -

    For compactness,

    For compactness, bib2gls merges normal records if the ⟨prefix⟩, ⟨location⟩ all match. (An order of precedence can b With nameref records, you can use the --merge-nameref-on switch provided by bib2gls v1.8+ to determine how to merge nameref records. This switch must be followed by one of the following keywords: hcounter (merge on @@ -18833,62 +18241,54 @@ class="cmtt-10">location class="cmti-10">location⟩, as regular records). In all cases, the ⟨counter⟩ must also match. -

    +

    -

    Top

    9.3.3 Helper Commands for Resource Options

    -


    \glshex 


    \glshex

    -

    +

    This is just defined as \string\u, which is required when you need to indicate a Unicode character in the form \uhex⟩ in some of the resource options (as illustrated above). -


    \glscapturedgroup 


    \glscapturedgroup

    -

    +

    This is just defined as \string\$ and is used for the captured group reference in a replacement part of a regular expression substitution (requires at least bib2gls version 1.5). For example:

    -
    +
    sort-replace={{([a-zA-Z])\string\.}{\glscapturedgroup1}}
    -

    This only removes a full stop that follows any of the characters a,…,z or +

    This only removes a full stop that follows any of the characters a,…,z or A,…,Z. -

    If you use the

    If you use the save-child-count resource option, you can test if the childcount field is non-zero using: -


    \GlsXtrIfHasNonZeroChildCount 


    \GlsXtrIfHasNonZeroChildCount{label} -{}{true}{false}

    -

    +

    This internally uses \GlsXtrIfFieldNonZero and will do ⟨false⟩ if the field isn’t set. @@ -18898,39 +18298,35 @@ class="cmti-10">false⟩ you can use \glscurrentfieldvalue to access the value. (It will be 0 in ⟨false⟩ if the field isn’t set.) -

    A convenient shortcut for use in the

    A convenient shortcut for use in the entry-type-aliases setting: -


    \GlsXtrBibTeXEntryAliases 


    \GlsXtrBibTeXEntryAliases

    -

    +

    This provides aliases for BibTEX’s standard entry types to bib2gls’s @bibtexentry entry type (requires at least bib2gls version 1.4). -

    You may also want to provide storage keys for BibT

    You may also want to provide storage keys for BibTEX’s standard fields rather than having to alias them all. This can be done with: -


    \GlsXtrProvideBibTeXFields 


    \GlsXtrProvideBibTeXFields

    -

    +

    Note that BibTEX’s type field clashes with the glossaries package’s package’s type key, so + id="dx1-46010"> key, so this command provides the key bibtextype instead. You can alias it with bibtextype field can be accessed with \glsxtrbibtype. Each of these commands takes the entry label as the sole argument. -

    The

    The glossaries-extra-bib2gls package also provides definitions of the missing + id="dx1-46011"> package also provides definitions of the missing mathematical Greek commands: \Alpha, , \Beta, , \Epsilon, , \Zeta, , \Eta, , \Iota, + id="dx1-46017">, \Kappa, , \Mu, , \Nu, , \Omicron, , \Rho, , \Tau, , \Chi, , \Digamma, , \omicron. These are all + id="dx1-46026">. These are all defined with \providecommand, so they won’t override any definitions provided by any package loaded before glossaries-extra. Since . Since bib2gls’s interpreter recognises these commands, using them instead of explicitly using the Latin characters with the same shape helps to keep the Greek symbols together when sorting. Similarly, if upgreek has been loaded, the missing upright Greek commands are also + id="dx1-46029"> has been loaded, the missing upright Greek commands are also provided. -

    The remaining commands provide common rule blocks for use in the +

    The remaining commands provide common rule blocks for use in the sort-rule resource option. If you want a rule for a specific locale, you can provide similar commands in a file called \IfTrackedLanguageFileExists in the tracklang documentation for further details. - - - + id="dx1-46030"> documentation for further details. If this file is on TEX’s path and the tracklang package (automatically loaded by + id="dx1-46031"> package (automatically loaded by + + + glossaries) detects that the document has requested that language or locale, then the file will automatically be loaded. For example, if you want to provide a rule @@ -19022,7 +18418,7 @@ contains:

    -
    +
    \ProvidesGlossariesExtraLang{welsh}[2018/02/23 v1.0]  
    \@ifpackageloaded{glossaries-extra-bib2gls}  
    { @@ -19060,7 +18456,7 @@ contains:  
    }  
    {}% glossaries-extra-bib2gls.sty not loaded
    -

    (The use of

    (The use of \string is in case the < character has been made active.) You can provide more than one rule-block per local, to allow for loanwords or foreign words. @@ -19068,7 +18464,7 @@ For example, you could provide \glsxtrWelshIRules, \glsxtrWelshIIRules etc. -

    If the rules are for a particular script (independent of language or region) then +

    If the rules are for a particular script (independent of language or region) then they can be provided in a file given by glossariesxtr-scriptglossariesxtr-Cyrl.ldf could contain:

    -
    +
    \ProvidesGlossariesExtraLang{Cyrl}[2018/02/23 v1.0]  
    \newcommand*{\glsxtrGeneralCyrillicIRules}{%  
      % Cyrillic rules @@ -19088,20 +18484,20 @@ class="cmtt-10">glossariesxtr-Cyrl.ldf could contain:  
      % an alternative set of Cyrillic rules  
    }
    -

    (Remember that the required document language scripts need to be tracked through +

    (Remember that the required document language scripts need to be tracked through the tracklang package, in order for these files to be automatically loaded. This + id="dx1-46032"> package, in order for these files to be automatically loaded. This essentially means ensuring you load the appropriate language package before tracklang is loaded by the base is loaded by the base glossaries package or any other package that uses it. + id="dx1-46034"> package or any other package that uses it. See the tracklang documentation for further details.) -

    Alternatively, if the rules are specific to a subject rather than a region or + id="dx1-46035"> documentation for further details.) +

    Alternatively, if the rules are specific to a subject rather than a region or language, then you can provide a supplementary package. For example, if you have a package called, say, mapsymbols that provides map symbols, then the file @@ -19111,7 +18507,7 @@ class="cmtt-10">mapsymbols.sty might contain:

    -
    +
    \NeedsTeXFormat{LaTeX2e}  
    \ProvidesPackage{mapsymbols}  
     some package or font loading stuff here to provide @@ -19127,27 +18523,27 @@ class="cmtt-10">mapsymbols.sty might contain:  
     \string< \glshex 26BD % football 0x26BD  
    }
    -

    and the supplementary file

    and the supplementary file mapsymbols.bib can provide the appropriate definitions for bib2gls:

    -
    +
    @preamble{"\glsxtrprovidecommand{\Harbour}{\char"2693}  
    \glsxtrprovidecommand{\Battlefield}{\char"2694}  
    \glsxtrprovidecommand{\Stadium}{\char"26BD}"}
    -

    Now both the preamble and rule block can be used in the resource set: +

    Now both the preamble and rule block can be used in the resource set:

    -
    +
    \usepackage{mapsymbols}% my custom package  
    \usepackage[record]{glossaries-extra}  
    \GlsXtrLoadResources[ @@ -19169,10 +18565,10 @@ class="cmtt-10">bib2gls:  
     }  
    ]
    -

    -

    The following commands are provided by

    +

    The following commands are provided by glossaries-extra-bib2gls. They should be + id="dx1-46037">. They should be separated by the rule separator characters ; (semi-colon) or , (comma) or @@ -19181,21 +18577,21 @@ class="cmtt-10">& (ampersand) or < (less than). See Java’s RuleBasedCollator documentation for details of the rule syntax. -

    For example, the following will place the mathematical Greek symbols (

    For example, the following will place the mathematical Greek symbols (\alpha, + id="dx1-46038">, \Alpha, , \beta, , \Beta etc) in a block before Latin characters: + id="dx1-46041"> etc) in a block before Latin characters:

    -
    +
    sort-rule={\glsxtrcontrolrules  
     ;\glsxtrspacerules  
     ;\glsxtrnonprintablerules @@ -19210,47 +18606,38 @@ sort-rule={\glsxtrcontrolrules  
     <\glsxtrLatinOslash  
    }
    -

    -


    \glsxtrcontrolrules 

    +


    \glsxtrcontrolrules

    -

    +

    These are control characters that are usually placed at the start of a rule in the ignored section. They typically won’t occur in any sort values, but if they do they should normally be ignored. -


    \glsxtrspacerules 


    \glsxtrspacerules

    -

    +

    These are space characters. They typically come after the control characters with the two blocks separated by a ; (semi-colon). -


    \glsxtrnonprintablerules 


    \glsxtrnonprintablerules

    -

    +

    These are non-printable characters (BOM, tabs, line feed and carriage return). They typically come after the spaces separated by a ; (semi-colon). These characters aren’t checked for by bib2gls when it determines whether or not to use the interpreter, so a TAB or newline character may end up in the sort value if it wasn’t interpreted. -


    \glsxtrcombiningdiacriticrules  \glsxtrcombiningdiacriticrules -

    -

    +


    \glsxtrcombiningdiacriticrules

    +

    These are combining diacritic marks which typically follow the space and non-printable blocks (separated by a semi-colon). This command is defined in terms of sub-block commands: @@ -19258,7 +18645,7 @@ of sub-block commands:

    -
    +
    \newcommand*{\glsxtrcombiningdiacriticrules}{%  
     \glsxtrcombiningdiacriticIrules\string;  
     \glsxtrcombiningdiacriticIIrules\string; @@ -19266,36 +18653,27 @@ of sub-block commands:  
     \glsxtrcombiningdiacriticIVrules  
    }
    -

    If you prefer, you can use the sub-blocks directly in your required ordered. -


    \glsxtrcombiningdiacriticIrules  \glsxtrcombiningdiacriticIrules -

    -

    +

    If you prefer, you can use the sub-blocks directly in your required ordered. +


    \glsxtrcombiningdiacriticIrules

    +

    This contains the combining diacritics: acute, grave, breve, circumflex, caron, ring, vertical line above, diaeresis (umlaut), double acute, tilde, dot above, combining macron. -


    \glsxtrcombiningdiacriticIIrules  \glsxtrcombiningdiacriticIIrules -

    -

    +


    \glsxtrcombiningdiacriticIIrules

    +

    This contains the combining diacritics: short solidus overlay, cedilla, ogonek, dot below, low line, overline, hook above, double vertical line above, double grave accent, candrabindu, inverted breve, turned comma above, comma above, reversed comma above, comma above right, grave accent below, acute accent below. -


    \glsxtrcombiningdiacriticIIIrules  \glsxtrcombiningdiacriticIIIrules -

    -

    +


    \glsxtrcombiningdiacriticIIIrules

    +

    This contains the combining diacritics: left tack below, right tack below, left angle above, horn, left half ring below, up tack below, down tack below, plus sign below, minus sign below, palatalized hook below, retroflex hook below, diaresis below, ring @@ -19307,36 +18685,29 @@ seagull below, x above, vertical tilde, double overline, Greek perispomeni, Gree dialytika tonos, Greek ypogegrammeni, double tilde, double inverted breve, Cyrillic titlo, Cyrillic palatalization, Cyrillic dasia pneumata, Cyrillic psili pneumata. -


    \glsxtrcombiningdiacriticIVrules  \glsxtrcombiningdiacriticIVrules -

    -

    +


    \glsxtrcombiningdiacriticIVrules

    +

    This contains the combining diacritics: left harpoon above, right harpoon above, long vertical line overlay, short vertical line overlay, anticlockwise arrow above, clockwise arrow above, left arrow above, right arrow above, ring overlay, clockwise ring overlay, - - - anticlockwise ring overlay, three dots above, four dots above, enclosing circle, enclosing square, enclosing diamond, enclosing circle backslash, left right arrow above. -


    \glsxtrhyphenrules 


    \glsxtrhyphenrules

    -

    + + + +

    This contains hyphens (including the minus sign 0x2212). This rule block typically comes after the diacritic rules separated by a comma. -


    \glsxtrgeneralpuncrules 


    \glsxtrgeneralpuncrules

    -

    +

    This contains punctuation characters. This rule block typically comes after the hyphen rules separated by a less than (<). As with the combining diacritics, this @@ -19346,20 +18717,18 @@ different order is required:

    -
    +
    \newcommand*{\glsxtrgeneralpuncrules}{%  
      \glsxtrgeneralpuncIrules  
      \string<\glsxtrcurrencyrules  
      \string<\glsxtrgeneralpuncIIrules  
    }
    -

    -


    \glsxtrgeneralpuncIrules 

    +


    \glsxtrgeneralpuncIrules

    -

    +

    This is the first punctuation sub-block containing: underscore, macron, comma, semi-colon, colon, exclamation mark, inverted exclamation mark, question mark, inverted question mark, solidus, full stop, acute accent, grave accent, @@ -19368,32 +18737,26 @@ straight double quote, left guillemet, right guillemet, left parenthesis, right parenthesis, left square bracket, right square bracket, left curly bracket, right curly bracket, section sign, pilcrow sign, copyright sign, registered sign, at sign. -


    \glsxtrcurrencyrules 


    \glsxtrcurrencyrules

    -

    +

    This sub-block contains some currency symbols: currency sign, Thai currency symbol baht, cent sign, colon sign, cruzeiro sign, dollar sign, dong sign, euro sign, French franc sign, lira sign, mill sign, naira sign, peseta sign, pound sign, rupee sign, new sheqel sign, won sign, yen sign. -


    \glsxtrgeneralpuncIIrules 


    \glsxtrgeneralpuncIIrules

    -

    +

    This sub-block contains some other punctuation symbols: asterisk, backslash, ampersand, hash sign, percent sign, plus sign, plus-minus sign, division sign, multiplication sign, less-than sign, equals sign, greater-than sign, not sign, vertical bar (pipe), broken bar, degree sign, micron sign. -


    \glsxtrdigitrules 


    \glsxtrdigitrules

    -

    +

    This rule block contains the Basic Latin digits (0, …, 9) and the subscript and superscript digits (0 0 etc) made equivalent to the corresponding Basic Lat The digit block typically comes after the punctuation rules separated by a less than (<). -


    \glsxtrBasicDigitrules 


    \glsxtrBasicDigitrules

    -

    +

    This rule block contains just the Basic Latin digits (0, …, 9). -


    \glsxtrSubScriptDigitrules 


    \glsxtrSubScriptDigitrules

    -

    +

    This rule block contains just the subscript digits (0 … 9). -


    \glsxtrSuperScriptDigitrules 


    \glsxtrSuperScriptDigitrules

    -

    +

    This rule block contains just the superscript digits (0 … 9). -


    \glsxtrfractionrules 


    \glsxtrfractionrules

    -

    +

    This rule block contains vulgar fraction characters. The digit block typically comes after the digit rules separated by a less than (<). -

    There are a number of Latin rule blocks. Some of these included extended +

    There are a number of Latin rule blocks. Some of these included extended characters or ligatures (such as ß or œ) but they don’t include accented characters. If you require a Latin rule block that includes accented characters, digraphs, trigraphs or other extended characters, then it’s best to provide similar @@ -19447,12 +18802,10 @@ class="cmtt-10">glossariesxtr-⟨tag.ldf file for the particular language or region. -


    \glsxtrGeneralLatinIrules 


    \glsxtrGeneralLatinIrules

    -

    +

    This is just the basic (non-extended) Latin alphabet with the superscript and subscript Latin letters (a a etc) treated as the equivalent basic Latin letter. don’t want the subscripts and superscripts included you can redefine \glsxtrLatinA etc to omit them.) -


    \glsxtrGeneralLatinIIrules 


    \glsxtrGeneralLatinIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’ and eszett (ß) treated as ‘ss’. -


    \glsxtrGeneralLatinIIIrules 


    \glsxtrGeneralLatinIIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’ and eszett (ß) treated as ‘sz’. -


    \glsxtrGeneralLatinIVrules 


    \glsxtrGeneralLatinIVrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’, ae-ligature (æ) is treated as ‘ae’, oe-ligature (œ) is treated as ‘oe’, eszett (ß) treated as ‘ss’ and thorn (þ) is treated as ‘th’. -


    \glsxtrGeneralLatinVrules 


    \glsxtrGeneralLatinVrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’, eszett (ß) treated as ‘ss’ and thorn (þ) treated as ‘th’. -


    \glsxtrGeneralLatinVIrules 


    \glsxtrGeneralLatinVIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes eth (Ð) between ‘D’ and ‘E’, eszett (ß) treated as ‘sz’ and thorn (þ) treated as ‘th’. -


    \glsxtrGeneralLatinVIIrules 


    \glsxtrGeneralLatinVIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but it includes ae-ligature (æ) between ‘A’ and ‘B’, eth (Ð) between ‘D’ and ‘E’, insular G (Ᵹ) instead of ‘G’, oe-ligature between ‘O’ and ‘P’, long s (ſ) equivalent to ‘s’, thorn (þ) between ‘T’ and ‘U’ and wynn (Ƿ) instead of W. -


    \glsxtrGeneralLatinVIIIrules 


    \glsxtrGeneralLatinVIIIrules

    -

    +

    This is like \glsxtrGeneralLatinIrules but ae-ligature (æ) is treated as ‘ae’, oe-ligature (œ) is treated as ‘oe’, eszett (ß) treated as ‘ss’, thorn (þ) is treated as ‘th’, Ø is treated as ‘O’ and ‘Ł’ is treated as ‘L’. -


    \glsxtrLatinA 


    \glsxtrLatinA

    -

    +

    A mini-rule that just covers ‘A’ but includes the sub- and superscript A. -


    \glsxtrLatinE 


    \glsxtrLatinE

    -

    +

    A mini-rule that just covers ‘E’ but includes the subscript E. -


    \glsxtrLatinH 


    \glsxtrLatinH

    -

    +

    A mini-rule that just covers ‘H’ but includes the subscript H. -


    \glsxtrLatinK 


    \glsxtrLatinK

    -

    +

    A mini-rule that just covers ‘K’ but includes the subscript K. -


    \glsxtrLatinI 


    \glsxtrLatinI

    -

    +

    A mini-rule that just covers ‘I’ but includes the superscript I. -


    \glsxtrLatinL 


    \glsxtrLatinL

    -

    +

    A mini-rule that just covers ‘L’ but includes the subscript L. -


    \glsxtrLatinM 


    \glsxtrLatinM

    -

    +

    A mini-rule that just covers ‘M’ but includes the subscript M. -


    \glsxtrLatinN 


    \glsxtrLatinN

    -

    +

    A mini-rule that just covers ‘N’ but includes the sub- and superscript N. -


    \glsxtrLatinO 


    \glsxtrLatinO

    -

    +

    A mini-rule that just covers ‘O’ but includes the sub- and superscript O. -


    \glsxtrLatinP 


    \glsxtrLatinP

    -

    +

    A mini-rule that just covers ‘P’ but includes the subscript P. -


    \glsxtrLatinS 


    \glsxtrLatinS

    -

    +

    A mini-rule that just covers ‘S’ but includes the subscript S. -


    \glsxtrLatinT 


    \glsxtrLatinT

    -

    +

    A mini-rule that just covers ‘T’ but includes the subscript T. -


    \glsxtrLatinX 


    \glsxtrLatinX

    -

    +

    A mini-rule that just covers ‘X’ but includes the subscript X. -


    \glsxtrLatinEszettSs 


    \glsxtrLatinEszettSs

    -

    +

    A mini-rule that just covers eszett (ß) and makes long s (ſ) followed by short ‘s’ equivalent to ‘ß’. (This is used in the above blocks that treat ‘ß’ as ‘ss’.) -


    \glsxtrLatinEszettSz 


    \glsxtrLatinEszettSz

    -

    +

    A mini-rule that just covers eszett (ß) and makes long s (ſ) followed by ‘z’ equivalent to ‘ß’. (This is used in the above blocks that treat ‘ß’ as ‘sz’.) -


    \glsxtrLatinEth 


    \glsxtrLatinEth

    -

    +

    A mini-rule for eth (Ð) so you don’t need to remember the Unicode values. -


    \glsxtrLatinThorn 


    \glsxtrLatinThorn

    -

    +

    A mini-rule for thorn (þ) so you don’t need to remember the Unicode values. -


    \glsxtrLatinAELigature 


    \glsxtrLatinAELigature

    -

    +

    A mini-rule for ae-ligature (æ) so you don’t need to remember the Unicode values. -


    \glsxtrLatinOELigature 


    \glsxtrLatinOELigature

    -

    +

    A mini-rule for oe-ligature (œ) so you don’t need to remember the Unicode values. -


    \glsxtrLatinOslash 


    \glsxtrLatinOslash

    -

    +

    A mini-rule for ‘Ø’ so you don’t need to remember the Unicode values. -


    \glsxtrLatinLslash 


    \glsxtrLatinLslash

    -

    +

    A mini-rule for ‘Ł’ so you don’t need to remember the Unicode values. -


    \glsxtrLatinWynn 


    \glsxtrLatinWynn

    -

    +

    A mini-rule for wynn (Ƿ) so you don’t need to remember the Unicode values. -


    \glsxtrLatinInsularG 


    \glsxtrLatinInsularG

    -

    +

    A mini-rule for insular G (Ᵹ) so you don’t need to remember the Unicode values. -


    \glsxtrLatinSchwa 


    \glsxtrLatinSchwa

    -

    +

    A mini-rule that just covers schwa (Ə) but includes the subscript schwa. (Not used in any of the provided Latin rule blocks described above.) -


    \glsxtrLatinAA 


    \glsxtrLatinAA

    -

    +

    A mini-rule for ‘Å’ so you don’t need to remember the Unicode values. (Not used in any of the provided Latin rule blocks described above.) -


    \glsxtrMathGreekIrules 


    \glsxtrMathGreekIrules

    -

    +

    A rule block for mathematical Greek (\alpha, , \beta etc) and upright Greek + id="dx1-46096"> etc) and upright Greek (\upalpha, etc, from the , etc, from the upgreek package) characters that includes digamma + id="dx1-46098"> package) characters that includes digamma (\digamma and and \Digamma) between epsilon and zeta. The upright and italic versions + id="dx1-46100">) between epsilon and zeta. The upright and italic versions are gathered together into the same letter group. -


    \glsxtrMathGreekIIrules 


    \glsxtrMathGreekIIrules

    -

    +

    As \glsxtrMathGreekIrules but doesn’t include digamma. -


    \glsxtrMathUpGreekIrules 


    \glsxtrMathUpGreekIrules

    -

    +

    A rule block for upright Greek (\upalpha, etc, from the , etc, from the upgreek package) + id="dx1-46104"> package) characters that includes digamma (\digamma and and \Digamma) between epsilon and + id="dx1-46106">) between epsilon and zeta. -


    \glsxtrMathUpGreekIIrules 


    \glsxtrMathUpGreekIIrules

    -

    +

    A rule block for upright Greek (\upalpha, etc, from the , etc, from the upgreek package) that + id="dx1-46109"> package) that doesn’t include digamma. -


    \glsxtrMathItalicGreekIrules 


    \glsxtrMathItalicGreekIrules

    -

    +

    A rule block for mathematical Greek (\alpha, , \Alpha, etc) characters that includes + id="dx1-46112">, etc) characters that includes digamma (\diagamma and and \Digamma) between epsilon and zeta. Note that even + id="dx1-46114">) between epsilon and zeta. Note that even though the upper case \Delta etc are actually rendered upright by LATEX, bib2gls’s interpreter treats them as italic to help keep them close to the lower case versions. -


    \glsxtrMathItalicGreekIIrules 


    \glsxtrMathItalicGreekIIrules

    -

    +

    A rule block for mathematical Greek (\alpha, , \Alpha, etc) characters that doesn’t + id="dx1-46118">, etc) characters that doesn’t include digamma. -


    \glsxtrMathItalicUpperGreekIrules  \glsxtrMathItalicUpperGreekIrules -

    -

    +


    \glsxtrMathItalicUpperGreekIrules

    +

    A rule block for upper case mathematical Greek (\Alpha, , \Beta, etc) characters that + id="dx1-46121">, etc) characters that includes digamma (\Digamma) between epsilon and zeta. -


    \glsxtrMathItalicUpperGreekIIrules  \glsxtrMathItalicUpperGreekIIrules -

    -

    + id="dx1-46122">) between epsilon and zeta. +


    \glsxtrMathItalicUpperGreekIIrules

    +

    A rule block for upper case mathematical Greek (\Alpha, , \Beta, etc) characters that + id="dx1-46125">, etc) characters that doesn’t include digamma. -


    \glsxtrMathItalicLowerGreekIrules  \glsxtrMathItalicLowerGreekIrules -

    -

    +


    \glsxtrMathItalicLowerGreekIrules

    +

    A rule block for lower case mathematical Greek (\alpha, , \beta, etc) characters that + id="dx1-46128">, etc) characters that includes digamma (\digamma) between epsilon and zeta. -


    \glsxtrMathItalicLowerGreekIIrules  \glsxtrMathItalicLowerGreekIIrules -

    -

    + id="dx1-46129">) between epsilon and zeta. +


    \glsxtrMathItalicLowerGreekIIrules

    +

    A rule block for lower case mathematical Greek (\alpha, , \beta, etc) characters that + id="dx1-46132">, etc) characters that doesn’t include digamma. -

    Additionally, there are commands in the form

    Additionally, there are commands in the form \glsxtrUpAlpha, \glsxtrUpBeta etc and \glsxtrMathItalicBeta etc that just cover the upper and lower case forms of a special Greek character (\Upalpha, \upalpha etc - - - and \Alpha, \alpha etc) as well as the following: -


    \glsxtrMathItalicPartial 


    \glsxtrMathItalicPartial

    -

    +

    The partial derivative symbol (). -


    \glsxtrMathItalicNabla 


    \glsxtrMathItalicNabla

    -

    +

    The nabla symbol (). -

    +

    -

    Top

    9.4 Supplementary Commands

    -

    These commands are provided by

    These commands are provided by glossaries-extra for use with bib2gls. -

    The information provided with

    The information provided with \GlsXtrLoadResources is written to the .aux file using

    @@ -19926,15 +19187,13 @@ class="cmtt-10">}
    where ⟨information⟩ is the information to pass to bib2gls. The command in the second argument -


    \glsxtrresourceinit 


    \glsxtrresourceinit

    -

    +

    may be used to temporarily redefine commands before the information is written to the file. This does nothing by default, but may be redefined to allow the use of short commands for convenience. For example, with: @@ -19942,40 +19201,38 @@ commands for convenience. For example, with:

    -
    +
    \renewcommand{\glsxtrresourceinit}{\let\u\glshex}
    -

    you can just use, for example,

    you can just use, for example, \u E6 instead of \string\uE6 in the custom rule. This redefinition of \u is scoped so its original definition is restored after the write operation. -

    If you have multiple resource commands and you want a default set of options you +

    If you have multiple resource commands and you want a default set of options you can supply them in the definition of: -


    \GlsXtrDefaultResourceOptions 


    \GlsXtrDefaultResourceOptions

    -

    +

    For example:

    -
    +
    \renewcommand{\GlsXtrDefaultResourceOptions}{selection=all}
    -

    This should be done before the resource commands. -

    It’s possible to specify label prefixes. For example, modifying the earlier +

    This should be done before the resource commands. +

    It’s possible to specify label prefixes. For example, modifying the earlier example:

    -
    +
    \documentclass{article}  
    \usepackage[record,style=indexgroup]{glossaries-extra}  
    \setabbreviationstyle{long-short-desc} @@ -19996,24 +19253,22 @@ example:  
    \printunsrtglossaries  
    \end{document}
    -

    If you do something like this, you may find it more convenient to define custom +

    If you do something like this, you may find it more convenient to define custom commands that set the prefix. For example:

    -
    +
    \newcommand*{\sym}[2][]{\gls[#1]{sym.#2}}
    -

    The problem with this is that the custom command

    The problem with this is that the custom command \sym doesn’t allow for modifiers (such as \gls* or \gls+). Instead you can use: -


    \glsxtrnewgls 


    \glsxtrnewgls[default options]{prefix}{cs}

    -

    +

    which defines the command ⟨cs⟩ that behaves like

    @@ -20046,136 +19301,123 @@ class="cmtt-10">] -
    +
    \glsxtrnewgls{sym.}{\sym}
    -

    or (to default to no hyperlinks) +

    or (to default to no hyperlinks)

    -
    +
    \glsxtrnewgls[hyper=false]{sym.}{\sym}
    -

    now you can use

    now you can use \sym+{M} to behave like \gls+{sym.M}. -

    If you also want the plural and first letter upper case versions you can +

    If you also want the plural and first letter upper case versions you can use -


    \glsxtrnewglslike 


    \glsxtrnewglslike[default options]{prefix}{\gls-like cs} {\gls-like cs}{\glspl-like cs}{\Gls-like cs}{\Glspl-like cs} -

    -

    +class="cmtt-10">}


    +

    For example:

    -
    +
    \glsxtrnewglslike[hyper=false]{idx.}{\idx}{\idxpl}{\Idx}{\Idxpl}
    -

    For the all caps versions: -


    \glsxtrnewGLSlike 

    For the all caps versions: +


    \glsxtrnewGLSlike[default options]{prefix}{\GLS-like cs} {\GLS-like cs}{\GLSpl-like cs}

    -

    +

    For example:

    -
    +
    \glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl}
    -

    -

    There’s an analogous command for

    +

    There’s an analogous command for \rgls: -


    \glsxtrnewrgls 


    \glsxtrnewrgls[default options]{prefix}{cs} -

    -

    +class="cmtt-10">}


    +

    and for \rgls, \rglspl, \rGls and \rGlspl: -


    \glsxtrnewrglslike 


    \glsxtrnewrglslike[default options]{prefix}{\rgls-like cs} {\rgls-like cs}{\rglspl-like cs}{\rGls-like cs}{\rGlspl-like cs} -

    -

    +class="cmtt-10">}


    +

    and for the all caps: -


    \glsxtrnewrGLSlike 


    \glsxtrnewrGLSlike[default options]{prefix}{\rGLS-like cs} {\rGLS-like cs}{\rGLSpl-like cs}

    -

    -

    If you provide your own custom command with just

    +

    If you provide your own custom command with just \newcommand that has syntax that starts with [options]{label}, then you can notify bib2gls using: -


    \glsxtridentifyglslike 


    \glsxtridentifyglslike{prefix}{command} -

    -

    +class="cmtt-10">}


    +

    This writes information to the .aux file so that bib2gls can search for the given command when looking for dependencies. -

    Another possibility is to set up known label prefixes, with each one identified +

    Another possibility is to set up known label prefixes, with each one identified by: -


    \glsxtraddlabelprefix 


    \glsxtraddlabelprefix{prefix}

    -

    +

    These should be listed in order of precedence. Since no entries are defined on the first LATEX run, the final prefix should be the fallback. You can prepend a prefix to the list using: -


    \glsxtrprependlabelprefix 


    \glsxtrprependlabelprefix{prefix} -

    -

    +class="cmtt-10">}


    +

    which gives it the highest order of precedence. -

    The ⟨

    The ⟨prefix⟩ argument may be empty. You can clear the list with: -


    \glsxtrclearlabelprefixes 


    \glsxtrclearlabelprefixes

    -

    -

    You can test if a prefix is already in the list with: - - - -


    \glsxtrifinlabelprefixlist 

    +

    You can test if a prefix is already in the list with: +


    \glsxtrifinlabelprefixlist{prefix}{true} -{}{false}

    -

    +

    In general it’s best to avoid adding multiple instances of the same prefix, so you can check with this command before adding a prefix to the list. However, it can be useful + + + to repeat a prefix at the end of the list so that it can be used as a fallback for entries that haven’t yet been defined. -

    With the list of possible prefixes set up (including an empty prefix if necessary), +

    With the list of possible prefixes set up (including an empty prefix if necessary), you can use: -


    \dgls 


    \dgls[options]{label}[insert]

    -

    +

    which behaves like

    prefix⟩ is the first prefix in the list such that class="cmti-10">prefix⟩⟨label⟩ matches a defined entry (or the last entry in the prefix list if none match). -

    There are also analogous commands for the plural and case-changing +

    There are also analogous commands for the plural and case-changing versions: -


    \dglspl 


    \dglspl[options]{label}[insert]

    -

    +

    (uses \glspl), -


    \dGls 


    \dGls[options]{label}[insert]

    -

    +

    (uses \Gls), -


    \dGlspl 


    \dGlspl[options]{label}[insert]

    -

    +

    (uses \Glspl), -


    \dGLS 


    \dGLS[options]{label}[insert]

    -

    +

    (uses \GLS), -


    \dGLSpl 


    \dGLSpl[options]{label}[insert]

    -

    +

    (uses \GLSpl), -


    \dglslink 


    \dglslink[options]{label}[insert]

    -

    +

    (uses \glslink), -


    \dglsdisp 


    \dglsdisp[options]{label}[insert]

    -

    +

    (uses \glsdisp). -

    These commands are essentially provided for a mixture of single and dual entries. +

    These commands are essentially provided for a mixture of single and dual entries. Suppose the file entries.bib contains:

    -
    +
    @index{duck}  
    @dualindexabbreviation{svm,  
      short={SVM}, @@ -20409,12 +19621,12 @@ class="cmtt-10">entries.bib contains:  
        diameter}  
    }
    -

    and suppose the document code is: +

    and suppose the document code is:

    -
    +
    \documentclass{article}  
    \usepackage{hyperref}  
    \usepackage[record,abbreviations,symbols]{glossaries-extra} @@ -20429,7 +19641,7 @@ class="cmtt-10">entries.bib contains:  
    \printunsrtglossaries  
    \end{document}
    -

    This uses the default empty primary prefix and

    This uses the default empty primary prefix and dual. for the dual prefix, so \gls{svm} is referencing the primary entry, which is (essentially) an \gls{pi}, which references the primary @index entry rather than the symbol. -

    What’s really needed is: +

    What’s really needed is:

    -
    +
    \gls{duck}, \gls{dual.svm}, \gls{dual.pi}.
    -

    or with +

    or with

    -
    +
    \GlsXtrLoadResources[src=entries,  
     label-prefix={idx.},  
     dual-prefix={}  
    ]
    -

    then only the entries without a dual need a prefix: +

    then only the entries without a dual need a prefix:

    -
    +
    \gls{idx.duck}, \gls{svm}, \gls{pi}.
    -

    Using

    Using \glsxtrnewglslike, as earlier, this can be simplified to:

    -
    +
    \idx{duck}, \gls{svm}, \gls{pi}.
    -

    but this requires remembering which terms have duals. -

    An alternative is to use

    but this requires remembering which terms have duals. +

    An alternative is to use \dgls instead:

    -
    +
    \documentclass{article}  
    \usepackage{hyperref}  
    \usepackage[record,abbreviations,symbols]{glossaries-extra} @@ -20500,7 +19712,7 @@ class="cmtt-10">\dgls instead:  
    \printunsrtglossaries  
    \end{document}
    -

    On the first LAT

    On the first LATEX call (when the .glstex file doesn’t exist), neither dual.svm) entry to be selected. The location will be adde primary entry’s location list, unless overridden by resource options, such as combine-dual-locations. -

    Once

    Once bib2gls has been run and the .glstex file exists, then \dgls{svm} now behaves like \gls{dual.svm}, which follows the abbreviation style and hyperlinks to the list of abbreviations. -

    Similarly for the index-symbol combination

    Similarly for the index-symbol combination dual.pi and pi. In the case of \dgls{duck} always behaves like \gls{duck}. -

    If you haven’t used

    If you haven’t used combine-dual-locations an extra bib2gls+LATEX run may be required to correct the location lists. -

    If you change the label prefixes, remember to update the corresponding +

    If you change the label prefixes, remember to update the corresponding \glsxtraddlabelprefix{prefix}. If no prefixes have been added to the list (or if the list is cleared), just an empty prefix is assumed. -

    As from version 1.8,

    As from version 1.8, bib2gls provides hooks that identify the label prefixes in the @@ -20568,19 +19780,19 @@ class="cmtt-10">.glstex file:

    \bibglstertiaryprefixlabel{prefix}
    \bibglsdualprefixlabel{prefix}
    \bibglsprimaryprefixlabel{prefix} @@ -20590,12 +19802,12 @@ loaded to set up the prefix list. For example: -
    +
    \newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}}  
    \newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}  
    \GlsXtrLoadResources[src=entries]
    -

    Remember that this will only have an effect once the

    Remember that this will only have an effect once the .glstex file has been created. The prefix list will be empty on the first run (which is treated as a single empty prefix). If this isn’t a suitable fallback, it may be necessary to add one after all the @@ -20604,32 +19816,32 @@ resource commands:

    -
    +
    \newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}}  
    \newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}  
    \GlsXtrLoadResources[src=entries,label-prefix={idx.}]  
    \glsxtraddlabelprefix{idx.}
    -

    Although this rather defeats the purpose of using the hooks as you still have to keep +

    Although this rather defeats the purpose of using the hooks as you still have to keep track of the fallback prefix. -

    +

    -

    Top

    9.5 Record Counting

    -

    As from version 1.1 of

    As from version 1.1 of bib2gls, you can save the total record count for each entry by invoking bib2gls with the --record-count or --record-count-unit switches. These options will ensure that when each entry is written to the .glstex file bib2gls will additionally set the following internal fields for that entry:

      @@ -20640,7 +19852,7 @@ class="cmtt-10">recordcount: set to the total number of records found for class="cmtt-10">recordcount.⟨counter⟩: set to the total number of records found for the entry for the given counter.
    -

    If

    If --record-count-unit is used then additionally:

    • counter.location⟩: set to the total number of records found for the entry for the given counter with the given location.
    -

    Only use the unit counting option if the locations don’t contain any special characters. If +

    Only use the unit counting option if the locations don’t contain any special characters. If you really need it with locations that may contain formatting commands, then you can try redefining: -


    \glsxtrdetoklocation 


    \glsxtrdetoklocation{location}

    -

    +

    so that it detokenizes ⟨location⟩ but take care when using \GlsXtrLocationRecordCount with commands like \thepage as they can end up becoming detokenized too early. -

    Note that the record count includes locations that

    Note that the record count includes locations that bib2gls discards, such as ignored records, duplicates and partial duplicates. It doesn’t include cross-reference records. For example, if section counter (stored in the recordcount.section field) is 1. -

    With the unit counting on as well, the field

    With the unit counting on as well, the field recordcount.page.1 is set to 2, recordcount.page.2 is set to 1, recordcount.page.3 is set to 4 and recordcount.section.3 is set to 1. -

    You can access these fields using the following commands which will expand to +

    You can access these fields using the following commands which will expand to the field value if set or to 0 if unset: -


    \GlsXtrTotalRecordCount 


    \GlsXtrTotalRecordCount{label}

    -

    +

    This expands to the total record count for the entry given by ⟨label⟩.

    -
    +
    \GlsXtrTotalRecordCount{bird}
    -

    expands to 8. -


    \GlsXtrRecordCount 

    expands to 8. +


    \GlsXtrRecordCount{label}{counter}

    -

    +

    This expands to the counter total for the entry given by ⟨label⟩ where ⟨counter⟩ is the @@ -20731,55 +19937,49 @@ counter name. For example:

    -
    +
    \GlsXtrRecordCount{bird}{page}
    -

    expands to 7 and +

    expands to 7 and

    -
    +
    \GlsXtrRecordCount{bird}{section}
    -

    expands to 1. -


    \GlsXtrLocationRecordCount 

    expands to 1. +


    \GlsXtrLocationRecordCount{label}{counter} -{}{location}

    -

    +

    This expands to the total for the given location. For example

    -
    +
    \GlsXtrLocationRecordCount{bird}{page}{3}
    -

    expands to 4. Be careful about using

    expands to 4. Be careful about using \thepage in the ⟨location⟩ part. Remember that due to TEX’s asynchronous output routine, \thepage may not be correct. -

    There are commands analogous to the entry counting commands like

    There are commands analogous to the entry counting commands like \cgls and \cglsformat that are triggered by the record count. These are listed below. -


    \rgls 


    \rglsmodifier[label}[insert]

    -

    -


    \rglspl 

    +


    \rglsplmodifier[label}[insert]

    -

    -


    \rGls 

    +


    \rGlsmodifier[label}[insert]

    -

    -


    \rGlspl 

    +


    \rGlsplmodifier[label}[insert]

    -

    -


    \rGLS 

    +


    \rGLSmodifier[label}[insert]

    -

    -


    \rGLSpl 

    +


    \rGLSplmodifier[label}[insert]

    -

    +

    These commands check the recordcount attribute which, if set, should be a number. + id="dx1-48015"> attribute which, if set, should be a number. For example:

    -
    +
    \glssetcategoryattribute{abbreviation}{recordcount}{1}
    -

    For convenience, you can use -


    \GlsXtrSetRecordCountAttribute 

    For convenience, you can use +


    \GlsXtrSetRecordCountAttribute{category -listcategory list}{n}

    -

    +

    to set the recordcount attribute to ⟨ attribute to ⟨n⟩ for all the categories listed in ⟨category list⟩. -

    The

    The \rgls-like commands use -


    \glsxtrifrecordtrigger 


    \glsxtrifrecordtrigger{label}{trigger code} -{}{normal}

    -

    +

    to determine whether the \rgls-like command should behave like its \gls counterpart (⟨normal⟩) or whether it should instead use ⟨trigger code⟩. -

    This command checks if the

    This command checks if the recordcount attribute is set. If not is just does + id="dx1-48019"> attribute is set. If not is just does ⟨normal⟩, otherwise it tests if -


    \glsxtrrecordtriggervalue 


    \glsxtrrecordtriggervalue{label}

    -

    +

    is greater than the value given in the recordcount attribute for that entry’s category. + id="dx1-48021"> attribute for that entry’s category. If true, this does ⟨normal⟩ otherwise it does ⟨trigger code⟩. The default definition of the @@ -20941,104 +20121,90 @@ trigger value command is:

    -
    +
    \newcommand*{\glsxtrrecordtriggervalue}[1]{%  
     \GlsXtrTotalRecordCount{#1}%  
    }
    -

    The ⟨

    The ⟨trigger code⟩ part writes a record with the format set to set to glstriggerrecordformat (which bib2gls v1.1+ recognises as a special type of ignored location format) and does ⟨trigger format⟩. Then it unsets the first use flag. Note that it doesn’t implement the post-link hook. This ensures that the record count is correct on the next run. -

    The ⟨

    The ⟨trigger format⟩ depends on the \rgls-like command used and will be one of the following: -


    \rglsformat 


    \rglsformat{label}{insert}

    -

    -


    \rglsplformat 

    +


    \rglsplformat{label}{insert}

    -

    -


    \rGlsformat 

    +


    \rGlsformat{label}{insert}

    -

    -


    \rGlsplformat 

    +


    \rGlsplformat{label}{insert}

    -

    -


    \rGLSformat 

    +


    \rGLSformat{label}{insert}

    -

    -


    \rGLSplformat 

    +


    \rGLSplformat{label}{insert}

    -

    +

    These all behave much like their \cglsformat counterparts. If the entry’s regular + id="dx1-48031"> attribute is set or if the entry doesn’t have a long form, the first or first plural is used, otherwise the long or long plural form is used. -

    You can use -


    \glsxtrenablerecordcount 

    You can use +


    \glsxtrenablerecordcount

    -

    +

    to redefine \gls, \glspl, \rGls, class="cmtt-10">\rGlspl, \rGLS, \rGLSpl, respectively, for convenience. -

    If you don’t want the entries that use ⟨

    If you don’t want the entries that use ⟨trigger code⟩ to appear in the glossary, you need to use the resource option trigger-type to assign them to another glossary. @@ -21062,7 +20228,7 @@ For example:

    -
    +
    \documentclass{article}  
    \usepackage[record]{glossaries-extra}  
    \newignoredglossary{ignored} @@ -21079,7 +20245,7 @@ For example:  
    \printunsrtglossaries  
    \end{document}
    -

    In the above,

    In the above, stc and upa both only have one record, so they are assigned to the main one.

    -

    -

    +

    Top

    10. Miscellaneous New Commands

    -

    The

    The glossaries package provides \glsrefentry entry to cross-reference entries + id="dx1-49001"> entry to cross-reference entries when used with the entrycounter or or subentrycounter options. The options. The glossaries-extra package provides a supplementary command -


    \glsxtrpageref 


    \glsxtrpageref{label}

    -

    +

    that works in the same way except that it uses \pageref instead of instead of \ref. -

    You can copy an entry to another glossary using -


    \glsxtrcopytoglossary  . +

    You can copy an entry to another glossary using +


    \glsxtrcopytoglossary{entry-label}{glossary-type} -

    -

    +class="cmtt-10">}


    +

    This appends ⟨entry-label⟩ to the end of the internal list for the glossary given by ⟨glossary-type⟩. Be careful if you use the hyperref package as this may cause duplicate + id="dx1-49008"> package as this may cause duplicate hypertargets. You will need to change \glolinkprefix to another value or disable hyperlinks when you display the duplicate. Alternatively, use the new target key to + id="dx1-49009"> key to switch off the targets:

    -
    +
    \printunsrtglossary[target=false]
    -

    -

    The

    +

    The glossaries package allows you to set preamble code for a given glossary type using \setglossarypreamble. This overrides any previous setting. With glossaries-extra (as from v1.12) you can instead append to the preamble using -


    \apptoglossarypreamble 


    \apptoglossarypreamble[type]{code}

    -

    +

    or prepend using -


    \pretoglossarypreamble 


    \pretoglossarypreamble[type]{code}

    -

    +

    -

    Top

    10.1 Entry Fields

    -

    A field may now be used to store the name of a text-block command that takes a +

    A field may now be used to store the name of a text-block command that takes a single argument. The field is given by -


    \GlsXtrFmtField 


    \GlsXtrFmtField

    -

    +

    The default value is useri. Note that the value must be the control sequence name without the initial backslash. -

    For example: +

    For example:

    -
    +
    \newcommand*{\mtx}[1]{\boldsymbol{#1}}  
    \newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}}  
    \newglossaryentry{matrix}{% @@ -21225,13 +20380,11 @@ class="cmti-10">without the initial backslash.  
       $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$}  
    }
    -

    -

    There are two commands provided that allow you to apply the command to an +

    +

    There are two commands provided that allow you to apply the command to an argument: -


    \glsxtrfmt 


    \glsxtrfmt[options]{label}{text}

    -

    +

    This effectively does

    cs name⟩ is the control sequence name supplied in must be defined to take a single required argument. Although it effectively acts like \glslink it misses out the post-link hook. -

    The default ⟨

    The default ⟨default-options⟩ are given by -


    \GlsXtrFmtDefaultOptions 


    \GlsXtrFmtDefaultOptions

    -

    +

    This is defined as noindex but may be redefined as appropriate. Note that the replacement text of \GlsXtrFmtDefaultOptions is prepended to the optional argument of \glslink. -

    As from version 1.23, there’s also a starred version of this command that has a +

    As from version 1.23, there’s also a starred version of this command that has a final optional argument: -


    \glsxtrfmt* 


    \glsxtrfmt*[options]{text}[insert]

    -

    +

    Both the starred and unstarred versions use: -


    \glsxtrfmtdisplay 


    \glsxtrfmtdisplay{cs name}{text}{insert} -

    -

    +class="cmtt-10">}


    +

    within the link text. In the case of the unstarred version ⟨insert⟩ will be empty. It will also be empty if the final option argument is missing from the starred form. If the @@ -21324,7 +20470,7 @@ warning if undefaction=warn). There won’t be a warning or error if the entry is + id="dx1-50006">). There won’t be a warning or error if the entry is defined by the given field is missing. In either case, (the entry is undefined or the field is missing) ⟨cs name⟩ will be -

    +
    \newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3}
    -

    which puts ⟨

    which puts ⟨text⟩ inside the argument of the control sequence and ⟨insert⟩ outside it (but it will still be inside the link text). -

    Remember that nested links cause a problem so avoid using commands like

    Remember that nested links cause a problem so avoid using commands like \gls or \glsxtrfmt within ⟨text⟩.
    -

    -

    For example: +

    +

    For example:

    -
    +
    \[  
      \glsxtrfmt{matrix}{A}  
      \glsxtrfmt{matrixinv}{A} @@ -21360,64 +20506,71 @@ class="cmti-10">text⟩.
     
      \glssymbol{identitymatrix}  
    \]
    -

    If the default options are set to

    If the default options are set to noindex then \glsxtrfmt won’t index, but will create a hyperlink (if hyperref has been loaded). This can be changed so that it also + id="dx1-50007"> has been loaded). This can be changed so that it also suppresses the hyperlink:

    -
    +
    \renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex}
    -

    -

    Note that

    +

    Note that \glsxtrfmt won’t work with PDF bookmarks. Instead you can use -


    \glsxtrentryfmt 


    \glsxtrentryfmt{label}{text}

    -

    -This uses \texorpdfstring and will simply expand to ⟨text⟩ within the PDF -bookmarks, but in the document it will do ⟨

    +If hyperref is used, this uses \texorpdfstring and will expand to +


    \glsxtrpdfentryfmt{label}{text}

    +

    +within the PDF bookmarks, but in the document it will do ⟨cs{text} if a control sequence name has -been provided or just ⟨text⟩ otherwise. -

    The } if a control +sequence name has been provided or just ⟨text⟩ otherwise. The PDF bookmark version +simply does ⟨text⟩. It may be redefined, but remember that it needs to expand +fully. +

    The glossaries package provides \glsaddstoragekey to add new keys. This command will cause an error if the key has already been defined. The glossaries-extra package provides a supplementary command that will only define the key if it doesn’t already exist: -


    \glsxtrprovidestoragekey 


    \glsxtrprovidestoragekey{key}{default}{cs} -

    -

    +class="cmtt-10">}


    +

    If the key has already been defined, it will still provide the command given in the third argument ⟨cs⟩ (if it hasn’t already been defined). Unlike cs⟩ may be left empty if you’re happy to just use \glsfieldfetch to fetch the value of this new key. -

    You can test if a key has been provided with: -


    \glsxtrifkeydefined 

    You can test if a key has been provided with: +


    \glsxtrifkeydefined{key}{true}{false}

    -

    +

    This tests if ⟨key⟩ is available for use in the ⟨key⟩= list in the second argument of @@ -21447,22 +20598,20 @@ class="cmtt-10">\newglossaryentry (or the optional argument of commands l class="cmtt-10">\newabbreviation). The corresponding field may not have been set for any of the entries if no default was provided. -

    There are now commands provided to set individual fields. Note that +

    There are now commands provided to set individual fields. Note that these only change the specified field, not any related values. For example, changing the value of the text field won’t update the field won’t update the plural field. There are also + id="dx1-50014"> field. There are also some fields that should really only be set when entries are defined (such as the parent field). Unexpected results may occur if they are subsequently + id="dx1-50015"> field). Unexpected results may occur if they are subsequently changed. -


    \GlsXtrSetField 


    \GlsXtrSetField{label}{field}{value}

    -

    +

    Sets the field given by ⟨field⟩ to ⟨value⟩ for the entry given by ⟨\glsxtrusefield. Note that \glsxtrifkeydefined only + + + tests if a key has been defined for use with commands like \newglossaryentry. If a field without a corresponding key is assigned a value, the key remains undefined. This command is robust. - - - -

    \GlsXtrSetField uses -


    \glsxtrsetfieldifexists 


    \glsxtrsetfieldifexists{label}{field}{code} -

    -

    +class="cmtt-10">}


    +

    where ⟨label⟩ is the entry label and ⟨code⟩ is the assignment code. -

    This command just uses

    This command just uses \glsdoifexists{label}{undefaction=warn. You can redefine + id="dx1-50019">. You can redefine \glsxtrsetfieldifexists to simply do ⟨code⟩ if you want to skip the existence check. Alternatively you can instead use -


    \glsxtrdeffield 


    \glsxtrdeffield{label}{field}arguments{replacement -text}

    -

    +class="cmitt-10">replacement text⟩} +


    +

    This simply uses etoolbox’s ’s \csdef without any checks. This command isn’t robust. There is also a version that uses \protected@csedef instead:10.1 -


    \glsxtredeffield  +


    \glsxtredeffield{label}{field}arguments{replacement -text}

    -

    -


    \gGlsXtrSetField  replacement text} +

    +

    +


    \gGlsXtrSetField{label}{field}{value}

    -

    +

    As \GlsXtrSetField but globally. -


    \eGlsXtrSetField 


    \eGlsXtrSetField{label}{field}{value}

    -

    +

    As \GlsXtrSetField but uses protected expansion. -


    \xGlsXtrSetField 


    \xGlsXtrSetField{label}{field}{value}

    -

    +

    As \gGlsXtrSetField but uses protected expansion. -


    \GlsXtrLetField 


    \GlsXtrLetField{label}{field}{cs}

    -

    +

    Sets the field given by ⟨field⟩ to the replacement text of ⟨cs⟩ for the entry given by ⟨label⟩ (using \let). -


    \csGlsXtrLetField 


    \csGlsXtrLetField{label}{field}{cs name} -

    -

    +class="cmtt-10">}


    +

    As \GlsXtrLetField but the control sequence name is supplied instead. -


    \GlsXtrLetFieldToField 


    \GlsXtrLetFieldToField{label-1}{field-1} -{}{label-2}{field-2}

    -

    +class="cmtt-10">} +


    +

    Sets the field given by ⟨field-1⟩ for the entry given by ⟨label-1⟩ to the field given by @@ -21672,19 +20798,17 @@ class="cmti-10">code⟩} is still used, as for \GlsXtrSetField. -

    The

    The glossaries package provides \ifglshasfield to determine if a field has been + id="dx1-50030"> to determine if a field has been set. The glossaries-extra package provides a simpler version: - - - -


    \glsxtrifhasfield 


    \glsxtrifhasfield{field}{}{true}{false} -

    -

    +class="cmtt-10">}


    +

    (New to v1.19.) Note that in this case the ⟨field⟩ must be the internal field label (for @@ -21712,20 +20835,16 @@ class="cmti-10">true⟩ part is done otherwise it does ⟨false⟩. Within ⟨true⟩ you may use -


    \glscurrentfieldvalue 


    \glscurrentfieldvalue

    -

    +

    to access the field value. This command includes grouping which scopes the ⟨true⟩ and ⟨false⟩ parts. The starred version -


    \glsxtrifhasfield* 


    \glsxtrifhasfield*{field}{}{true}{false} -

    -

    +class="cmtt-10">}


    +

    omits the implicit grouping. -

    Be careful of keys that use

    Be careful of keys that use \relax as the default value (such as the symbol). Use + id="dx1-50034">). Use \ifglshassymbol instead.
    -

    -

    There is also a version that simply uses

    +

    There is also a version that simply uses \ifcsundef. It doesn’t save the field value, but can be used if you only need to check if the field is defined without accessing it: -


    \GlsXtrIfFieldUndef 


    \GlsXtrIfFieldUndef{field}{}{true}{false} -

    -

    -

    There’s a difference between an undefined field and an unset field. An undefined +class="cmtt-10">}

    +

    +

    There’s a difference between an undefined field and an unset field. An undefined field hasn’t been assigned any value (no associated internal control sequence has been defined). If a defined field has been defined to empty, then it’s considered unset. \GlsXtrIfFieldUndef for fields that can only be defined through commands like \GlsXtrSetField.
    -

    -

    You can test if a field value equals a string using -


    \GlsXtrIfFieldEqStr 

    +

    You can test if a field value equals a string using +


    \GlsXtrIfFieldEqStr{field}{}{text}{true} -{}{false}

    -

    +

    If the entry exists and has the given field set to the given text then this does ⟨true⟩ otherwise it does ⟨false⟩. This uses \glsxtrifhasfield to test if the field exists and - - - then compares the replacement text of \glscurrentfieldvalue with ⟨text⟩ using etoolbox’s ’s \ifdefstring. Version 1.39 introduced a starred form of this command, + + + which uses the starred form of \glsxtrifhasfield. -

    As from version 1.31, there’s a similar command: -


    \GlsXtrIfFieldEqXpStr 

    As from version 1.31, there’s a similar command: +


    \GlsXtrIfFieldEqXpStr{field}{label}{text} -{}{true}{false}

    -

    +

    This is like \GlsXtrIfFieldEqStr but first (protected) fully expands ⟨text⟩ (but not the field value). If you want to compare the (protected) full expansion of both the field value and ⟨text⟩ use: -


    \GlsXtrIfXpFieldEqXpStr 


    \GlsXtrIfXpFieldEqXpStr{field}{label}{text} -{}{true}{false}

    -

    +class="cmtt-10">} +


    +

    Again, version 1.39 introduced a starred form of these commands, which use the starred form of \glsxtrifhasfield. -

    As from v1.31, if a field represents a numeric (integer) value, you can use the +

    As from v1.42, you can test if the field value is contained in a comma-separated +list with: +


    \GlsXtrIfFieldValueInCsvList{label}{field}{list}{true}{false} +

    +

    +The unstarred version uses the unstarred form of \glsxtrifhasfield (which +adds grouping so ⟨true⟩ and ⟨false⟩ will be localised). The starred version uses +\glsxtrifhasfield*. If the field value (without expansion) is contained in ⟨list⟩ then +⟨true⟩ is done otherwise ⟨false⟩ is done. If the field hasn’t been set ⟨false⟩ is done. This +internally uses \DTLifinlist provided by datatool-base which performs +a one level expansion on ⟨list⟩. See the datatool documentation for further +details. +

    This command is intended for fields that contain a label. For example, to test if +the category is one of a set of labels: + + + +

    +
    +\GlsXtrIfFieldValueInCsvList{examplelabel}{category}% + 
     {abbreviation,acronym}% set of labels + 
     {true part}{false part} +
    +

    +

    As from v1.31, if a field represents a numeric (integer) value, you can use the following two numeric tests. If the field is set, it must expand to an integer. You may use \glscurrentfieldvalue within ⟨\glscurrentfieldvalue is set accordingly. As from version 1.39, these numeric tests have starred versions. The unstarred versions add implicit grouping. The starred versions don’t. -

    To test if the value is non-zero: -


    \GlsXtrIfFieldNonZero 

    To test if the value is non-zero: +


    \GlsXtrIfFieldNonZero{field}{label}{true} -{}{false}

    -

    +

    Alternatively, you can test if the field expands to a specific number using: -


    \GlsXtrIfFieldEqNum 


    \GlsXtrIfFieldEqNum{field}{}{n}{true} -{}{false}

    -

    +

    This does ⟨true⟩ if the field value equals ⟨n⟩ (using \ifnum for the comparison) otherwise it does ⟨false⟩. For a more general numeric comparison you can use: -


    \GlsXtrIfFieldCmpNum 


    \GlsXtrIfFieldCmpNum{field}{label}{comparison} -{}{n}{true}{false}

    -

    +class="cmtt-10">} +


    +

    where ⟨comparison⟩ is one of =, < or >. -

    The

    The glossaries package provides \glsfieldfetch which can be used to fetch the + id="dx1-50046"> which can be used to fetch the value of the given field and store it in a control sequence. The glossaries-extra package provides another way of accessing the field value: -


    \glsxtrusefield 


    \glsxtrusefield{entry-label}{field-label}

    -

    +

    This works in the same way as commands like \glsentrytext but the field label is specified in the first argument. Note that the ⟨field-label⟩ corresponds to the internal field tag, which isn’t always the same as the key name. See Table 4.1 of the glossaries + id="dx1-50048"> manual. No error occurs if the entry or field haven’t been defined. This command is - - - not robust. -

    There is also a version that converts the first letter to uppercase (analogous to +

    There is also a version that converts the first letter to uppercase (analogous to \Glsentrytext): -


    \Glsxtrusefield 


    \Glsxtrusefield{entry-label}{field-label}

    -

    +

    and, as from v1.37, a command that converts the entire value to upper case: -


    \GLSxtrusefield 


    \GLSxtrusefield{entry-label}{field-label}

    -

    -

    If you want to use a field to store a list that can be used as an

    +

    If you want to use a field to store a list that can be used as an etoolbox internal + id="dx1-50051"> internal list, you can use the following command that adds an item to the field using etoolbox’s ’s \listcsadd: -


    \glsxtrfieldlistadd 


    \glsxtrfieldlistadd{label}{field}{item} -

    -

    +class="cmtt-10">}


    +

    where ⟨label⟩ is the entry’s label, ⟨field⟩ is the entry’s field and ⟨\listgadd, \listeadd and \listxadd: -


    \glsxtrfieldlistgadd 


    \glsxtrfieldlistgadd{label}{field}{item} -

    -

    -


    \glsxtrfieldlisteadd  }

    +

    +


    \glsxtrfieldlisteadd{label}{field}{item} -

    -

    -


    \glsxtrfieldlistxadd  }

    +

    +


    \glsxtrfieldlistxadd{label}{field}{item} -

    -

    +class="cmtt-10">}


    +

    You can then iterate over the list using: -


    \glsxtrfielddolistloop 


    \glsxtrfielddolistloop{label}{field} -

    -

    +class="cmtt-10">}


    +

    or -


    \glsxtrfieldforlistloop 


    \glsxtrfieldforlistloop{label}{field} -{}{handler}

    -

    +

    that internally use \dolistcsloop and \forlistloop, respectively. -

    There are also commands that use \forlistloop, respectively. You can use +\listbreak to break out of the loop (see the etoolbox manual for further +details). +

    For fields that contain comma-separated lists use \glsxtrforcsvfield +instead. +

    New to v1.42: +


    \glsxtrfieldformatlist{label}{field}

    +

    +Like datatool-base’s \DTLformatlist, this iterates over an (etoolbox) internal list and +formats each item. Uses all the same helper commands as \DTLformatlist (the same +list handler macro is used). Unlike the datatool-base command, this command has no +starred version. Grouping is automatically applied. +

    For example, with bib2gls’s save-child-count resource option: + + + +

    +
    +\newcommand*{\listchildren}[1]{% + 
      \GlsXtrIfFieldNonZero{childcount}{#1}% + 
      {child count: \glscurrentfieldvalue; children: + 
       \let\DTLlistformatitem\glsfmtname + 
       \glsxtrfieldformatlist{#1}{childlist}% + 
      }% + 
      {no children}% + 
    } +
    +

    For fields that contain a comma-separated list use \glsxtrfieldformatcsvlist +instead. +

    There are also commands that use \ifinlistcs: -


    \glsxtrfieldifinlist 


    \glsxtrfieldifinlist{label}{}{item}{true} -{}{false}

    -

    +

    and \xifinlistcs -


    \glsxtrfieldxifinlist 


    \glsxtrfieldxifinlist{label}{field}{item} -{}{true}{false}

    - - - -

    -

    See the

    +

    See the etoolbox’s user manual for further details of these commands, in particular + id="dx1-50069">’s user manual for further details of these commands, in particular the limitations of \ifinlist. -

    If the field has a comma-separated list value instead, you can iterate over it +

    If the field has a comma-separated list value instead, you can iterate over it using: -


    \glsxtrforcsvfield 


    \glsxtrforcsvfield{label}{field}{handler} -

    -

    +class="cmtt-10">}


    +

    where again ⟨handler⟩ is a control sequence that takes a single argument. Unlike the etoolbox loops, this doesn’t ignore empty elements nor does it discard leading / + id="dx1-50071"> loops, this doesn’t ignore empty elements nor does it discard leading / trailing spaces. Internally it uses \@for (modified by xfor which is automatically + id="dx1-50072"> which is automatically loaded by glossaries). The ). The xfor package modifies the behaviour of package modifies the behaviour of \@for to allow the loop to be broken prematurely using \@endfortrue. The \glsxtrforcsvfield command locally defines a user level command: -


    \glsxtrendfor 


    \glsxtrendfor

    -

    +

    which is just a synonym for \@endfortrue. -

    The loop is performed within the true part of

    The loop is performed within the true part of \glsxtrifhasfield so scoping is automatically applied. -

    As from version 1.32, if the field given by -


    \GlsXtrForeignTextField 

    New to v1.42: +


    \glsxtrfieldformatcsvlist{label}{field}

    +

    +Like \glsxtrfieldformatcsvlist but for fields that contain comma-separated +lists. +

    As from version 1.32, if the field given by +


    \GlsXtrForeignTextField

    -

    + + + +

    (which defaults to userii) contains a locale tag, then -


    \GlsXtrForeignText 


    \GlsXtrForeignText{entry label}{text}

    -

    +

    can be used to encapsulate ⟨text⟩ in \foreignlanguage{} where ⟨dialect⟩ is obtained from the locale tag through tracklang’s ’s \GetTrackedDialectFromLanguageTag + id="dx1-50080"> command. You need at least tracklang v1.3.6 for this to work properly. The ⟨ v1.3.6 for this to work properly. The ⟨dialect⟩ must be one that’s tracked (which typically means that babel or or polyglossia has been + id="dx1-50083"> has been loaded with the appropriate setting for that language). If \foreignlanguage hasn’t been defined, this just does ⟨text⟩. For example:

    -
    +
    \documentclass{article}  
    \usepackage[main=british,brazilian,ngerman]{babel}  
    \usepackage{glossaries-extra} @@ -22267,31 +21433,29 @@ class="cmti-10">text⟩. For example:  
    \gls{abnt}, \gls{din}.  
    \end{document}
    -

    -

    When using the

    +

    When using the record option, in addition to recording the usual location, you can + id="dx1-50084"> option, in addition to recording the usual location, you can also record the current value of another counter at the same time using the preamble-only command: -


    \GlsXtrRecordCounter 


    \GlsXtrRecordCounter{counter name}

    -

    +

    For example:

    -
    +
    \usepackage[record]{glossaries-extra}  
    \GlsXtrRecordCounter{section}
    -

    Each time an entry is referenced with commands like

    Each time an entry is referenced with commands like \gls or \glstext, the \gls{bird} is used in section 1.2 th -

    +
    \glsxtrfieldlistgadd{bird}{record.section}{1.2}
    -

    Note that there’s no key corresponding to this new

    Note that there’s no key corresponding to this new record.section field, but its value can be accessed with \glsxtrfielduse or the list can be iterated over with \glsxtrfielddolistloop etc. -

    +

    -

    Top

    10.2 Display All Entries Without Sorting or Indexing

    -


    \printunsrtglossary 


    \printunsrtglossary[options]

    -

    +

    This behaves like \printnoidxglossary but never sorts the entries and always lists all the defined entries for the given glossary (and doesn’t require \makenoidxglossaries). If you want to use one of the tabular-like styles with + id="dx1-51002">-like styles with \printunsrtglossary, make sure you load glossaries-extra-stylemods which modifies + id="dx1-51004"> which modifies the definition of \glsgroupskip to avoid the “Incomplete \iftrue” error that may otherwise occur. -

    There’s also a starred form -


    \printunsrtglossary* 

    There’s also a starred form +


    \printunsrtglossary*[options]{code}

    -

    +

    which is equivalent to

    \endgroup class="cmtt-10">\glossarypreamble, the supplied ⟨code⟩ is done before the glossary header. -

    This means you now have the option to simply list all entries on the first +

    This means you now have the option to simply list all entries on the first LATEX run without the need for a post-processor, however there will be no number list in this case, as that has to be set by a post-processor such as bib2gls (see §9 bib2gls: Managing Reference Databases). -

    No attempt is made to gather hierarchical elements. If child entries aren’t defined +

    No attempt is made to gather hierarchical elements. If child entries aren’t defined immediately after their parent entry, they won’t be together in the glossary when using \printunsrtglossary.
    -

    +

    -

    There’s a difference in behaviour depending on whether or not the

    There’s a difference in behaviour depending on whether or not the group key is -defined. If not defined (default), the group label will be formed from the first -letter of the key is +defined. If not defined (default), the group label will be formed from the first letter of +the name field. The corresponding group title will be obtained as -discussed in field. The corresponding group title will be obtained as discussed +in §2.12 §2.10.1 Glossary Style Modifications. This can lead to an odd effect if you are using a style that separates letter groups when the ordering isn’t alphabetical. -

    If the

    If the group key is defined (which it is with the key is defined (which it is with the record option) then the group label + id="dx1-51011"> option) then the group label will be obtained from the value of that field. If the field is empty, no grouping is performed, even if the style supports it. (That is, there won’t be a header or a vertical separation.) If the group field is non-empty, then the corresponding title is obtained + id="dx1-51012"> field is non-empty, then the corresponding title is obtained as described earlier. -

    If you want to use a different field, you can redefine -


    \glsxtrgroupfield 

    If you want to use a different field, you can redefine +


    \glsxtrgroupfield

    -

    +

    to the relevant internal field label, but the group key must still be defined (through the record option or with commands like option or with commands like \glsaddstoragekey) to ensure that \printunsrtglossary uses \glsxtrgroupfield. (This method is used by bib2gls for secondary entries, which have the group label stored in the secondarygroup internal field.) -

    If you have any entries with the

    If you have any entries with the see key set, you will need the key set, you will need the glossaries package + id="dx1-51018"> package option seenoindex=ignore or or seenoindex=warn to prevent an error occurring from the + id="dx1-51020"> to prevent an error occurring from the automated \glssee normally triggered by this key. The record=only package option + id="dx1-51021"> package option will automatically deal with this. -

    For example: +

    For example:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \newglossaryentry{zebra}{name={zebra},description={stripy animal}} @@ -22511,191 +21669,169 @@ will automatically deal with this.  
    \printunsrtglossaries  
    \end{document}
    -

    In the above, zebra will be listed before ant as it was defined first. -

    If you allow document definitions with the

    In the above, zebra will be listed before ant as it was defined first. +

    If you allow document definitions with the docdefs option, the document will + id="dx1-51022"> option, the document will require a second LATEX run if the entries are defined after \printunsrtglossary. -

    The optional argument is as for

    The optional argument is as for \printnoidxglossary (except for the sort key, + id="dx1-51023"> key, which isn’t available). -

    All glossaries may be displayed in the order of their definition using: -


    \printunsrtglossaries 

    All glossaries may be displayed in the order of their definition using: +


    \printunsrtglossaries

    -

    +

    which is analogous to \printnoidxglossaries. This just iterates over all defined glossaries (that aren’t on the ignored list) and does \printunsrtglossary[type=⟨type⟩]. -

    To avoid complications caused by

    To avoid complications caused by tabular-like glossary styles, -like glossary styles, \printunsrtglossary iterates over all entries in the selected glossary and appends the appropriate code to an internal command. Once the construction of this command is complete, then it’s performed to display the glossary. This puts the loop outside the style code. For convenience, there’s a hook used within the loop: -


    \printunsrtglossaryentryprocesshook  \printunsrtglossaryentryprocesshook -{


    \printunsrtglossaryentryprocesshook{label}

    -

    +

    This hook should not display any content, but may be used to perform calculations. For example, to calculate widths. Within this hook you can use: -


    \printunsrtglossaryskipentry 


    \printunsrtglossaryskipentry

    -

    +

    to skip the current entry. This will prevent the entry from being added to the internal command. -

    There’s another hook immediately before the internal command containing the +

    There’s another hook immediately before the internal command containing the glossary code is performed: -


    \printunsrtglossarypredoglossary  \printunsrtglossarypredoglossary -

    -

    +


    \printunsrtglossarypredoglossary

    +

    +

    The internal command uses -

    The internal command uses -


    \printunsrtglossaryhandler 


    \printunsrtglossaryhandler{label} -

    -

    +class="cmtt-10">}


    +

    to display each item in the list, where ⟨label⟩ is the current label. -

    By default the handler just does -


    \glsxtrunsrtdo 

    By default the handler just does +


    \glsxtrunsrtdo{label}

    -

    +

    which determines whether to use \glossentry or \subglossentry and checks the location and and loclist fields for the fields for the number list. If you want to use a different field to be used instead of location then redefine: -


    \GlsXtrLocationField  then redefine: +


    \GlsXtrLocationField

    -

    +

    to the internal name of the desired field. For example:

    -
    +
    \renewcommand{\GlsXtrLocationField}{primarylocation}
    -

    -

    Note that if the given location field is undefined or unset, the handler will +

    +

    Note that if the given location field is undefined or unset, the handler will fallback on the loclist field.
    -

    + id="dx1-51037"> field.

    +

    You can instruct bib2gls to omit setting the loclist field with the resource option + id="dx1-51039"> field with the resource option --save-loclist=false to prevent it from being used as a fallback. -

    You can redefine the handler if required. For example, you may want to filter +

    You can redefine the handler if required. For example, you may want to filter entries according to the category label. You can test if a label is contained in a comma-separated list of labels using: -


    \glsxtriflabelinlist 


    \glsxtriflabelinlist{label}{label list}{true} -{}{false}

    -

    +

    The ⟨label⟩ and ⟨label list⟩ will be fully expanded. -

    If you redefine the handler to exclude entries, you may end up with an empty +

    If you redefine the handler to exclude entries, you may end up with an empty glossary. This could cause a problem for the list-based styles.
    -

    -

    For example, if the preamble includes: +

    +

    For example, if the preamble includes:

    -
    +
    \usepackage[record,style=index]{glossaries-extra}  
    \GlsXtrRecordCounter{section}
    -

    then you can print the glossary but first redefine the handler to only select entries +

    then you can print the glossary but first redefine the handler to only select entries that include the current section number in the record.section field:

    -
    +
    \renewcommand{\printunsrtglossaryhandler}[1]{%  
      \glsxtrfieldxifinlist{#1}{record.section}{\thesection}  
      {\glsxtrunsrtdo{#1}}%  
      {}%  
    }
    -

    -

    Alternatively you can use the starred form of

    +

    Alternatively you can use the starred form of \printunsrtglossary which will localise the change:

    -
    +
    \printunsrtglossary*{%  
      \renewcommand{\printunsrtglossaryhandler}[1]{%  
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} @@ -22704,10 +21840,10 @@ localise the change:  
      }%  
    }
    -

    -

    If you are using the

    +

    If you are using the hyperref package and want to display the same glossary more + id="dx1-51041"> package and want to display the same glossary more than once, you can also add a temporary redefinition of \glolinkprefix to avoid duplicate hypertarget names. For example: @@ -22715,7 +21851,7 @@ duplicate hypertarget names. For example:

    -
    +
    \printunsrtglossary*{%  
      \renewcommand{\printunsrtglossaryhandler}[1]{%  
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} @@ -22731,7 +21867,7 @@ duplicate hypertarget names. For example:  
      }%  
    }
    -

    Note that this will cause a problem if your descriptions contain commands like

    Note that this will cause a problem if your descriptions contain commands like \gls that need to link an entry that doesn’t appear in the summary. In this case, it’s a better approach to use: @@ -22739,7 +21875,7 @@ better approach to use:

    -
    +
    \printunsrtglossary*{%  
      \renewcommand{\printunsrtglossaryhandler}[1]{%  
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} @@ -22755,14 +21891,14 @@ better approach to use:  
      }%  
    }
    -

    -

    If it’s a short summary at the start of a section, you might also want to suppress +

    +

    If it’s a short summary at the start of a section, you might also want to suppress the glossary header and add some vertical space afterwards:

    -
    +
    \printunsrtglossary*{%  
      \renewcommand{\printunsrtglossaryhandler}[1]{%  
        \glsxtrfieldxifinlist{#1}{record.section}{\thesection} @@ -22780,64 +21916,56 @@ the glossary header and add some vertical space afterwards:  
      \appto\glossarypostamble{\glspar\medskip\glspar}%  
    }
    -

    -

    There’s a shortcut command that essentially does this: -


    \printunsrtglossaryunit 

    +

    There’s a shortcut command that essentially does this: +


    \printunsrtglossaryunit[options]{counter -namecounter name}

    -

    +

    The above example can simply be replaced with:

    -
    +
    \printunsrtglossaryunit{section}
    -

    -

    This shortcut command is actually defined to use

    +

    This shortcut command is actually defined to use \printunsrtglossary* with -


    \printunsrtglossaryunitsetup 


    \printunsrtglossaryunitsetup{counter -namecounter name}

    -

    +

    so if you want to just make some minor modifications you can do

    -
    +
    \printunsrtglossary*{\printunsrtglossaryunitsetup{section}%  
      \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}%  
    }
    -

    which will start the list with a subsection header with the title “Summary” +

    which will start the list with a subsection header with the title “Summary” (overriding the glossary’s title). -

    Note that this shortcut command is only available with the

    Note that this shortcut command is only available with the record (or + id="dx1-51044"> (or record=alsoindex) package option. -

    This temporary change in the hypertarget prefix means you need to explicitly use + id="dx1-51045">) package option. +

    This temporary change in the hypertarget prefix means you need to explicitly use \hyperlink to create a link to it as commands like \gls will try to link to the target @@ -22849,12 +21977,12 @@ the front or back matter) which can be the target for all glossary references an just use \printunsrtglossaryunit for a quick summary at the start of a section etc. -

    +

    -

    Top

    10.3 Standalone Entry Items

    -

    It may be that you don’t want a list but would rather display entry details +

    It may be that you don’t want a list but would rather display entry details throughout the document. You can simply do \glsentryname followed by \glsentrydesc. (Remember that if you don’t want a s href="#styopt.sort">sort=none to + id="dx1-52001"> to skip the construction of the sort field.) For example, in the preamble provide a + id="dx1-52002"> field.) For example, in the preamble provide a custom command:

    -
    +
    \newcommand{\displayterm}[1]{%  
     \par\medskip\par\noindent  
     Definition: \glsentryname{#1}.\par @@ -22879,43 +22007,41 @@ custom command:  
     \par\medskip  
    }
    -

    define your entries +

    define your entries

    -
    +
    \newglossaryentry{function}{name={function},  
      description={a relation or expression involving variables}  
    }
    -

    and then later in the text: +

    and then later in the text:

    -
    +
    \displayterm{function}
    -

    -

    However, if may be that you want to use

    +

    However, if may be that you want to use hyperref and have commands like and have commands like \gls link back to the place where the term is described. Instead of using \glsentryname use -


    \glsxtrglossentry 


    \glsxtrglossentry{label}

    -

    +

    where ⟨label⟩ is the entry’s label. -

    This is designed to behave much like the way the name is displayed in the +

    This is designed to behave much like the way the name is displayed in the glossary. It performs the following:

    • Defines \printglossary and may be used by style hooks. class="cmtt-10">\glsentryitem and \glssubentryitem. The value is obtained by fully expanding: -


      \GlsXtrStandaloneGlossaryType  \GlsXtrStandaloneGlossaryType -

      -

      +


      \GlsXtrStandaloneGlossaryType

      +

      which defaults to the value of the type field for the current entry. + id="dx1-52006"> field for the current entry.

    • Increments and display the entry counters if the entrycounter or or subentrycounter + id="dx1-52008"> package options are set. If the entry doesn’t have a parent, then this does -

      otherwise it does (as from v1.31)

      +

      otherwise it does (as from v1.31)

      • \GlsXtrStandaloneSubEntryItem + id="dx1-52009"> {label} if the entry has -

        This reflects the behaviour of the predefined hierarchical styles. A bug in +

        This reflects the behaviour of the predefined hierarchical styles. A bug in pre-version 1.31 used \glsentryitem for all child levels, which doesn’t match the hierarchical glossary styles. If you want to restore this behaviour, just @@ -22987,23 +22110,20 @@ class="cmtt-10">\glsentryitem for all child levels, which doesn’t m

        -
        +
        \renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}}
        -

        +

      • Sets the hyper-target if supported (using \glstarget) and displays the entry name using: -


        \GlsXtrStandaloneEntryName 


        \GlsXtrStandaloneEntryName{label} -

        -

        +class="cmtt-10">}


        +

        which uses \glstarget{label\glsnamefont or picks up the style from category attributes such as glossnamefont.

      -

      If you have used .

    +

    If you have used \nopostdesc or or \glsxtrnopostpunc in any of your description fields, + id="dx1-52013"> in any of your description fields, you can use -


    \glsxtractivatenopost 


    \glsxtractivatenopost

    -

    +

    to make these commands behave as they normally do within a glossary. This needs to be placed before

    @@ -23044,22 +22162,19 @@ class="cmtt-10">}\glspostdescription class="cmtt-10">\glsnonextpages and \glsnextpages have no effect outside of the glossary and are not intended for use in a standalone context. -

    It’s also possible to select a different field (rather than using

    It’s also possible to select a different field (rather than using name): -


    \glsxtrglossentryother  ): +


    \glsxtrglossentryother{header}{label}{field} -

    -

    +class="cmtt-10">}


    +

    The ⟨field⟩ must be given using its internal field label which may not be the same as the key used to set the field. See the key to field mappings table in the field⟩ class="cmtt-10">{⟨label}. - - -

  • Otherwise ⟨header⟩ is simply the field value.
  • -

    The

    The \glsxtrglossentryother command internally uses -


    \GlsXtrStandaloneEntryOther 


    \GlsXtrStandaloneEntryOther{label}{field} -

    -

    +class="cmtt-10">}


    +

    instead of \GlsXtrStandaloneEntryName, which uses \glossentrynameother{} instead of \glossentryname{label}. -

    If you have loaded the

    If you have loaded the glossaries-accsupp package (through the package (through the accsupp option) + id="dx1-52019"> option) then accessibility support will be provided if there’s a corresponding command

    @@ -23131,12 +22243,12 @@ class="cmtt-10">}
    (for example, \glssymbolaccessdisplay). -

    This means that my custom command can be changed to: +

    This means that my custom command can be changed to:

    -
    +
    \newcommand{\displayterm}[1]{%  
     \par\medskip\par\noindent  
     Definition: \glsxtrglossentry{#1}.\par @@ -23144,17 +22256,17 @@ class="cmtt-10">\glssymbolaccessdisplay).  
     \par\medskip  
    }
    -

    If I want numbered definitions, then I can use the package options

    If I want numbered definitions, then I can use the package options entrycounter or + id="dx1-52020"> or subentrycounter and remove the colon: + id="dx1-52021"> and remove the colon:

    -
    +
    \newcommand{\displayterm}[1]{%  
     \par\medskip\par\noindent  
     Definition \glsxtrglossentry{#1}.\par @@ -23162,28 +22274,28 @@ class="cmss-10">subentrycounter \par\medskip  
    }
    -

    The counter label uses a dot after the number by default but this can be changed to +

    The counter label uses a dot after the number by default but this can be changed to a colon:

    -
    +
    \renewcommand*{\glsentrycounterlabel}{\theglossaryentry:\space}
    -

    It’s now possible to not only use

    It’s now possible to not only use \gls to link back to the definition but also use \glsrefentry to reference the counter and \glsxtrpageref to reference the page number. -

    If I want the description to behave more like it does in a glossary in need to make +

    If I want the description to behave more like it does in a glossary in need to make the following modification:

    -
    +
    \newcommand{\displayterm}[1]{%  
     \par\medskip\par\noindent  
     Definition \glsxtrglossentry{#1}.\par @@ -23194,18 +22306,18 @@ the following modification:  
     \par\medskip  
    }
    -

    (Note the grouping to localise

    (Note the grouping to localise \glsxtractivatenopost.) -

    You can also use

    You can also use \glsxtrglossentry within section headings. For example:

    -
    +
    \section{\glsxtrglossentry{function}}
    -

    This will use

    This will use \glsentryname in PDF bookmarks (if \texorpdfstring is defined) and will use \@glsxtrnotinmark and \glsxtrrestoremarkhook.) -

    +

    -

    Top

    10.4 Entry Aliases

    -

    An entry can be made an alias of another entry using the

    An entry can be made an alias of another entry using the alias key. The + id="dx1-53001"> key. The value should be the label of the other term. There’s no check for the other’s existence when the aliased entry is defined. This is to allow the possibility of defining the other entry after the aliased entry. (For example, when used with bib2gls.) -

    If an entry ⟨

    If an entry ⟨entry-1⟩ is made an alias of ⟨entry-2⟩ then:

    • If the see field wasn’t provided when ⟨ field wasn’t provided when ⟨entry-1⟩ was defined, the alias key will + id="dx1-53004"> key will automatically trigger
      }
    • If the hyperref package has been loaded then package has been loaded then \gls{entry-1} will link to @@ -23267,7 +22379,7 @@ class="cmtt-10">} will link to class="cmti-10">entry-2⟩’s target. (Unless the targeturl attribute has been set for ⟨ attribute has been set for ⟨entry-1⟩’s category.)
    • @@ -23275,20 +22387,20 @@ class="cmti-10">entry-1⟩’s href="#styopt.record">record=off or or record=alsoindex, the , the noindex setting will automatically + id="dx1-53009"> setting will automatically be triggered when referencing ⟨entry-1⟩ with commands like \gls or \glstext. This prevents ⟨entry-1⟩ from have a location list (aside from the cross-reference added with \glssee) unless it’s been explicitly @@ -23299,96 +22411,309 @@ class="cmtt-10">noindex=false. -

      Note that with

      Note that with record=only, the location list for aliased entries is controlled + id="dx1-53011">, the location list for aliased entries is controlled with bib2gls’s settings.

    -

    The index suppression trigger is performed by -


    \glsxtrsetaliasnoindex 

    The index suppression trigger is performed by +


    \glsxtrsetaliasnoindex

    -

    +

    This is performed after the default options provided by \GlsXtrSetDefaultGlsOpts + id="dx1-53015"> have been set. With record=only, , \glsxtrsetaliasnoindex will default to do nothing. -

    Within the definition of

    Within the definition of \glsxtrsetaliasnoindex you can use -


    \glsxtrindexaliased 


    \glsxtrindexaliased

    -

    +

    to index ⟨entry-2⟩. -

    The index suppression command can be redefined to index the main term instead. +

    The index suppression command can be redefined to index the main term instead. For example:

    -
    -\renewcommand{\glsxtrsetaliasnoindex}{% - 
     \glsxtrindexaliased - 
     \setkeys{glslink}{noindex}% - 
    } +
    +\renewcommand{\glsxtrsetaliasnoindex}{% + 
     \glsxtrindexaliased + 
     \setkeys{glslink}{noindex}% + 
    } +
    +

    +

    The value of the alias field can be accessed using +


    \glsxtralias{label}

    +

    + + + +

    +

    +

    Top

    11. On-the-Fly Document Definitions

    +

    The commands described here may superficially look like ⟨word\index{word}, +but they behave rather differently. If you want to use \index then just use \index. +
    +

    +

    The glossaries package advises against defining entries in the document +environment. As mentioned in §1.2 New or Modified Package Options above, this +ability is disabled by default with glossaries-extra but can be enabled using the +docdefs package options. +

    Although this can be problematic, the glossaries-extra package provides a way of +defining and using entries within the document environment without the tricks used +with the docdefs option. There are limitations with this approach, so take care with it. +This function is disabled by default, but can be enabled using the preamble-only +command: +


    \GlsXtrEnableOnTheFly

    +

    +When used, this defines the commands described below. +

    The commands \glsxtr, \glsxtrpl, \Glsxtr and \Glsxtrpl can’t be used after +the glossaries have been displayed (through \printglossary etc). It’s best not to +mix these commands with the standard glossary commands, such as \gls or there +may be unexpected results.
    +

    +


    \glsxtr[gls-options][dfn-options]{label}

    +

    +If an entry with the label ⟨label⟩ has already been defined, this just does \gls +[gls-options]{label}. If ⟨label⟩ hasn’t been defined, this will define the entry using: +

    +
    +\newglossaryentry{label}{name={label}, +
     category=\glsxtrcat, +
     description={\nopostdesc}, +
     dfn-options} +
    +
    +

    The ⟨label⟩ must contain any non-expandable commands, such as formatting +commands or problematic characters. If the term requires any of these, they must be +omitted from the ⟨label⟩ and placed in the name key must be provided in the optional +argument ⟨dfn-options⟩.
    +

    + + + +

    The second optional argument ⟨dfn-options⟩ should be empty if the entry has +already been defined, since it’s too late for them. If it’s not empty, a warning will be +generated with +


    \GlsXtrWarning{dfn-options}{label}

    +

    +

    For example, this warning will be generated on the second instance of \glsxtr +below: + + + +

    +
    +\glsxtr[][plural=geese]{goose} + 
     ... later + 
    \glsxtr[][plural=geese]{goose}
    -

    -

    The value of the alias field can be accessed using -


    \glsxtralias  \glsxtralias{

    +

    If you are considering doing something like: + + + +

    +
    +\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}} + 
    \renewcommand*{\GlsXtrWarning}[2]{} + 
     ... later + 
    \goose\ some more text here +
    +

    then don’t bother. It’s simpler and less problematic to just define the entries in the +preamble with \newglossaryentry and then use \gls in the document. +

    There are plural and case-changing alternatives to \glsxtr: +


    \glsxtrpl[gls-options][dfn-options]{label}

    +

    +This is like \glsxtr but uses \glspl instead of \gls. +


    \Glsxtr[gls-options][dfn-options]{label}

    +

    +This is like \glsxtr but uses \Gls instead of \gls. +


    \Glsxtrpl[gls-options][dfn-options]{label}

    -

    +

    +This is like \glsxtr but uses \Glspl instead of \gls. +

    If you use UTF-8 and don’t want the inconvenient of needing to use an +ASCII-only label, then it’s better to use XƎLATEX or LuaLATEX instead of +LATEX (or pdfLATEX). If you really desperately want to use UTF-8 entry labels +without switching to XƎLATEX or LuaLATEX then there is a starred version of +\GlsXtrEnableOnTheFly that allows you to use UTF-8 characters in ⟨label⟩, but it’s +experimental and may not work in some cases. +

    If you use the starred version of \GlsXtrEnableOnTheFly don’t use any +commands in the ⟨label⟩, even if they expand to just text.
    +

    -

    -

    Top

    11.

    +

    Top

    12. Supplemental Packages

    -

    The

    The glossaries bundle provides additional support packages glossaries-prefix (for + id="dx1-55001"> (for prefixing) and glossaries-accsupp (for accessibility support). These packages aren’t + id="dx1-55002"> (for accessibility support). These packages aren’t automatically loaded.

    -

    Top

    11.1

    Top

    12.1 Prefixes or Determiners

    -

    If prefixing is required, you can simply load

    If prefixing is required, you can simply load glossaries-prefix after after glossaries-extra. For example:

    -
    +
    \documentclass{article}  
    \usepackage{glossaries-extra}  
    \usepackage{glossaries-prefix} @@ -23403,40 +22728,51 @@ example:  
    \printglossaries  
    \end{document}
    -

    -

    +

    +

    -

    Top

    11.2

    Top

    12.2 Accessibility Support

    -

    The

    The glossaries-accsupp package needs to be loaded before package is still experimental and so accessibility features are +liable to change.
    +

    +

    The glossaries-accsupp package needs to be loaded before glossaries-extra or through the accsupp package option: + id="dx1-57003"> package option:

    -
    +
    \usepackage[accsupp]{glossaries-extra}
    -

    If you don’t load

    If you don’t load glossaries-accsupp or you load or you load glossaries-accsupp after after glossaries-extra the new \glsaccessxxx⟩ commands described below will simply be equivalent to the corresponding \glsentryxxx⟩ commands. -

    The following xxx⟩ commands. Other accessibility features, such as the +attributes used by \newabbreviation also won’t work if glossaries-accsupp is loaded +too late. +

    The following \glsaccessxxx⟩ commands add accessibility information wrapped around the corresponding \glsentryxxx⟩ commands. There is no check for existence of the entry nor do any of these commands add formatting, hyperlinks or indexing information. -


    \glsaccessname 


    \glsaccessname{label}

    -

    +

    This displays the value of the name field for the entry identified by ⟨ field for the entry identified by ⟨label⟩. -

    If the

    If the glossaries-accsupp package isn’t loaded, this is simply defined as: + id="dx1-57010"> package isn’t loaded, this is simply defined as:

    -
    +
    \newcommand*{\glsaccessname}[1]{\glsentryname{#1}}
    -

    otherwise it’s defined as: +

    otherwise it’s defined as:

    -
    +
    \newcommand*{\glsaccessname}[1]{%  
      \glsnameaccessdisplay  
      {% @@ -23480,38 +22814,36 @@ class="cmss-10">glossaries-accsupp  {#1}%  
    }
    -

    (

    (\glsnameaccessdisplay is defined by the is defined by the glossaries-accsupp package.) The first + id="dx1-57012"> package.) The first letter upper case version is: -


    \Glsaccessname 


    \Glsaccessname{label}

    -

    +

    Without the glossaries-accsupp package this is just defined as: + id="dx1-57014"> package this is just defined as:

    -
    +
    \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}}
    -

    With the

    With the glossaries-accsupp package this is defined as: + id="dx1-57015"> package this is defined as:

    -
    +
    \newcommand*{\Glsaccessname}[1]{%  
      \glsnameaccessdisplay  
      {% @@ -23520,299 +22852,251 @@ class="cmss-10">glossaries-accsupp  {#1}%  
    }
    -

    -

    The following commands are all defined in an analogous manner. -


    \glsaccesstext 

    +

    The following commands are all defined in an analogous manner. +


    \glsaccesstext{label}

    -

    +

    This displays the value of the text field. -


    \Glsaccesstext  field. +


    \Glsaccesstext{label}

    -

    +

    This displays the value of the text field with the first letter converted to upper + id="dx1-57019"> field with the first letter converted to upper case. -


    \glsaccessplural 


    \glsaccessplural{label}

    -

    +

    This displays the value of the plural field. -


    \Glsaccessplural  field. +


    \Glsaccessplural{label}

    -

    +

    This displays the value of the plural field with the first letter converted to upper + id="dx1-57023"> field with the first letter converted to upper case. -


    \glsaccessfirst 


    \glsaccessfirst{label}

    -

    +

    This displays the value of the first field. -


    \Glsaccessfirst  field. +


    \Glsaccessfirst{label}

    -

    +

    This displays the value of the first field with the first letter converted to upper + id="dx1-57027"> field with the first letter converted to upper case. -


    \glsaccessfirstplural 


    \glsaccessfirstplural{label}

    -

    +

    This displays the value of the firstplural field. -


    \Glsaccessfirstplural  field. +


    \Glsaccessfirstplural{label}

    -

    +

    This displays the value of the firstplural field with the first letter converted to upper + id="dx1-57031"> field with the first letter converted to upper case. -


    \glsaccesssymbol 


    \glsaccesssymbol{label}

    -

    +

    This displays the value of the symbol field. -


    \Glsaccesssymbol  field. +


    \Glsaccesssymbol{label}

    -

    +

    This displays the value of the symbol field with the first letter converted to upper + id="dx1-57035"> field with the first letter converted to upper case. -


    \glsaccesssymbolplural 


    \glsaccesssymbolplural{label}

    -

    +

    This displays the value of the symbolplural field. -


    \Glsaccesssymbolplural  field. +


    \Glsaccesssymbolplural{label}

    -

    +

    This displays the value of the symbolplural field with the first letter converted to + id="dx1-57039"> field with the first letter converted to upper case. -


    \glsaccessdesc 


    \glsaccessdesc{label}

    -

    +

    This displays the value of the description field. -


    \Glsaccessdesc  field. +


    \Glsaccessdesc{label}

    -

    +

    This displays the value of the description field with the first letter converted to upper + id="dx1-57043"> field with the first letter converted to upper case. -


    \glsaccessdescplural 


    \glsaccessdescplural{label}

    -

    +

    This displays the value of the descriptionplural field. -


    \Glsaccessdescplural  field. +


    \Glsaccessdescplural{label}

    -

    +

    This displays the value of the descriptionplural field with the first letter converted to + id="dx1-57047"> field with the first letter converted to upper case. -


    \glsaccessshort 


    \glsaccessshort{label}

    -

    +

    This displays the value of the short field. -


    \Glsaccessshort  field. +


    \Glsaccessshort{label}

    -

    +

    This displays the value of the short field with the first letter converted to upper + id="dx1-57051"> field with the first letter converted to upper case. -


    \glsaccessshortpl 


    \glsaccessshortpl{label}

    -

    +

    This displays the value of the shortplural field. -


    \Glsaccessshortpl  field. +


    \Glsaccessshortpl{label}

    -

    +

    This displays the value of the shortplural field with the first letter converted to upper + id="dx1-57055"> field with the first letter converted to upper case. -


    \glsaccesslong 


    \glsaccesslong{label}

    -

    +

    This displays the value of the long field. -


    \Glsaccesslong  field. +


    \Glsaccesslong{label}

    -

    +

    This displays the value of the long field with the first letter converted to upper + id="dx1-57059"> field with the first letter converted to upper case. -


    \glsaccesslongpl 


    \glsaccesslongpl{label}

    -

    +

    This displays the value of the longplural field. -


    \Glsaccesslongpl  field. +


    \Glsaccesslongpl{label}

    -

    +

    This displays the value of the longplural field with the first letter converted to upper + id="dx1-57063"> field with the first letter converted to upper case.

    -

    -

    Top

    12.

    +

    Top

    13. Sample Files

    -

    The following sample files are provided with this package: +

    The following sample files are provided with this package:

    sample.tex
    General abbreviations. sample-acronym.tex
    Acronyms aren’t initialisms and don’t expand on first use.
    @@ -23890,7 +23174,7 @@ class="description">Another initialisms example. sample-postlink.tex
    Automatically inserting text after the link-text produced by commands like \gls (outside of hyperlink, if present). @@ -23904,28 +23188,28 @@ class="cmbx-10">sample-autoindex.tex
    Using the dualindex and and indexname attributes to + id="dx1-58004"> attributes to automatically add glossary entries to the index (in addition to the glossary location list).
    sample-autoindex-hyp.tex
    As previous but uses hyperref. + id="dx1-58006">.
    sample-nested.tex
    Using \gls within the value of the within the value of the name key. + id="dx1-58008"> key.
    sample-entrycount.tex
    Enable entry-use counting (only index if used more than n times, see §6.1 §7.1 Entry Counting (First Use Flag)).
    sample-unitentrycount.tex
    Enable use of per-unit entry-use counting (§6.1 +class="cmsy-10">§7.1 Entry Counting (First Use Flag)).
    @@ -23948,7 +23232,7 @@ href="#sec:entrycount">Entry Counting (First Use Flag)) to only have one hyperlink per entry per page.
    @@ -23956,7 +23240,7 @@ href="#sec:entrycount">Entry Counting class="cmbx-10">sample-linkcount.tex
    Using link counting (§6.2 §7.2 Link Counting) to only have one hyperlink per entry.
    @@ -23986,7 +23270,7 @@ class="cmbx-10">sample-external.tex
    Uses the targeturl attribute to allow for entries that + id="dx1-58009"> attribute to allow for entries that should link to an external URL rather than to an internal glossary.
    \glsxtrfmt. class="cmbx-10">sample-alias.tex
    Uses the alias key. (See key. (See §10.4 Entry Aliases.) @@ -24008,29 +23292,29 @@ href="#sec:alias">Entry Aliases.) class="cmbx-10">sample-alttree.tex
    Uses the glossaries-extra-stylemods package with the package with the alttree + id="dx1-58012"> style (see §2.12.3 The §2.10.1 The glossaries-extra-stylemods Package).
    sample-alttree-sym.tex
    Another alttree example that measures the symbol + id="dx1-58013"> example that measures the symbol widths.
    sample-alttree-marginpar.tex
    Another alttree example that puts the + id="dx1-58014"> example that puts the number list in the margin.
    sample-onthefly.tex
    Using on-the-fly commands. Terms with accents must have the name key explicitly set. + id="dx1-58016"> key explicitly set.
    sample-onthefly-xetex.tex
    Using on-the-fly commands with XƎLATEX. Terms with UTF-8 characters don’t need to have the name key explicitly + id="dx1-58017"> key explicitly set. Terms that contain commands must have the name key explicitly set + id="dx1-58018"> key explicitly set with the commands removed from the label.
    Tries to emulate the previous sample file for use with LATEX through the starred version of \GlsXtrEnableOnTheFly. + id="dx1-58019">. This is a bit iffy and may not always work. Terms that contain commands must have the name key explicitly set with the commands removed from + id="dx1-58020"> key explicitly set with the commands removed from the label.
    sample-accsupp.tex
    Integrate glossaries-accsupp. + id="dx1-58021">.
    sample-prefix.tex
    Integrate glossaries-prefix. + id="dx1-58022">.
    sample-suppl-main.tex
    Uses thevalue to reference a location in the + id="dx1-58023"> to reference a location in the supplementary file sample-suppl.tex. @@ -24092,84 +23376,84 @@ class="cmbx-10">sample-suppl-main-hyp.tex
    A more complicated version to the above that uses the hyperref package to reference a location in the supplementary file + id="dx1-58024"> package to reference a location in the supplementary file sample-suppl-hyp.tex.
    -

    -

    Top

    13.

    +

    Top

    14. Multi-Lingual Support

    -

    There’s only one command provided by

    There’s only one command provided by glossaries-extra that you’re likely to want to change in your document and that’s \abbreviationsname ( (§1.2 New or Modified Package Options) if you use the abbreviations package option to + id="dx1-59002"> package option to automatically create the glossary labelled abbreviations. If this command doesn’t already exist, it will be defined to “Abbreviations” if babel hasn’t + id="dx1-59003"> hasn’t been loaded, otherwise it will be defined as \acronymname (provided by glossaries). -

    You can redefine it in the usual way. For example: +

    You can redefine it in the usual way. For example:

    -
    +
    \renewcommand*{\abbreviationsname}{List of Abbreviations}
    -

    Or using

    Or using babel or or polyglossia captions hook: + id="dx1-59005"> captions hook:

    -
    +
    \appto\captionsenglish{%  
     \renewcommand*{\abbreviationsname}{List of Abbreviations}%  
    }
    -

    -

    Alternatively you can use the

    +

    Alternatively you can use the title key when you print the list of abbreviations. + id="dx1-59006"> key when you print the list of abbreviations. For example:

    -
    +
    \printabbreviations[title={List of Abbreviations}]
    -

    or +

    or

    -
    +
    \printglossary[type=abbreviations,title={List of Abbreviations}]
    -

    -

    The other fixed text commands are the diagnostic messages, which shouldn’t +

    +

    The other fixed text commands are the diagnostic messages, which shouldn’t appear in the final draft of your document. -

    The

    The glossaries-extra package has the facility to load language modules (whose filename is in the form glossariesxtr-language.ldf) if they exist, but won’t warn if they don’t. If glossaries-extra-bib2gls is loaded via the is loaded via the record package option then the + id="dx1-59008"> package option then the check for language resource files will additionally search for an associated language script file given by glossariesxtr-Latn, associated with the given dialect. There’s no warning if the associated file isn’t found. The script file is loaded after the dialect file. -

    If you want to write your own language module, you just need to create a file +

    If you want to write your own language module, you just need to create a file called glossariesxtr-lang.ldf, where ⟨lang⟩ identifies the language or dialect (see the tracklang package). For example, package). For example, glossariesxtr-french.ldf. -

    The simplest code for this file is: +

    The simplest code for this file is:

    -
    +
    \ProvidesGlossariesExtraLang{french}[2015/12/09 v1.0]  
    \newcommand*{\glossariesxtrcaptionsfrench}{%  
     \def\abbreviationsname{Abr\'eviations}% @@ -24230,85 +23514,75 @@ class="cmtt-10">glossariesxtr-french.ldf.  
      {}%  
    }
    -

    -

    You can adapt this for other languages by replacing all instances of the language +

    +

    You can adapt this for other languages by replacing all instances of the language identifier french and the translated text Abr\’eviations as appropriate. You can also use the .ldf file to provide rule blocks for a particular language for use with bib2gls’s custom sort rule. See §9.3 The The glossaries-extra-bib2gls package for further details. -

    This

    This .ldf file then needs to be put somewhere on TEX’s path so that it can be found by glossaries-extra. You might also want to consider uploading it to CTAN so that it can be useful to others. (Please don’t send it to me. I already have more packages than I am able to maintain.) -

    If you additionally want to provide translations for the diagnostic messages used +

    If you additionally want to provide translations for the diagnostic messages used when a glossary is missing, you need to redefine the following commands: -


    \GlsXtrNoGlsWarningHead 


    \GlsXtrNoGlsWarningHead{label}{file} -

    -

    +class="cmtt-10">}


    +

    This produces the following text in English:

    -

    This document is incomplete. The external file associated with the - - - +

    This document is incomplete. The external file associated with the glossary ‘⟨label⟩’ (which should be called ⟨file⟩) hasn’t been created.

    -


    \GlsXtrNoGlsWarningEmptyStart 


    \GlsXtrNoGlsWarningEmptyStart

    -

    +

    This produces the following text in English:

    -

    This has probably happened because there are no entries defined in +

    This has probably happened because there are no entries defined in this glossary.

    -


    \GlsXtrNoGlsWarningEmptyMain 


    \GlsXtrNoGlsWarningEmptyMain

    -

    +

    This produces the following text in English:

    -

    If you don’t want this glossary, add

    If you don’t want this glossary, add nomain to your package option list when you load glossaries-extra.sty. For example:

    -


    \GlsXtrNoGlsWarningEmptyNotMain 


    \GlsXtrNoGlsWarningEmptyNotMain{label} -

    -

    +class="cmtt-10">}


    +

    This produces the following text in English:

    -

    Did you forget to use

    Did you forget to use type=label⟩ when you defined your entries? If you tried to load entries into this glossary with ] as the optional argument? If you did, check that the definitions in the file you loaded all had the type set to \glsdefaulttype.

    -


    \GlsXtrNoGlsWarningCheckFile 


    \GlsXtrNoGlsWarningCheckFile{file} -

    -

    +class="cmtt-10">}


    +

    This produces the following text in English:

    -

    Check the contents of the file ⟨

    Check the contents of the file ⟨file⟩. If it’s empty, that means you haven’t indexed any of your entries in this glossary (using commands like \gls or \glsadd) so this list can’t be generated. If the file isn’t empty, the document build process hasn’t been completed.

    -


    \GlsXtrNoGlsWarningMisMatch 


    \GlsXtrNoGlsWarningMisMatch

    -

    +

    This produces the following text in English:

    - - - -

    You need +

    You need to either replace \makenoidxglossaries with \makeglossaries or @@ -24360,17 +23626,18 @@ class="cmtt-10">\printglossaries) class="cmtt-10">\printnoidxglossary (or \printnoidxglossaries) and then rebuild this document.

    -


    \GlsXtrNoGlsWarningNoOut 


    \GlsXtrNoGlsWarningNoOut{file}

    -

    +

    This produces the following text in English:

    -

    The file ⟨

    The file ⟨file⟩ doesn’t exist. This most likely means you haven’t used \makeglossaries or you have used \nofiles. If this is just a draft version of the document, you can suppress this message using the nomissingglstext package option.

    -


    \GlsXtrNoGlsWarningTail 


    \GlsXtrNoGlsWarningTail

    -

    +

    This produces the following text in English:

    -

    This message will be removed once the problem has been fixed.

    -


    \GlsXtrNoGlsWarningBuildInfo 

    This message will be removed once the problem has been fixed.

    +


    \GlsXtrNoGlsWarningBuildInfo

    -

    -This is advice on how to generate the glossary files. See the documented code -(glossaries-extra-code.pdf) for further details. -


    \GlsXtrNoGlsWarningAutoMake 

    +This is advice on how to generate the glossary files. +


    \GlsXtrNoGlsWarningAutoMake{label} -

    -

    +class="cmtt-10">}


    +

    This is the message produced when the automake option is used, but the document -needs a rerun or the shell escape setting doesn’t permit the execution of the external -application. This command also generates a warning in the transcript file. See the -documented code for further details. + id="dx1-59021"> option is used, but the document +needs a rerun or the shell escape setting doesn’t permit the execution of the +external application. This command also generates a warning in the transcript +file. +

    See the documented code (glossaries-extra-code.pdf) for further +details. @@ -24425,21 +23686,21 @@ documented code for further details.

    Top

    Glossary

    + id="x1-6000014">Glossary
    bib2gls
    A command line Java application that selects entries from a .bib file and converts them to glossary definitions (like bibtex but also performs hierarchical sorting and collation, thus omitting the need for xindy or makeindex). Further details at: http://www.dickimaw-books.com/software/bib2gls/. entry location
    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. @@ -24457,80 +23718,80 @@ class="description">The location of the entry in the document. This defaults to first use
    The first time a glossary entry is used (from the start of the document or after a reset) with one of the following commands: \gls, , \Gls, , \GLS, + id="dx1-60008">, \glspl, , \Glspl, , \GLSpl or or \glsdisp. + id="dx1-60012">.
    first use flag
    A conditional that determines whether or not the entry has been used according to the rules of first use.
    first use text
    The text that is displayed on first use, which is governed by the + id="dx1-60016">first use, which is governed by the first and and firstplural keys of keys of \newglossaryentry. (May be overridden by + id="dx1-60019">. (May be overridden by \glsdisp.) + id="dx1-60020">.)
    link-text
    The text produced by commands such as \gls. It may or may not + id="dx1-60022">. It may or may not have a hyperlink to the glossary.
    location list
    A list of entry locations. See number list.
    makeglossaries
    A custom designed Perl script interface provided with the glossaries package to run xindy or makeindex according to the document settings. @@ -24540,13 +23801,13 @@ class="cmtt-10">makeindex according to the document makeglossaries-lite
    A custom designed Lua script interface to xindy and makeindex provided with the glossaries package. This is a cut-down alternative to the Perl makeglossaries-lite.exe. makeindex
    An indexing application.
    number list
    A list of entry locations (also called a location list). The number list can be suppressed using the nonumberlist package option. + id="dx1-60036"> package option.
    xindy
    An flexible indexing application with multilingual support written in Perl.

    Index

    + id="x1-6100014">Index

    A

    abbreviation styles (deprecated):
        footnote-em  1
    +href="glossaries-extra-manual.html#dx1-30173" >1
        footnote-sc  2
    +href="glossaries-extra-manual.html#dx1-30165" >2
        footnote-sm  3
    +href="glossaries-extra-manual.html#dx1-30169" >3
        long-desc-em  4
    +href="glossaries-extra-manual.html#dx1-29078" >4
        long-desc-sc  5
    +href="glossaries-extra-manual.html#dx1-29070" >5
        long-desc-sm  6
    +href="glossaries-extra-manual.html#dx1-29074" >6
        long-em  7
    +href="glossaries-extra-manual.html#dx1-29104" >7
        long-sc  8
    +href="glossaries-extra-manual.html#dx1-29096" >8
        long-sm  9
    +href="glossaries-extra-manual.html#dx1-29100" >9
        postfootnote-em  10
    +href="glossaries-extra-manual.html#dx1-30214" >10
        postfootnote-sc  11
    +href="glossaries-extra-manual.html#dx1-30206" >11
        postfootnote-sm  12
    +href="glossaries-extra-manual.html#dx1-30210" >12
    abbreviation styles:
        footnote  13
    +href="glossaries-extra-manual.html#dx1-30160" >13
    +    footnote-desc  14
        long  14
    +href="glossaries-extra-manual.html#dx1-29090" >15
        long-desc  15
    +href="glossaries-extra-manual.html#dx1-29064" >16
        long-em-noshort-em  16, 17, 18
    +href="glossaries-extra-manual.html#dx1-28092" >17, 18, 19
        long-em-noshort-em-desc  19, 20
    +href="glossaries-extra-manual.html#dx1-29079" >20, 21
        long-em-noshort-em-desc-noreg  21
    +href="glossaries-extra-manual.html#dx1-30074" >22
        long-em-noshort-em-noreg  22, 23, 24
    +href="glossaries-extra-manual.html#dx1-28094" >23, 24, 25
        long-em-short-em  25, 26, 27, 28
    +href="glossaries-extra-manual.html#dx1-28060" >26, 27, 28, 29
        long-em-short-em-desc  29
    +href="glossaries-extra-manual.html#dx1-30071" >30
        long-hyphen-long-hyphen  30
    +href="glossaries-extra-manual.html#dx1-30266" >31
        long-hyphen-noshort-desc-noreg  31, 32
    +href="glossaries-extra-manual.html#dx1-30255" >32, 33
        long-hyphen-noshort-noreg  33, 34
    +href="glossaries-extra-manual.html#dx1-28095" >34, 35
        long-hyphen-postshort-hyphen  35, 36, 37, 38, 39, 40
    +href="glossaries-extra-manual.html#dx1-28090" >36, 37, 38, 39, 40, 41
        long-hyphen-postshort-hyphen-desc  41
    +href="glossaries-extra-manual.html#dx1-30268" >42
        long-hyphen-short-hyphen  42, 43, 44, 45, 46
    +href="glossaries-extra-manual.html#dx1-30246" >43, 44, 45, 46, 47
        long-hyphen-short-hyphen-desc  47, 48
    +href="glossaries-extra-manual.html#dx1-30256" >48, 49
        long-noshort  49, 50, 51, 52, 53, 54, 55, 56, 57
    +href="glossaries-extra-manual.html#dx1-14042" >50, 51, 52, 53, 54, 55, 56, 57, 58
        long-noshort-desc  58, 59, 60, 61, 62, 63, 64, 65, 66, 67
    -    long-noshort-desc-noreg  68
    +href="glossaries-extra-manual.html#dx1-13040" >59, 60, 61, 62, 63, 64, 65, 66, 67, 68
    +    long-noshort-desc-noreg  69
        long-noshort-em  69
    +href="glossaries-extra-manual.html#dx1-29101" >70
        long-noshort-em-desc  70
    +href="glossaries-extra-manual.html#dx1-29075" >71
        long-noshort-noreg  71
    +href="glossaries-extra-manual.html#dx1-30048" >72
        long-noshort-sc  72, 73
    +href="glossaries-extra-manual.html#dx1-28085" >73, 74
        long-noshort-sc-desc  74, 75
    +href="glossaries-extra-manual.html#dx1-29066" >75, 76
        long-noshort-sm  76
    +href="glossaries-extra-manual.html#dx1-29097" >77
        long-noshort-sm-desc  77
    +href="glossaries-extra-manual.html#dx1-29071" >78
        long-only-short-only  78, 79, 80
    +href="glossaries-extra-manual.html#dx1-28074" >79, 80, 81
        long-only-short-only-desc  81
    +href="glossaries-extra-manual.html#dx1-30024" >82
        long-postshort-user  82, 83
    +href="glossaries-extra-manual.html#dx1-30239" >83, 84
        long-postshort-user-desc  84
    +href="glossaries-extra-manual.html#dx1-30242" >85
        long-short  85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100
    +href="glossaries-extra-manual.html#dx1-13047" >86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101
        long-short-desc  101, 102, 103, 104, 105, 106, 107, 108, 109
    +href="glossaries-extra-manual.html#dx1-14028" >102, 103, 104, 105, 106, 107, 108, 109, 110
        long-short-em  110, 111, 112, 113
    +href="glossaries-extra-manual.html#dx1-28055" >111, 112, 113, 114
        long-short-em-desc  114, 115
    +href="glossaries-extra-manual.html#dx1-30068" >115, 116
        long-short-sc  116, 117, 118, 119
    +href="glossaries-extra-manual.html#dx1-14016" >117, 118, 119, 120
        long-short-sc-desc  120, 121
    +href="glossaries-extra-manual.html#dx1-14030" >121, 122
        long-short-sm  122, 123, 124
    +href="glossaries-extra-manual.html#dx1-14018" >123, 124, 125
        long-short-sm-desc  125, 126
    +href="glossaries-extra-manual.html#dx1-14032" >126, 127
        long-short-user  127, 128, 129, 130, 131, 132, 133, 134, 135
    +href="glossaries-extra-manual.html#dx1-28088" >128, 129, 130, 131, 132, 133, 134, 135, 136
        long-short-user-desc  136
    +href="glossaries-extra-manual.html#dx1-30077" >137
        nolong-short  137, 138
    +href="glossaries-extra-manual.html#dx1-29010" >138, 139
        nolong-short-em  139
    +href="glossaries-extra-manual.html#dx1-29031" >140
        nolong-short-noreg  140
    +href="glossaries-extra-manual.html#dx1-30089" >141
        nolong-short-sc  141
    +href="glossaries-extra-manual.html#dx1-29017" >142
        nolong-short-sm  142
    +href="glossaries-extra-manual.html#dx1-29024" >143
        postfootnote  143
    +href="glossaries-extra-manual.html#dx1-24006" >144, 145
    +    postfootnote-desc  146
        short  144
    +href="glossaries-extra-manual.html#dx1-29008" >147
        short-desc  145
    +href="glossaries-extra-manual.html#dx1-29040" >148
        short-em  146
    +href="glossaries-extra-manual.html#dx1-29029" >149
        short-em-desc  147
    +href="glossaries-extra-manual.html#dx1-29055" >150
        short-em-footnote  148, 149
    +href="glossaries-extra-manual.html#dx1-28106" >151, 152
        short-em-footnote-desc  150
    +href="glossaries-extra-manual.html#dx1-28105" >153, 154
        short-em-long  151, 152, 153
    +href="glossaries-extra-manual.html#dx1-28056" >155, 156, 157
        short-em-long-desc  154, 155
    +href="glossaries-extra-manual.html#dx1-30133" >158, 159
        short-em-long-em  156, 157
    +href="glossaries-extra-manual.html#dx1-28061" >160, 161
        short-em-long-em-desc  158
    +href="glossaries-extra-manual.html#dx1-30136" >162
        short-em-nolong  159, 160, 161
    +href="glossaries-extra-manual.html#dx1-29026" >163, 164, 165
        short-em-nolong-desc  162, 163
    +href="glossaries-extra-manual.html#dx1-29052" >166, 167
        short-em-postfootnote  164
    +href="glossaries-extra-manual.html#dx1-30211" >168
    +    short-em-postfootnote-desc  169
        short-footnote  165, 166, 167, 168, 169, 170, 171, 172, 173, 174
    +href="glossaries-extra-manual.html#dx1-14046" >170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180
        short-footnote-desc  175
    +href="glossaries-extra-manual.html#dx1-14052" >181, 182, 183, 184, 185, 186, 187
        short-hyphen-long-hyphen  176, 177
    +href="glossaries-extra-manual.html#dx1-30271" >188, 189
    + + +     short-hyphen-long-hyphen-desc  178
    +href="glossaries-extra-manual.html#dx1-30275" >190
        short-hyphen-postlong-hyphen  179, 180
    +href="glossaries-extra-manual.html#dx1-30278" >191, 192
        short-hyphen-postlong-hyphen-desc  181
    - - - +href="glossaries-extra-manual.html#dx1-30283" >193
        short-long  182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192
    +href="glossaries-extra-manual.html#dx1-14022" >194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204
        short-long-desc  193, 194, 195, 196, 197, 198, 199
    +href="glossaries-extra-manual.html#dx1-14036" >205, 206, 207, 208, 209, 210, 211
        short-long-user  200, 201, 202, 203, 204, 205, 206
    +href="glossaries-extra-manual.html#dx1-30038" >212, 213, 214, 215, 216, 217, 218
        short-long-user-desc  207
    +href="glossaries-extra-manual.html#dx1-30139" >219
        short-nolong  208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221
    +href="glossaries-extra-manual.html#dx1-24021" >220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233
        short-nolong-desc  222, 223, 224, 225, 226
    +href="glossaries-extra-manual.html#dx1-29033" >234, 235, 236, 237, 238
        short-nolong-desc-noreg  227
    +href="glossaries-extra-manual.html#dx1-30118" >239
        short-nolong-noreg  228
    +href="glossaries-extra-manual.html#dx1-30086" >240
        short-postfootnote  229, 230, 231, 232, 233, 234, 235
    +href="glossaries-extra-manual.html#dx1-9062" >241, 242, 243, 244, 245, 246, 247, 248
    +    short-postfootnote-desc  249, 250, 251, 252, 253
        short-postlong-user  236, 237, 238
    +href="glossaries-extra-manual.html#dx1-30232" >254, 255, 256
        short-postlong-user-desc  239
    +href="glossaries-extra-manual.html#dx1-30235" >257
        short-sc  240
    +href="glossaries-extra-manual.html#dx1-29015" >258
        short-sc-desc  241
    +href="glossaries-extra-manual.html#dx1-29045" >259
        short-sc-footnote  242, 243, 244
    +href="glossaries-extra-manual.html#dx1-14048" >260, 261, 262
        short-sc-footnote-desc  245
    +href="glossaries-extra-manual.html#dx1-14054" >263, 264
        short-sc-long  246, 247, 248, 249
    +href="glossaries-extra-manual.html#dx1-14024" >265, 266, 267, 268
        short-sc-long-desc  250, 251
    +href="glossaries-extra-manual.html#dx1-14038" >269, 270
        short-sc-nolong  252, 253, 254
    +href="glossaries-extra-manual.html#dx1-29012" >271, 272, 273
        short-sc-nolong-desc  255, 256
    +href="glossaries-extra-manual.html#dx1-29042" >274, 275
        short-sc-postfootnote  257, 258
    +href="glossaries-extra-manual.html#dx1-28099" >276, 277
    +    short-sc-postfootnote-desc  278
        short-sm  259
    +href="glossaries-extra-manual.html#dx1-29022" >279
        short-sm-desc  260
    +href="glossaries-extra-manual.html#dx1-29050" >280
        short-sm-footnote  261
    +href="glossaries-extra-manual.html#dx1-14050" >281
        short-sm-footnote-desc  262
    +href="glossaries-extra-manual.html#dx1-14056" >282, 283
        short-sm-long  263, 264, 265
    +href="glossaries-extra-manual.html#dx1-14026" >284, 285, 286
        short-sm-long-desc  266, 267
    +href="glossaries-extra-manual.html#dx1-14040" >287, 288
        short-sm-nolong  268, 269, 270
    +href="glossaries-extra-manual.html#dx1-29019" >289, 290, 291
        short-sm-nolong-desc  271, 272
    +href="glossaries-extra-manual.html#dx1-29047" >292, 293
        short-sm-postfootnote  273
    +href="glossaries-extra-manual.html#dx1-30207" >294
    +    short-sm-postfootnote-desc  295
    \abbreviationsname  274
    +href="glossaries-extra-manual.html#dx1-4199" >296
    \abbrvpluralsuffix  275
    +href="glossaries-extra-manual.html#dx1-31043" >297
    acronym styles (glossaries):
        dua  276
    +href="glossaries-extra-manual.html#dx1-14041" >298
        dua-desc  277
    +href="glossaries-extra-manual.html#dx1-14043" >299
        footnote  278
    +href="glossaries-extra-manual.html#dx1-14045" >300
        footnote-desc  279
    +href="glossaries-extra-manual.html#dx1-14051" >301
        footnote-sc  280
    +href="glossaries-extra-manual.html#dx1-14047" >302
        footnote-sc-desc  281
    +href="glossaries-extra-manual.html#dx1-14053" >303
        footnote-sm  282
    +href="glossaries-extra-manual.html#dx1-14049" >304
        footnote-sm-desc  283
    +href="glossaries-extra-manual.html#dx1-14055" >305
    + + +     long-sc-short  284
    +href="glossaries-extra-manual.html#dx1-14015" >306
        long-sc-short-desc  285
    +href="glossaries-extra-manual.html#dx1-14029" >307
        long-short-desc  286
    +href="glossaries-extra-manual.html#dx1-14027" >308
        long-sm-short  287
    +href="glossaries-extra-manual.html#dx1-14017" >309
        long-sm-short-desc  288
    +href="glossaries-extra-manual.html#dx1-14031" >310
        long-sp-short  289, 290
    - - - +href="glossaries-extra-manual.html#dx1-14019" >311, 312
        long-sp-short-desc  291
    +href="glossaries-extra-manual.html#dx1-14033" >313
        sc-short-long  292
    +href="glossaries-extra-manual.html#dx1-14023" >314
        sc-short-long-desc  293
    +href="glossaries-extra-manual.html#dx1-14037" >315
        short-long  294
    +href="glossaries-extra-manual.html#dx1-14021" >316
        short-long-desc  295
    +href="glossaries-extra-manual.html#dx1-14035" >317
        sm-short-long  296
    +href="glossaries-extra-manual.html#dx1-14025" >318
        sm-short-long-desc  297
    +href="glossaries-extra-manual.html#dx1-14039" >319
    amsgen package  298
    +href="glossaries-extra-manual.html#dx1-10" >320
    amsmath package  299
    +href="glossaries-extra-manual.html#dx1-4135" >321
    \apptoglossarypreamble  300
    +href="glossaries-extra-manual.html#dx1-49010" >322

    B babel package  301, 302, 303, 304, 305, 306, 307, 308, 309
    +href="glossaries-extra-manual.html#dx1-3010" >323, 324, 325, 326, 327, 328, 329, 330, 331
    bib2gls  310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419
    +href="glossaries-extra-manual.html#dx1-41003" >386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444

    C categories:
        abbreviation  420, 421, 422, 423, 424
    +href="glossaries-extra-manual.html#dx1-10004" >445, 446, 447, 448, 449
        acronym  425, 426, 427, 428, 429
    +href="glossaries-extra-manual.html#dx1-17035" >450, 451, 452, 453, 454
        general  430, 431, 432, 433, 434, 435, 436, 437
    +href="glossaries-extra-manual.html#dx1-9037" >455, 456, 457, 458, 459, 460, 461, 462
    +    glossnamefont  463
        index  438, 439
    +href="glossaries-extra-manual.html#dx1-6030" >464, 465
        number  440
    +href="glossaries-extra-manual.html#dx1-35018" >466
        symbol  441, 442
    +href="glossaries-extra-manual.html#dx1-9045" >467, 468
    category attributes:
        accessaposplural  443, 444, 445
    +href="glossaries-extra-manual.html#dx1-35138" >469, 470, 471, 472
        accessinsertdots  446
    +href="glossaries-extra-manual.html#dx1-35137" >473, 474
        accessnoshortplural  447
    +href="glossaries-extra-manual.html#dx1-35139" >475, 476
        aposplural  448, 449, 450, 451, 452, 453, 454, 455
    +href="glossaries-extra-manual.html#dx1-12036" >477, 478, 479, 480, 481, 482, 483, 484
        discardperiod  456, 457, 458, 459, 460
    +href="glossaries-extra-manual.html#dx1-9032" >485, 486, 487, 488, 489
        dualindex  461, 462, 463, 464, 465, 466, 467
    +href="glossaries-extra-manual.html#dx1-35118" >490, 491, 492, 493, 494, 495, 496
        entrycount  468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478
    +href="glossaries-extra-manual.html#dx1-10003" >497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507
        externallocation  479, 480, 481, 482
    +href="glossaries-extra-manual.html#dx1-7061" >508, 509, 510, 511
        firstshortaccess  483
    +href="glossaries-extra-manual.html#dx1-35169" >512
        glossdesc  484, 485, 486
    +href="glossaries-extra-manual.html#dx1-17005" >513, 514, 515
        glossdescfont  487, 488
    +href="glossaries-extra-manual.html#dx1-17006" >516, 517, 518
        glossname  489, 490, 491
    +href="glossaries-extra-manual.html#dx1-17003" >519, 520, 521
    + + +     glossnamefont  492, 493, 494
    +href="glossaries-extra-manual.html#dx1-17022" >522, 523, 524, 525
    +    glosssymbolfont  526, 527
        headuc  495, 496, 497, 498
    +href="glossaries-extra-manual.html#dx1-13059" >528, 529, 530, 531
        hyperoutside  499, 500
    +href="glossaries-extra-manual.html#dx1-7019" >532, 533
        indexname  501, 502, 503, 504, 505
    +href="glossaries-extra-manual.html#dx1-17027" >534, 535, 536, 537, 538
        indexonlyfirst  506, 507, 508
    +href="glossaries-extra-manual.html#dx1-7007" >539, 540, 541
        insertdots  509, 510, 511, 512
    +href="glossaries-extra-manual.html#dx1-24013" >542, 543, 544, 545
        linkcount  513, 514, 515
    - - - +href="glossaries-extra-manual.html#dx1-35090" >546, 547, 548
        linkcountmaster  516, 517
    +href="glossaries-extra-manual.html#dx1-35092" >549, 550
        markshortwords  518, 519
    +href="glossaries-extra-manual.html#dx1-35061" >551, 552
        markwords  520, 521, 522, 523, 524, 525
    +href="glossaries-extra-manual.html#dx1-30247" >553, 554, 555, 556, 557, 558
        nameshortaccess  526
    +href="glossaries-extra-manual.html#dx1-35163" >559
        nohyper  527, 528, 529
    +href="glossaries-extra-manual.html#dx1-35034" >560, 561, 562
        nohyperfirst  530, 531, 532, 533, 534
    +href="glossaries-extra-manual.html#dx1-30148" >563, 564, 565, 566, 567
        noshortplural  535, 536, 537, 538, 539, 540
    +href="glossaries-extra-manual.html#dx1-12037" >568, 569, 570, 571, 572, 573
        pluraldiscardperiod  541, 542
    +href="glossaries-extra-manual.html#dx1-35048" >574, 575
        recordcount  543, 544, 545, 546
    +href="glossaries-extra-manual.html#dx1-48015" >576, 577, 578, 579
        regular  547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578
    +href="glossaries-extra-manual.html#dx1-9010" >580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611
        retainfirstuseperiod  579
    +href="glossaries-extra-manual.html#dx1-35050" >612
        tagging  580, 581, 582, 583
    +href="glossaries-extra-manual.html#dx1-25002" >613, 614, 615, 616
        targetcategory  584
    +href="glossaries-extra-manual.html#dx1-35127" >617
        targetname  585, 586
    +href="glossaries-extra-manual.html#dx1-35124" >618, 619
        targeturl  587, 588, 589, 590, 591
    +href="glossaries-extra-manual.html#dx1-15002" >620, 621, 622, 623, 624
        textformat  592, 593, 594, 595, 596
    +href="glossaries-extra-manual.html#dx1-7020" >625, 626, 627, 628, 629
        textshortaccess  597
    +href="glossaries-extra-manual.html#dx1-35166" >630
        unitcount  598
    +href="glossaries-extra-manual.html#dx1-37034" >631
        wrgloss  599, 600
    +href="glossaries-extra-manual.html#dx1-7015" >632, 633
    \cGLS  601
    +href="glossaries-extra-manual.html#dx1-37015" >634
    \cGLSformat  602
    +href="glossaries-extra-manual.html#dx1-37017" >635
    \cGLSpl  603
    +href="glossaries-extra-manual.html#dx1-37016" >636
    \cGLSplformat  604
    +href="glossaries-extra-manual.html#dx1-37018" >637
    convertgls2bib  605
    +href="glossaries-extra-manual.html#dx1-40003" >638
    \csGlsXtrLetField  606
    +href="glossaries-extra-manual.html#dx1-50028" >639
    \CustomAbbreviationFields  607
    +href="glossaries-extra-manual.html#dx1-31006" >640

    D datatool package  641
    +datatool-base package  608
    +href="glossaries-extra-manual.html#dx1-9" >642, 643, 644, 645
    \dGLS  609
    +href="glossaries-extra-manual.html#dx1-47022" >646
    \dGls  610
    +href="glossaries-extra-manual.html#dx1-47020" >647
    \dgls  611
    +href="glossaries-extra-manual.html#dx1-47018" >648
    \dglsdisp  612
    +href="glossaries-extra-manual.html#dx1-47025" >649
    \dglslink  613
    +href="glossaries-extra-manual.html#dx1-47024" >650
    \dGLSpl  614
    +href="glossaries-extra-manual.html#dx1-47023" >651
    + + + \dGlspl  615
    +href="glossaries-extra-manual.html#dx1-47021" >652
    \dglspl  616
    +href="glossaries-extra-manual.html#dx1-47019" >653

    E \eglssetwidest  617
    +href="glossaries-extra-manual.html#dx1-19070" >654
    \eglsupdatewidest  618
    +href="glossaries-extra-manual.html#dx1-19074" >655
    \eGlsXtrSetField  619
    +href="glossaries-extra-manual.html#dx1-50025" >656
    entry location  620, 621, 622
    - - - +href="glossaries-extra-manual.html#dx1-60004" >657, 658, 659
    entrycounter package  623
    +href="glossaries-extra-manual.html#dx1-52020" >660
    equation (counter)  624, 625, 626, 627, 628
    +href="glossaries-extra-manual.html#dx1-4112" >661, 662, 663, 664, 665
    etoolbox package  629, 630, 631, 632, 633, 634, 635, 636, 637
    +href="glossaries-extra-manual.html#dx1-5" >666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676

    F fancyhdr package  638
    +href="glossaries-extra-manual.html#dx1-21049" >677
    +file types
    +    glg-abr  678
    +    glo-abr  679
    +    gls-abr  680
    first use  639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691
    +href="glossaries-extra-manual.html#dx1-7005" >681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734
    first use flag  692, 693, 694, 695, 696, 697, 698
    +href="glossaries-extra-manual.html#dx1-9052" >735, 736, 737, 738, 739, 740, 741
    first use text  699, 700
    +href="glossaries-extra-manual.html#dx1-60015" >742, 743
    fontenc package  701
    +href="glossaries-extra-manual.html#dx1-28024" >744
    +\forallabbreviationlists  745

    G \gglssetwidest  702
    +href="glossaries-extra-manual.html#dx1-19068" >746
    \gglsupdatewidest  703
    +href="glossaries-extra-manual.html#dx1-19073" >747
    \gGlsXtrSetField  704
    +href="glossaries-extra-manual.html#dx1-50024" >748
    glossaries package  705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724
    +href="glossaries-extra-manual.html#dx1-6018" >749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767
    glossaries-accsupp package  725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741
    +href="glossaries-extra-manual.html#dx1-4036" >768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789
    glossaries-extra package  742, 743, 744, 745, 746, 747
    +href="glossaries-extra-manual.html#dx1-6020" >790, 791, 792, 793, 794, 795, 796
    glossaries-extra-bib2gls package  748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761
    +href="glossaries-extra-manual.html#dx1-4080" >797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811
    glossaries-extra-stylemods package  762, 763, 764, 765, 766, 767, 768, 769, 770
    +href="glossaries-extra-manual.html#dx1-4026" >812, 813, 814, 815, 816, 817, 818, 819, 820
    glossaries-prefix package  771, 772, 773
    +href="glossaries-extra-manual.html#dx1-4034" >821, 822, 823, 824
    \glossariesextrasetup  774
    +href="glossaries-extra-manual.html#dx1-4255" >825
    glossary styles:
        altlist  775, 776
    +href="glossaries-extra-manual.html#dx1-19023" >826, 827
        alttree  777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789
    +href="glossaries-extra-manual.html#dx1-19057" >828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840
        bookindex  790, 791, 792, 793
    +href="glossaries-extra-manual.html#dx1-21002" >841, 842, 843, 844
        index  794
    +href="glossaries-extra-manual.html#dx1-19045" >845
        inline  795, 796
    +href="glossaries-extra-manual.html#dx1-19006" >846, 847
    + + +     list  797, 798, 799
    +href="glossaries-extra-manual.html#dx1-19018" >848, 849, 850
        listdotted  800, 801
    +href="glossaries-extra-manual.html#dx1-19024" >851, 852
        long  802
    +href="glossaries-extra-manual.html#dx1-19012" >853
        long-desc-name  803
    +href="glossaries-extra-manual.html#dx1-22066" >854
        long-desc-sym-name  804
    +href="glossaries-extra-manual.html#dx1-22133" >855
        long-loc-desc-name  805
    +href="glossaries-extra-manual.html#dx1-22075" >856
        long-loc-desc-sym-name  806
    +href="glossaries-extra-manual.html#dx1-22141" >857
        long-loc-sym-desc-name  807
    +href="glossaries-extra-manual.html#dx1-22125" >858
        long-name-desc  808, 809, 810
    +href="glossaries-extra-manual.html#dx1-22044" >859, 860, 861
        long-name-desc-loc  811
    +href="glossaries-extra-manual.html#dx1-22057" >862
        long-name-desc-sym  812, 813
    +href="glossaries-extra-manual.html#dx1-22083" >863, 864
        long-name-desc-sym-loc  814, 815
    +href="glossaries-extra-manual.html#dx1-22091" >865, 866
        long-name-sym-desc  816
    +href="glossaries-extra-manual.html#dx1-22099" >867
        long-name-sym-desc-loc  817
    +href="glossaries-extra-manual.html#dx1-22108" >868
        long-sym-desc-name  818
    - - - +href="glossaries-extra-manual.html#dx1-22117" >869
        long3col  819
    +href="glossaries-extra-manual.html#dx1-19004" >870
        longragged-booktabs  820, 821
    +href="glossaries-extra-manual.html#dx1-22045" >871, 872
        mcolindexgroup  822
    +href="glossaries-extra-manual.html#dx1-21003" >873
        topic  823, 824
    +href="glossaries-extra-manual.html#dx1-23006" >874, 875
        topicmcols  825
    +href="glossaries-extra-manual.html#dx1-23009" >876
        tree  826, 827, 828, 829
    +href="glossaries-extra-manual.html#dx1-19046" >877, 878, 879, 880
        treenoname  830, 831, 832
    +href="glossaries-extra-manual.html#dx1-19051" >881, 882, 883
    glossary-bookindex package  833, 834
    +href="glossaries-extra-manual.html#dx1-21001" >884, 885
    glossary-inline package  835
    +href="glossaries-extra-manual.html#dx1-19007" >886
    glossary-long package  836, 837
    +href="glossaries-extra-manual.html#dx1-22018" >887, 888
    glossary-longextra package  838, 839
    +href="glossaries-extra-manual.html#dx1-22001" >889, 890
    glossary-topic package  840
    +href="glossaries-extra-manual.html#dx1-23001" >891
    glossary-tree package  841, 842, 843, 844, 845, 846
    +href="glossaries-extra-manual.html#dx1-19034" >892, 893, 894, 895, 896, 897
    \glossentrynameother  847
    +href="glossaries-extra-manual.html#dx1-17020" >898
    \glossxtrsetpopts  848
    +href="glossaries-extra-manual.html#dx1-13058" >899
    \glsabbrvdefaultfont  849, 850
    +href="glossaries-extra-manual.html#dx1-28033" >900, 901
    \glsabbrvemfont  851
    +href="glossaries-extra-manual.html#dx1-28057" >902
    \glsabbrvfont  852
    +href="glossaries-extra-manual.html#dx1-31047" >903
    \glsabbrvhyphenfont  853
    +href="glossaries-extra-manual.html#dx1-28069" >904
    \glsabbrvonlyfont  854
    +href="glossaries-extra-manual.html#dx1-28075" >905
    \glsabbrvscfont  855
    +href="glossaries-extra-manual.html#dx1-28041" >906
    \glsabbrvsmfont  856
    +href="glossaries-extra-manual.html#dx1-28051" >907
    \glsabbrvuserfont  857, 858
    +href="glossaries-extra-manual.html#dx1-28064" >908, 909
    \Glsaccessdesc  859
    +href="glossaries-extra-manual.html#dx1-57042" >910
    \glsaccessdesc  860
    +href="glossaries-extra-manual.html#dx1-57040" >911
    \Glsaccessdescplural  861
    +href="glossaries-extra-manual.html#dx1-57046" >912
    \glsaccessdescplural  862
    +href="glossaries-extra-manual.html#dx1-57044" >913
    \Glsaccessfirst  863
    +href="glossaries-extra-manual.html#dx1-57026" >914
    \glsaccessfirst  864
    +href="glossaries-extra-manual.html#dx1-57024" >915
    \Glsaccessfirstplural  865
    +href="glossaries-extra-manual.html#dx1-57030" >916
    \glsaccessfirstplural  866
    +href="glossaries-extra-manual.html#dx1-57028" >917
    + + + \Glsaccesslong  867
    +href="glossaries-extra-manual.html#dx1-57058" >918
    \glsaccesslong  868
    +href="glossaries-extra-manual.html#dx1-57056" >919
    \Glsaccesslongpl  869
    +href="glossaries-extra-manual.html#dx1-57062" >920
    \glsaccesslongpl  870
    +href="glossaries-extra-manual.html#dx1-57060" >921
    \Glsaccessname  871
    +href="glossaries-extra-manual.html#dx1-57013" >922
    \glsaccessname  872
    +href="glossaries-extra-manual.html#dx1-57008" >923
    \Glsaccessplural  873
    +href="glossaries-extra-manual.html#dx1-57022" >924
    \glsaccessplural  874
    +href="glossaries-extra-manual.html#dx1-57020" >925
    \Glsaccessshort  875
    +href="glossaries-extra-manual.html#dx1-57050" >926
    \glsaccessshort  876
    +href="glossaries-extra-manual.html#dx1-57048" >927
    \Glsaccessshortpl  877
    +href="glossaries-extra-manual.html#dx1-57054" >928
    \glsaccessshortpl  878
    +href="glossaries-extra-manual.html#dx1-57052" >929
    \Glsaccesssymbol  879
    +href="glossaries-extra-manual.html#dx1-57034" >930
    \glsaccesssymbol  880
    +href="glossaries-extra-manual.html#dx1-57032" >931
    \Glsaccesssymbolplural  881
    - - - +href="glossaries-extra-manual.html#dx1-57038" >932
    \glsaccesssymbolplural  882
    +href="glossaries-extra-manual.html#dx1-57036" >933
    \Glsaccesstext  883
    +href="glossaries-extra-manual.html#dx1-57018" >934
    \glsaccesstext  884
    +href="glossaries-extra-manual.html#dx1-57016" >935
    \glsacspace  885
    +href="glossaries-extra-manual.html#dx1-14064" >936
    \glsacspacemax  886
    +href="glossaries-extra-manual.html#dx1-14066" >937
    \glsadd options
        format  887
    +href="glossaries-extra-manual.html#dx1-7035" >938
        theHvalue  888, 889
    +href="glossaries-extra-manual.html#dx1-7047" >939, 940
        thevalue  890, 891, 892, 893, 894
    +href="glossaries-extra-manual.html#dx1-7046" >941, 942, 943, 944, 945
    \glsaddeach  895
    +href="glossaries-extra-manual.html#dx1-7001" >946
    \glsaddpostsetkeys  896
    +href="glossaries-extra-manual.html#dx1-7042" >947
    \glsaddpresetkeys  897
    +href="glossaries-extra-manual.html#dx1-7041" >948
    \glscapturedgroup  898
    +href="glossaries-extra-manual.html#dx1-46002" >949
    \glscategory  899
    +href="glossaries-extra-manual.html#dx1-35019" >950
    \glscategorylabel  900
    +href="glossaries-extra-manual.html#dx1-31039" >951
    \glscurrententrylabel  901
    +href="glossaries-extra-manual.html#dx1-17037" >952
    \glscurrentfieldvalue  902
    +href="glossaries-extra-manual.html#dx1-50032" >953
    +\glsdefaultshortaccess  954
    \glsdefpostdesc  903
    +href="glossaries-extra-manual.html#dx1-17036" >955
    \glsdefpostlink  904
    +href="glossaries-extra-manual.html#dx1-9038" >956
    \glsdefpostname  905
    +href="glossaries-extra-manual.html#dx1-17030" >957
    \glsentrycurrcount  906
    +href="glossaries-extra-manual.html#dx1-37035" >958
    +\glsentrypdfsymbol  959
    \glsentryprevcount  907
    +href="glossaries-extra-manual.html#dx1-37036" >960
    \glsentryprevmaxcount  908
    +href="glossaries-extra-manual.html#dx1-37038" >961
    \glsentryprevtotalcount  909
    +href="glossaries-extra-manual.html#dx1-37037" >962
    \glsextrapostnamehook  910
    +href="glossaries-extra-manual.html#dx1-17031" >963
    \glsFindWidestAnyName  911
    +href="glossaries-extra-manual.html#dx1-19086" >964
    \glsFindWidestAnyNameLocation  912
    +href="glossaries-extra-manual.html#dx1-19098" >965
    \glsFindWidestAnyNameSymbol  913
    +href="glossaries-extra-manual.html#dx1-19090" >966
    \glsFindWidestAnyNameSymbolLocation  914
    +href="glossaries-extra-manual.html#dx1-19095" >967
    + + + \glsFindWidestLevelTwo  915
    +href="glossaries-extra-manual.html#dx1-19088" >968
    \glsFindWidestTopLevelName  916
    +href="glossaries-extra-manual.html#dx1-19081" >969
    \glsFindWidestUsedAnyName  917
    +href="glossaries-extra-manual.html#dx1-19084" >970
    \glsFindWidestUsedAnyNameLocation  918
    +href="glossaries-extra-manual.html#dx1-19096" >971
    \glsFindWidestUsedAnyNameSymbol  919
    +href="glossaries-extra-manual.html#dx1-19089" >972
    \glsFindWidestUsedAnyNameSymbolLocation  920
    +href="glossaries-extra-manual.html#dx1-19091" >973
    \glsFindWidestUsedLevelTwo  921
    +href="glossaries-extra-manual.html#dx1-19087" >974
    \glsFindWidestUsedTopLevelName  922
    +href="glossaries-extra-manual.html#dx1-19082" >975
    \glsfirstabbrvdefaultfont  923
    +href="glossaries-extra-manual.html#dx1-28034" >976
    \glsfirstabbrvemfont  924
    +href="glossaries-extra-manual.html#dx1-28058" >977
    \glsfirstabbrvfont  925
    +href="glossaries-extra-manual.html#dx1-31045" >978
    \glsfirstabbrvhyphenfont  926
    +href="glossaries-extra-manual.html#dx1-28070" >979
    \glsfirstabbrvonlyfont  927
    +href="glossaries-extra-manual.html#dx1-28076" >980
    \glsfirstabbrvsmfont  928
    +href="glossaries-extra-manual.html#dx1-28053" >981
    \glsfirstabbrvuserfont  929
    +href="glossaries-extra-manual.html#dx1-28065" >982
    \glsfirstlongdefaultfont  930
    +href="glossaries-extra-manual.html#dx1-28036" >983
    \glsfirstlongemfont  931
    - - - +href="glossaries-extra-manual.html#dx1-28062" >984
    \glsfirstlongfont  932
    +href="glossaries-extra-manual.html#dx1-31049" >985
    \glsfirstlongfootnotefont  933
    +href="glossaries-extra-manual.html#dx1-30155" >986
    \glsfirstlonghyphenfont  934
    +href="glossaries-extra-manual.html#dx1-28072" >987
    \glsfirstlongonlyfont  935
    +href="glossaries-extra-manual.html#dx1-28078" >988
    \glsfirstlonguserfont  936
    +href="glossaries-extra-manual.html#dx1-28067" >989
    +\GLSfmtfirst  990
    \Glsfmtfirst  937
    +href="glossaries-extra-manual.html#dx1-34043" >991
    \glsfmtfirst  938
    +href="glossaries-extra-manual.html#dx1-34042" >992
    +\GLSfmtfirstpl  993
    \Glsfmtfirstpl  939
    +href="glossaries-extra-manual.html#dx1-34046" >994
    \glsfmtfirstpl  940
    +href="glossaries-extra-manual.html#dx1-34045" >995
    +\GLSfmtfull  996
    \Glsfmtfull  941
    +href="glossaries-extra-manual.html#dx1-34026" >997
    \glsfmtfull  942
    +href="glossaries-extra-manual.html#dx1-34024" >998
    +\GLSfmtfullpl  999
    \Glsfmtfullpl  943
    +href="glossaries-extra-manual.html#dx1-34027" >1000
    \glsfmtfullpl  944
    +href="glossaries-extra-manual.html#dx1-34025" >1001
    +\GLSfmtlong  1002
    \Glsfmtlong  945
    +href="glossaries-extra-manual.html#dx1-34018" >1003
    \glsfmtlong  946
    +href="glossaries-extra-manual.html#dx1-34016" >1004
    +\GLSfmtlongpl  1005
    \Glsfmtlongpl  947
    +href="glossaries-extra-manual.html#dx1-34019" >1006
    \glsfmtlongpl  948
    +href="glossaries-extra-manual.html#dx1-34017" >1007
    +\GLSfmtname  1008
    \Glsfmtname  949
    +href="glossaries-extra-manual.html#dx1-34039" >1009
    \glsfmtname  950
    +href="glossaries-extra-manual.html#dx1-34038" >1010
    +\GLSfmtplural  1011
    \Glsfmtplural  951
    +href="glossaries-extra-manual.html#dx1-34035" >1012
    \glsfmtplural  952
    +href="glossaries-extra-manual.html#dx1-34034" >1013
    + + + +\GLSfmtshort  1014
    \Glsfmtshort  953
    +href="glossaries-extra-manual.html#dx1-34012" >1015
    \glsfmtshort  954
    +href="glossaries-extra-manual.html#dx1-34010" >1016
    \Glsfmtshortpl  955
    +href="glossaries-extra-manual.html#dx1-34013" >1017, 1018
    \glsfmtshortpl  956
    +href="glossaries-extra-manual.html#dx1-34011" >1019
    +\GLSfmttext  1020
    \Glsfmttext  957
    +href="glossaries-extra-manual.html#dx1-34032" >1021
    \glsfmttext  958
    +href="glossaries-extra-manual.html#dx1-34031" >1022
    \glsforeachwithattribute  959
    +href="glossaries-extra-manual.html#dx1-35194" >1023
    \glsgetattribute  960
    +href="glossaries-extra-manual.html#dx1-35177" >1024
    \glsgetcategoryattribute  961
    +href="glossaries-extra-manual.html#dx1-35176" >1025
    \glsgetwidestname  962
    +href="glossaries-extra-manual.html#dx1-19076" >1026
    \glsgetwidestsubname  963
    +href="glossaries-extra-manual.html#dx1-19077" >1027
    \glshasattribute  964
    +href="glossaries-extra-manual.html#dx1-35180" >1028
    \glshascategoryattribute  965
    +href="glossaries-extra-manual.html#dx1-35178" >1029
    \glshex  966
    +href="glossaries-extra-manual.html#dx1-46001" >1030
    \glsifattribute  967
    +href="glossaries-extra-manual.html#dx1-35185" >1031
    \glsifcategory  968
    +href="glossaries-extra-manual.html#dx1-35020" >1032
    \glsifcategoryattribute  969
    +href="glossaries-extra-manual.html#dx1-35181" >1033
    \glsifnotregular  970
    +href="glossaries-extra-manual.html#dx1-35192" >1034
    \glsifnotregularcategory  971
    +href="glossaries-extra-manual.html#dx1-35191" >1035
    \glsifregular  972
    +href="glossaries-extra-manual.html#dx1-35188" >1036
    \glsifregularcategory  973
    +href="glossaries-extra-manual.html#dx1-35187" >1037
    \glskeylisttok  974
    +href="glossaries-extra-manual.html#dx1-31037" >1038
    \glslabeltok  975
    +href="glossaries-extra-manual.html#dx1-31036" >1039
    \glslink options
        counter  976, 977
    - - - +href="glossaries-extra-manual.html#dx1-4117" >1040, 1041
        format  978, 979, 980, 981
    +href="glossaries-extra-manual.html#dx1-7058" >1042, 1043, 1044, 1045
        hyper  982, 983, 984
    +href="glossaries-extra-manual.html#dx1-13055" >1046, 1047, 1048
        hyper=false  985
    +href="glossaries-extra-manual.html#dx1-34005" >1049
        hyperoutside  986, 987
    +href="glossaries-extra-manual.html#dx1-7018" >1050, 1051
        noindex  988, 989, 990, 991, 992, 993, 994
    +href="glossaries-extra-manual.html#dx1-7003" >1052, 1053, 1054, 1055, 1056, 1057, 1058
        prefix  995, 996
    +href="glossaries-extra-manual.html#dx1-7025" >1059, 1060
        textformat  997, 998
    +href="glossaries-extra-manual.html#dx1-7022" >1061, 1062
        theHvalue  999, 1000
    +href="glossaries-extra-manual.html#dx1-7028" >1063, 1064
        thevalue  1001, 1002
    +href="glossaries-extra-manual.html#dx1-7027" >1065, 1066
        wrgloss  1003, 1004, 1005, 1006
    +href="glossaries-extra-manual.html#dx1-7011" >1067, 1068, 1069, 1070
    \glslinkcheckfirsthyperhook  1007
    +href="glossaries-extra-manual.html#dx1-37042" >1071
    \glslinkpresetkeys  1008
    +href="glossaries-extra-manual.html#dx1-7039" >1072
    \glslistchildpostlocation  1009
    +href="glossaries-extra-manual.html#dx1-19029" >1073
    \glslistchildprelocation  1010
    +href="glossaries-extra-manual.html#dx1-19020" >1074
    \glslistdesc  1011
    +href="glossaries-extra-manual.html#dx1-19021" >1075
    \glslistgroupskip  1012
    +href="glossaries-extra-manual.html#dx1-19032" >1076
    \glslistprelocation  1013
    +href="glossaries-extra-manual.html#dx1-19019" >1077
    \glslocalreseteach  1014
    +href="glossaries-extra-manual.html#dx1-11010" >1078
    \glslocalunseteach  1015
    +href="glossaries-extra-manual.html#dx1-11011" >1079
    + + + \glslongdefaultfont  1016
    +href="glossaries-extra-manual.html#dx1-28035" >1080
    \glslongemfont  1017
    +href="glossaries-extra-manual.html#dx1-28063" >1081
    \glslongextraDescAlign  1018
    +href="glossaries-extra-manual.html#dx1-22020" >1082
    \glslongextraDescFmt  1019
    +href="glossaries-extra-manual.html#dx1-22036" >1083
    \glslongextraDescNameHeader  1020
    +href="glossaries-extra-manual.html#dx1-22070" >1084
    \glslongextraDescNameTabularFooter  1021
    +href="glossaries-extra-manual.html#dx1-22074" >1085
    \glslongextraDescNameTabularHeader  1022
    +href="glossaries-extra-manual.html#dx1-22073" >1086
    \glslongextraDescSymNameHeader  1023
    +href="glossaries-extra-manual.html#dx1-22136" >1087
    \glslongextraDescSymNameTabularFooter  1024
    +href="glossaries-extra-manual.html#dx1-22140" >1088
    \glslongextraDescSymNameTabularHeader  1025
    +href="glossaries-extra-manual.html#dx1-22139" >1089
    \glslongextraGroupHeading  1026
    +href="glossaries-extra-manual.html#dx1-22043" >1090
    \glslongextraHeaderFmt  1027
    +href="glossaries-extra-manual.html#dx1-22010" >1091
    \glslongextraLocationAlign  1028
    +href="glossaries-extra-manual.html#dx1-22016" >1092
    \glslongextraLocationDescNameHeader  1029
    +href="glossaries-extra-manual.html#dx1-22078" >1093
    \glslongextraLocationDescNameTabularFooter  1030
    +href="glossaries-extra-manual.html#dx1-22082" >1094
    \glslongextraLocationDescNameTabularHeader  1031
    +href="glossaries-extra-manual.html#dx1-22081" >1095
    \glslongextraLocationDescSymNameHeader  1032
    +href="glossaries-extra-manual.html#dx1-22144" >1096
    \glslongextraLocationDescSymNameTabularFooter  1033
    +href="glossaries-extra-manual.html#dx1-22148" >1097
    \glslongextraLocationDescSymNameTabularHeader  1034
    +href="glossaries-extra-manual.html#dx1-22147" >1098
    \glslongextraLocationFmt  1035, 1036
    +href="glossaries-extra-manual.html#dx1-22038" >1099, 1100
    \glslongextraLocationSymDescNameHeader  1037
    +href="glossaries-extra-manual.html#dx1-22128" >1101
    \glslongextraLocationSymDescNameTabularFooter  1038
    +href="glossaries-extra-manual.html#dx1-22132" >1102
    \glslongextraLocationSymDescNameTabularHeader  1039
    +href="glossaries-extra-manual.html#dx1-22131" >1103
    \glslongextraLocSetDescWidth  1040
    +href="glossaries-extra-manual.html#dx1-22033" >1104
    \glslongextraNameAlign  1041
    +href="glossaries-extra-manual.html#dx1-22012" >1105
    \glslongextraNameDescHeader  1042
    +href="glossaries-extra-manual.html#dx1-22047" >1106
    \glslongextraNameDescLocationHeader  1043
    - - - +href="glossaries-extra-manual.html#dx1-22061" >1107
    \glslongextraNameDescLocationTabularFooter  1044
    +href="glossaries-extra-manual.html#dx1-22065" >1108
    \glslongextraNameDescLocationTabularHeader  1045
    +href="glossaries-extra-manual.html#dx1-22064" >1109
    \glslongextraNameDescSymHeader  1046
    +href="glossaries-extra-manual.html#dx1-22086" >1110
    \glslongextraNameDescSymLocationHeader  1047
    +href="glossaries-extra-manual.html#dx1-22094" >1111
    \glslongextraNameDescSymLocationTabularFooter  1048
    +href="glossaries-extra-manual.html#dx1-22098" >1112
    \glslongextraNameDescSymLocationTabularHeader  1049
    +href="glossaries-extra-manual.html#dx1-22097" >1113
    \glslongextraNameDescSymTabularFooter  1050
    +href="glossaries-extra-manual.html#dx1-22090" >1114
    \glslongextraNameDescSymTabularHeader  1051
    +href="glossaries-extra-manual.html#dx1-22089" >1115
    \glslongextraNameDescTabularFooter  1052
    +href="glossaries-extra-manual.html#dx1-22050" >1116
    \glslongextraNameDescTabularHeader  1053
    +href="glossaries-extra-manual.html#dx1-22049" >1117
    \glslongextraNameFmt  1054
    +href="glossaries-extra-manual.html#dx1-22035" >1118
    \glslongextraNameSymDescHeader  1055
    +href="glossaries-extra-manual.html#dx1-22103" >1119
    \glslongextraNameSymDescLocationHeader  1056
    +href="glossaries-extra-manual.html#dx1-22112" >1120
    \glslongextraNameSymDescLocationTabularFooter  1057
    +href="glossaries-extra-manual.html#dx1-22116" >1121
    \glslongextraNameSymDescLocationTabularHeader  1058
    +href="glossaries-extra-manual.html#dx1-22115" >1122
    \glslongextraNameSymDescTabularFooter  1059
    +href="glossaries-extra-manual.html#dx1-22107" >1123
    \glslongextraNameSymDescTabularHeader  1060
    +href="glossaries-extra-manual.html#dx1-22106" >1124
    \glslongextraSetDescWidth  1061
    +href="glossaries-extra-manual.html#dx1-22023" >1125
    \glslongextraSetWidest  1062
    +href="glossaries-extra-manual.html#dx1-22024" >1126
    + + + \glslongextraSubDescFmt  1063
    +href="glossaries-extra-manual.html#dx1-22040" >1127
    \glslongextraSubNameFmt  1064
    +href="glossaries-extra-manual.html#dx1-22039" >1128
    \glslongextraSubSymbolFmt  1065
    +href="glossaries-extra-manual.html#dx1-22041" >1129
    \glslongextraSymbolAlign  1066
    +href="glossaries-extra-manual.html#dx1-22014" >1130
    \glslongextraSymbolFmt  1067
    +href="glossaries-extra-manual.html#dx1-22037" >1131
    \glslongextraSymDescNameHeader  1068
    +href="glossaries-extra-manual.html#dx1-22120" >1132
    \glslongextraSymDescNameTabularFooter  1069
    +href="glossaries-extra-manual.html#dx1-22124" >1133
    \glslongextraSymDescNameTabularHeader  1070
    +href="glossaries-extra-manual.html#dx1-22123" >1134
    \glslongextraSymLocSetDescWidth  1071
    +href="glossaries-extra-manual.html#dx1-22034" >1135
    \glslongextraSymSetDescWidth  1072
    +href="glossaries-extra-manual.html#dx1-22032" >1136
    \glslongextraTabularVAlign  1073
    +href="glossaries-extra-manual.html#dx1-22009" >1137
    \glslongextraUpdateWidest  1074
    +href="glossaries-extra-manual.html#dx1-22025" >1138
    \glslongextraUpdateWidestChild  1075
    +href="glossaries-extra-manual.html#dx1-22031" >1139
    \GlsLongExtraUseTabulartrue  1076
    +href="glossaries-extra-manual.html#dx1-22008" >1140
    \glslongfont  1077
    +href="glossaries-extra-manual.html#dx1-31050" >1141
    \glslongfootnotefont  1078
    +href="glossaries-extra-manual.html#dx1-30157" >1142
    \glslonghyphenfont  1079
    +href="glossaries-extra-manual.html#dx1-28071" >1143
    \glslongonlyfont  1080
    +href="glossaries-extra-manual.html#dx1-28077" >1144
    \glslongpltok  1081
    +href="glossaries-extra-manual.html#dx1-31029" >1145
    \glslongtok  1082
    +href="glossaries-extra-manual.html#dx1-31028" >1146
    \glslonguserfont  1083
    +href="glossaries-extra-manual.html#dx1-28066" >1147
    \glsnoidxdisplayloc  1084
    +href="glossaries-extra-manual.html#dx1-18014" >1148
    +\glspdffmtfull  1149
    +\glspdffmtfullpl  1150
    \glsps  1085
    +href="glossaries-extra-manual.html#dx1-13053" >1151
    \glspt  1086
    +href="glossaries-extra-manual.html#dx1-13054" >1152
    \glsrenewcommand  1087
    +href="glossaries-extra-manual.html#dx1-43027" >1153
    \glsseeitemformat  1088
    +href="glossaries-extra-manual.html#dx1-8036" >1154
    \glssetattribute  1089
    - - - +href="glossaries-extra-manual.html#dx1-35175" >1155
    \glssetcategoryattribute  1090
    +href="glossaries-extra-manual.html#dx1-35172" >1156
    \glssetregularcategory  1091
    +href="glossaries-extra-manual.html#dx1-35174" >1157
    \glsshortpltok  1092
    +href="glossaries-extra-manual.html#dx1-31025" >1158
    \glsshorttok  1093
    +href="glossaries-extra-manual.html#dx1-31024" >1159
    \glstopicAssignSubIndent  1094
    +href="glossaries-extra-manual.html#dx1-23029" >1160
    \glstopicAssignWidest  1095
    +href="glossaries-extra-manual.html#dx1-23030" >1161
    \glstopicCols  1096
    +href="glossaries-extra-manual.html#dx1-23014" >1162
    \glstopicColsEnv  1097
    +href="glossaries-extra-manual.html#dx1-23013" >1163
    \glstopicDesc  1098
    +href="glossaries-extra-manual.html#dx1-23026" >1164
    \glstopicGroupHeading  1099
    +href="glossaries-extra-manual.html#dx1-23018" >1165
    \glstopicInit  1100
    +href="glossaries-extra-manual.html#dx1-23017" >1166
    \glstopicItem  1101
    +href="glossaries-extra-manual.html#dx1-23020" >1167
    \glstopicLoc  1102
    +href="glossaries-extra-manual.html#dx1-23028" >1168
    \glstopicMarker  1103
    +href="glossaries-extra-manual.html#dx1-23022" >1169
    \glstopicMidSkip  1104
    +href="glossaries-extra-manual.html#dx1-23025" >1170
    \glstopicParIndent  1105
    +href="glossaries-extra-manual.html#dx1-23015" >1171
    \glstopicPostSkip  1106
    +href="glossaries-extra-manual.html#dx1-23027" >1172
    + + + \glstopicPreSkip  1107
    +href="glossaries-extra-manual.html#dx1-23021" >1173
    \glstopicSubIndent  1108
    +href="glossaries-extra-manual.html#dx1-23016" >1174
    \glstopicSubItem  1109
    +href="glossaries-extra-manual.html#dx1-23031" >1175
    \glstopicSubItemBox  1110
    +href="glossaries-extra-manual.html#dx1-23034" >1176
    \glstopicSubItemSep  1111
    +href="glossaries-extra-manual.html#dx1-23033" >1177
    \glstopicSubLoc  1112
    +href="glossaries-extra-manual.html#dx1-23036" >1178
    \glstopicSubNameFont  1113
    +href="glossaries-extra-manual.html#dx1-23032" >1179
    \glstopicSubPreLocSep  1114
    +href="glossaries-extra-manual.html#dx1-23035" >1180
    \glstopicTitle  1115
    +href="glossaries-extra-manual.html#dx1-23023" >1181
    \glstopicTitleFont  1116
    +href="glossaries-extra-manual.html#dx1-23024" >1182
    \glstreechilddesc  1117
    +href="glossaries-extra-manual.html#dx1-19060" >1183
    \glstreeChildDescLoc  1118
    +href="glossaries-extra-manual.html#dx1-19063" >1184
    \glstreechildprelocation  1119
    +href="glossaries-extra-manual.html#dx1-19049" >1185
    \glstreechildsymbol  1120
    +href="glossaries-extra-manual.html#dx1-19061" >1186
    \glstreedefaultnamefmt  1121
    +href="glossaries-extra-manual.html#dx1-19039" >1187
    \glstreedesc  1122
    +href="glossaries-extra-manual.html#dx1-19058" >1188
    \glstreeDescLoc  1123
    +href="glossaries-extra-manual.html#dx1-19062" >1189
    \glstreegroupskip  1124
    +href="glossaries-extra-manual.html#dx1-19040" >1190
    +\glstreeheadergroupskip  1191
    +\glstreeNoDescSymbolPreLocation  1192
    \glstreenonamechilddesc  1125
    +href="glossaries-extra-manual.html#dx1-19054" >1193
    \glstreenonamedesc  1126
    +href="glossaries-extra-manual.html#dx1-19050" >1194
    \glstreenonamesymbol  1127
    +href="glossaries-extra-manual.html#dx1-19052" >1195
    \glstreePreHeader  1128
    +href="glossaries-extra-manual.html#dx1-19044" >1196
    \glstreeprelocation  1129
    +href="glossaries-extra-manual.html#dx1-19048" >1197
    \glstreesymbol  1130
    +href="glossaries-extra-manual.html#dx1-19059" >1198
    \glsupdatewidest  1131
    +href="glossaries-extra-manual.html#dx1-19072" >1199
    \glsuseabbrvfont  1132
    +href="glossaries-extra-manual.html#dx1-24036" >1200
    \glsuselongfont  1133
    +href="glossaries-extra-manual.html#dx1-24037" >1201
    \glsuserdescription  1134
    +href="glossaries-extra-manual.html#dx1-30041" >1202
    \Glsxtr  1135
    - - - +href="glossaries-extra-manual.html#dx1-54014" >1203
    \glsxtr  1136
    +href="glossaries-extra-manual.html#dx1-54009" >1204
    \glsxtrabbreviationfont  1137
    +href="glossaries-extra-manual.html#dx1-9029" >1205
    \glsxtrabbrvfootnote  1138
    +href="glossaries-extra-manual.html#dx1-30158" >1206
    \glsxtrabbrvpluralsuffix  1139, 1140
    +href="glossaries-extra-manual.html#dx1-12035" >1207, 1208
    \glsxtractivatenopost  1141
    +href="glossaries-extra-manual.html#dx1-52014" >1209
    \glsxtraddallcrossrefs  1142
    +href="glossaries-extra-manual.html#dx1-8010" >1210
    \glsxtraddlabelprefix  1143
    +href="glossaries-extra-manual.html#dx1-47014" >1211
    \glsxtralias  1144
    +href="glossaries-extra-manual.html#dx1-53019" >1212
    \glsxtrAltTreeIndent  1145
    +href="glossaries-extra-manual.html#dx1-19104" >1213
    \glsxtralttreeInit  1146
    +href="glossaries-extra-manual.html#dx1-19103" >1214
    \glsxtralttreeSubSymbolDescLocation  1147
    +href="glossaries-extra-manual.html#dx1-19101" >1215
    \glsxtralttreeSymbolDescLocation  1148
    +href="glossaries-extra-manual.html#dx1-19100" >1216
    \GlsXtrAutoAddOnFormat  1149
    +href="glossaries-extra-manual.html#dx1-7002" >1217
    \glsxtrautoindex  1150
    +href="glossaries-extra-manual.html#dx1-39024" >1218
    \glsxtrautoindexassignsort  1151
    +href="glossaries-extra-manual.html#dx1-39020" >1219
    + + + \glsxtrautoindexentry  1152
    +href="glossaries-extra-manual.html#dx1-39019" >1220
    \glsxtrautoindexesc  1153
    +href="glossaries-extra-manual.html#dx1-39022" >1221
    \glsxtrBasicDigitrules  1154
    +href="glossaries-extra-manual.html#dx1-46057" >1222
    \GlsXtrBibTeXEntryAliases  1155
    +href="glossaries-extra-manual.html#dx1-46005" >1223
    \glsxtrbookindexatendgroup  1156
    +href="glossaries-extra-manual.html#dx1-21034" >1224
    \glsxtrbookindexbetween  1157
    +href="glossaries-extra-manual.html#dx1-21029" >1225
    \glsxtrbookindexbookmark  1158
    +href="glossaries-extra-manual.html#dx1-21039" >1226
    \glsxtrbookindexcols  1159
    +href="glossaries-extra-manual.html#dx1-21010" >1227
    \glsxtrbookindexcolspread  1160
    +href="glossaries-extra-manual.html#dx1-21013" >1228
    \glsxtrbookindexfirstmark  1161
    +href="glossaries-extra-manual.html#dx1-21045" >1229
    \glsxtrbookindexfirstmarkfmt  1162
    +href="glossaries-extra-manual.html#dx1-21047" >1230
    \glsxtrbookindexformatheader  1163
    +href="glossaries-extra-manual.html#dx1-21041" >1231
    \glsxtrbookindexlastmark  1164
    +href="glossaries-extra-manual.html#dx1-21046" >1232
    \glsxtrbookindexlastmarkfmt  1165
    +href="glossaries-extra-manual.html#dx1-21048" >1233
    \glsxtrbookindexlocation  1166
    +href="glossaries-extra-manual.html#dx1-21025" >1234
    \glsxtrbookindexmarkentry  1167
    +href="glossaries-extra-manual.html#dx1-21044" >1235
    \glsxtrbookindexmulticolsenv  1168
    +href="glossaries-extra-manual.html#dx1-21018" >1236
    \glsxtrbookindexname  1169
    +href="glossaries-extra-manual.html#dx1-21019" >1237
    \glsxtrbookindexparentchildsep  1170
    +href="glossaries-extra-manual.html#dx1-21027" >1238
    \glsxtrbookindexparentsubchildsep  1171
    +href="glossaries-extra-manual.html#dx1-21028" >1239
    \glsxtrbookindexprelocation  1172
    +href="glossaries-extra-manual.html#dx1-21021" >1240
    \glsxtrbookindexsubatendgroup  1173
    +href="glossaries-extra-manual.html#dx1-21033" >1241
    \glsxtrbookindexsubbetween  1174
    +href="glossaries-extra-manual.html#dx1-21030" >1242
    \glsxtrbookindexsublocation  1175
    +href="glossaries-extra-manual.html#dx1-21026" >1243
    \glsxtrbookindexsubname  1176
    +href="glossaries-extra-manual.html#dx1-21020" >1244
    \glsxtrbookindexsubprelocation  1177
    +href="glossaries-extra-manual.html#dx1-21024" >1245
    \glsxtrbookindexsubsubatendgroup  1178
    +href="glossaries-extra-manual.html#dx1-21032" >1246
    \glsxtrbookindexsubsubbetween  1179
    +href="glossaries-extra-manual.html#dx1-21031" >1247
    \glsxtrchecknohyperfirst  1180
    +href="glossaries-extra-manual.html#dx1-35033" >1248
    \glsxtrclearlabelprefixes  1181
    +href="glossaries-extra-manual.html#dx1-47016" >1249
    \glsxtrcombiningdiacriticIIIrules  1182
    - - - +href="glossaries-extra-manual.html#dx1-46049" >1250
    \glsxtrcombiningdiacriticIIrules  1183
    +href="glossaries-extra-manual.html#dx1-46048" >1251
    \glsxtrcombiningdiacriticIrules  1184
    +href="glossaries-extra-manual.html#dx1-46047" >1252
    \glsxtrcombiningdiacriticIVrules  1185
    +href="glossaries-extra-manual.html#dx1-46050" >1253
    \glsxtrcombiningdiacriticrules  1186
    +href="glossaries-extra-manual.html#dx1-46046" >1254
    \glsxtrcontrolrules  1187
    +href="glossaries-extra-manual.html#dx1-46042" >1255
    \glsxtrcopytoglossary  1188
    +href="glossaries-extra-manual.html#dx1-49007" >1256
    \glsxtrcurrencyrules  1189
    +href="glossaries-extra-manual.html#dx1-46054" >1257
    \GlsXtrDefaultResourceOptions  1190
    +href="glossaries-extra-manual.html#dx1-47004" >1258
    \glsxtrdeffield  1191
    +href="glossaries-extra-manual.html#dx1-50020" >1259
    \glsxtrdetoklocation  1192
    +href="glossaries-extra-manual.html#dx1-48004" >1260
    \glsxtrdigitrules  1193
    +href="glossaries-extra-manual.html#dx1-46056" >1261
    +\GlsXtrDiscardUnsetBuffering  1262
    \glsxtrdisplayendloc  1194
    +href="glossaries-extra-manual.html#dx1-18017" >1263
    \glsxtrdisplayendlochook  1195
    +href="glossaries-extra-manual.html#dx1-18019" >1264
    \glsxtrdisplaylocnameref  1196
    +href="glossaries-extra-manual.html#dx1-45018" >1265
    + + + \glsxtrdisplaysingleloc  1197
    +href="glossaries-extra-manual.html#dx1-18015" >1266
    \glsxtrdisplaystartloc  1198
    +href="glossaries-extra-manual.html#dx1-18016" >1267
    \glsxtrdisplaysupploc  1199
    +href="glossaries-extra-manual.html#dx1-44001" >1268
    \glsxtrdoautoindexname  1200
    +href="glossaries-extra-manual.html#dx1-39016" >1269
    \glsxtrdowrglossaryhook  1201
    +href="glossaries-extra-manual.html#dx1-7038" >1270
    \glsxtredeffield  1202
    +href="glossaries-extra-manual.html#dx1-50023" >1271
    \glsxtremsuffix  1203
    +href="glossaries-extra-manual.html#dx1-28059" >1272
    \GlsXtrEnableEntryCounting  1204
    +href="glossaries-extra-manual.html#dx1-37027" >1273
    \GlsXtrEnableEntryUnitCounting  1205
    +href="glossaries-extra-manual.html#dx1-37030" >1274
    \GlsXtrEnableIndexFormatOverride  1206
    +href="glossaries-extra-manual.html#dx1-39033" >1275
    \GlsXtrEnableInitialTagging  1207
    +href="glossaries-extra-manual.html#dx1-25001" >1276
    \GlsXtrEnableLinkCounting  1208
    +href="glossaries-extra-manual.html#dx1-38002" >1277
    \GlsXtrEnableOnTheFly  1209
    +href="glossaries-extra-manual.html#dx1-54007" >1278
    \GlsXtrEnablePreLocationTag  1210
    +href="glossaries-extra-manual.html#dx1-18010" >1279
    \glsxtrenablerecordcount  1211
    +href="glossaries-extra-manual.html#dx1-48032" >1280
    \glsxtrendfor  1212
    +href="glossaries-extra-manual.html#dx1-50075" >1281
    \glsxtrentryfmt  1213
    +href="glossaries-extra-manual.html#dx1-50008" >1282
    \GlsXtrExpandedFmt  1214
    +href="glossaries-extra-manual.html#dx1-11019" >1283
    \glsxtrfielddolistloop  1215
    +href="glossaries-extra-manual.html#dx1-50057" >1284
    \glsxtrfieldforlistloop  1216
    +href="glossaries-extra-manual.html#dx1-50058" >1285
    +\glsxtrfieldformatcsvlist  1286
    +\glsxtrfieldformatlist  1287
    \glsxtrfieldifinlist  1217
    +href="glossaries-extra-manual.html#dx1-50067" >1288
    \glsxtrfieldlistadd  1218
    +href="glossaries-extra-manual.html#dx1-50053" >1289
    \glsxtrfieldlisteadd  1219
    +href="glossaries-extra-manual.html#dx1-50055" >1290
    \glsxtrfieldlistgadd  1220
    +href="glossaries-extra-manual.html#dx1-50054" >1291
    \glsxtrfieldlistxadd  1221
    +href="glossaries-extra-manual.html#dx1-50056" >1292
    \glsxtrfieldtitlecasecs  1222
    +href="glossaries-extra-manual.html#dx1-35099" >1293
    \glsxtrfieldxifinlist  1223
    +href="glossaries-extra-manual.html#dx1-50068" >1294
    \glsxtrfmt  1224
    +href="glossaries-extra-manual.html#dx1-50002" >1295
    \glsxtrfmt*  1225
    +href="glossaries-extra-manual.html#dx1-50004" >1296
    \GlsXtrFmtDefaultOptions  1226
    +href="glossaries-extra-manual.html#dx1-50003" >1297
    \glsxtrfmtdisplay  1227
    +href="glossaries-extra-manual.html#dx1-50005" >1298
    \glsxtrfmtexternalnameref  1228
    - - - +href="glossaries-extra-manual.html#dx1-45023" >1299
    \GlsXtrFmtField  1229
    +href="glossaries-extra-manual.html#dx1-50001" >1300
    \glsxtrfmtinternalnameref  1230
    +href="glossaries-extra-manual.html#dx1-45022" >1301
    +\glsxtrfootnotedescname  1302
    +\glsxtrfootnotedescsort  1303
    \glsxtrfootnotename  1231
    +href="glossaries-extra-manual.html#dx1-30154" >1304
    \glsxtrforcsvfield  1232
    +href="glossaries-extra-manual.html#dx1-50070" >1305
    \GlsXtrForeignText  1233
    +href="glossaries-extra-manual.html#dx1-50078" >1306
    \GlsXtrForeignTextField  1234
    +href="glossaries-extra-manual.html#dx1-50077" >1307
    \GlsXtrFormatLocationList  1235
    +href="glossaries-extra-manual.html#dx1-18002" >1308
    \GlsXtrForUnsetBufferedList  1236
    +href="glossaries-extra-manual.html#dx1-11015" >1309
    \glsxtrfractionrules  1237
    +href="glossaries-extra-manual.html#dx1-46060" >1310
    \GLSxtrfull  1238
    +href="glossaries-extra-manual.html#dx1-26025" >1311
    + + + \Glsxtrfull  1239
    +href="glossaries-extra-manual.html#dx1-26022" >1312
    \glsxtrfull  1240
    +href="glossaries-extra-manual.html#dx1-26014" >1313
    \Glsxtrfullformat  1241
    +href="glossaries-extra-manual.html#dx1-31058" >1314
    \glsxtrfullformat  1242
    +href="glossaries-extra-manual.html#dx1-31054" >1315
    \GLSxtrfullpl  1243
    +href="glossaries-extra-manual.html#dx1-26034" >1316
    \Glsxtrfullpl  1244
    +href="glossaries-extra-manual.html#dx1-26033" >1317
    \glsxtrfullpl  1245
    +href="glossaries-extra-manual.html#dx1-26032" >1318
    \Glsxtrfullplformat  1246
    +href="glossaries-extra-manual.html#dx1-31066" >1319
    \glsxtrfullplformat  1247
    +href="glossaries-extra-manual.html#dx1-31062" >1320
    \glsxtrfullsep  1248
    +href="glossaries-extra-manual.html#dx1-28082" >1321
    \glsxtrGeneralLatinIIIrules  1249
    +href="glossaries-extra-manual.html#dx1-46063" >1322
    \glsxtrGeneralLatinIIrules  1250
    +href="glossaries-extra-manual.html#dx1-46062" >1323
    \glsxtrGeneralLatinIrules  1251
    +href="glossaries-extra-manual.html#dx1-46061" >1324
    \glsxtrGeneralLatinIVrules  1252
    +href="glossaries-extra-manual.html#dx1-46064" >1325
    \glsxtrGeneralLatinVIIIrules  1253
    +href="glossaries-extra-manual.html#dx1-46068" >1326
    \glsxtrGeneralLatinVIIrules  1254
    +href="glossaries-extra-manual.html#dx1-46067" >1327
    \glsxtrGeneralLatinVIrules  1255
    +href="glossaries-extra-manual.html#dx1-46066" >1328
    \glsxtrGeneralLatinVrules  1256
    +href="glossaries-extra-manual.html#dx1-46065" >1329
    \glsxtrgeneralpuncIIrules  1257
    +href="glossaries-extra-manual.html#dx1-46055" >1330
    \glsxtrgeneralpuncIrules  1258
    +href="glossaries-extra-manual.html#dx1-46053" >1331
    \glsxtrgeneralpuncrules  1259
    +href="glossaries-extra-manual.html#dx1-46052" >1332
    \glsxtrglossentry  1260
    +href="glossaries-extra-manual.html#dx1-52004" >1333
    \glsxtrglossentryother  1261
    +href="glossaries-extra-manual.html#dx1-52016" >1334
    \glsxtrgroupfield  1262
    +href="glossaries-extra-manual.html#dx1-51013" >1335
    \GLSXTRhiername  1263
    +href="glossaries-extra-manual.html#dx1-8056" >1336
    \GLSxtrhiername  1264
    +href="glossaries-extra-manual.html#dx1-8055" >1337
    \GlsXtrhiername  1265
    +href="glossaries-extra-manual.html#dx1-8054" >1338
    \Glsxtrhiername  1266
    +href="glossaries-extra-manual.html#dx1-8053" >1339
    \glsxtrhiername  1267
    +href="glossaries-extra-manual.html#dx1-8046" >1340
    \glsxtrhiernamesep  1268
    +href="glossaries-extra-manual.html#dx1-8052" >1341
    \glsxtrhyphenrules  1269
    +href="glossaries-extra-manual.html#dx1-46051" >1342
    \glsxtrhyphensuffix  1270
    +href="glossaries-extra-manual.html#dx1-28073" >1343
    \glsxtridentifyglslike  1271
    +href="glossaries-extra-manual.html#dx1-47012" >1344
    \glsxtrifcounttrigger  1272
    +href="glossaries-extra-manual.html#dx1-37021" >1345
    \glsxtrifcustomdiscardperiod  1273
    +href="glossaries-extra-manual.html#dx1-9035" >1346
    \GlsXtrIfFieldCmpNum  1274
    - - - +href="glossaries-extra-manual.html#dx1-50045" >1347
    \GlsXtrIfFieldEqNum  1275
    +href="glossaries-extra-manual.html#dx1-50044" >1348
    \GlsXtrIfFieldEqStr  1276
    +href="glossaries-extra-manual.html#dx1-50036" >1349
    \GlsXtrIfFieldEqXpStr  1277
    +href="glossaries-extra-manual.html#dx1-50038" >1350
    \GlsXtrIfFieldNonZero  1278
    +href="glossaries-extra-manual.html#dx1-50043" >1351
    \GlsXtrIfFieldUndef  1279
    +href="glossaries-extra-manual.html#dx1-50035" >1352
    +\GlsXtrIfFieldValueInCsvList  1353
    \glsxtrifhasfield  1280
    +href="glossaries-extra-manual.html#dx1-50031" >1354
    \glsxtrifhasfield*  1281
    +href="glossaries-extra-manual.html#dx1-50033" >1355
    \GlsXtrIfHasNonZeroChildCount  1282
    +href="glossaries-extra-manual.html#dx1-46004" >1356
    \glsxtrifinlabelprefixlist  1283
    +href="glossaries-extra-manual.html#dx1-47017" >1357
    + + + \glsxtrifkeydefined  1284
    +href="glossaries-extra-manual.html#dx1-50012" >1358
    \glsxtriflabelinlist  1285
    +href="glossaries-extra-manual.html#dx1-51040" >1359
    \GlsXtrIfLinkCounterDef  1286
    +href="glossaries-extra-manual.html#dx1-38008" >1360
    \glsxtrifrecordtrigger  1287
    +href="glossaries-extra-manual.html#dx1-48018" >1361
    \GlsXtrIfUnusedOrUndefined  1288
    +href="glossaries-extra-manual.html#dx1-11007" >1362
    \glsxtrifwasfirstuse  1289
    +href="glossaries-extra-manual.html#dx1-9053" >1363
    \GlsXtrIfXpFieldEqXpStr  1290
    +href="glossaries-extra-manual.html#dx1-50039" >1364
    \glsxtrinclinkcounter  1291
    +href="glossaries-extra-manual.html#dx1-38005" >1365
    \glsxtrindexaliased  1292
    +href="glossaries-extra-manual.html#dx1-53017" >1366
    \GlsXtrIndexCounterLink  1293
    +href="glossaries-extra-manual.html#dx1-43028" >1367
    \glsxtrindexseealso  1294
    +href="glossaries-extra-manual.html#dx1-8079" >1368
    \glsxtrinitwrgloss  1295
    +href="glossaries-extra-manual.html#dx1-7013" >1369
    \Glsxtrinlinefullformat  1296
    +href="glossaries-extra-manual.html#dx1-31073" >1370
    \glsxtrinlinefullformat  1297
    +href="glossaries-extra-manual.html#dx1-31070" >1371
    \Glsxtrinlinefullplformat  1298
    +href="glossaries-extra-manual.html#dx1-31080" >1372
    \glsxtrinlinefullplformat  1299
    +href="glossaries-extra-manual.html#dx1-31077" >1373
    \glsxtrinsertinsidetrue  1300
    +href="glossaries-extra-manual.html#dx1-28080" >1374
    \glsxtrLatinA  1301
    +href="glossaries-extra-manual.html#dx1-46069" >1375
    \glsxtrLatinAA  1302
    +href="glossaries-extra-manual.html#dx1-46093" >1376
    \glsxtrLatinAELigature  1303
    +href="glossaries-extra-manual.html#dx1-46086" >1377
    \glsxtrLatinE  1304
    +href="glossaries-extra-manual.html#dx1-46070" >1378
    \glsxtrLatinEszettSs  1305
    +href="glossaries-extra-manual.html#dx1-46082" >1379
    \glsxtrLatinEszettSz  1306
    +href="glossaries-extra-manual.html#dx1-46083" >1380
    \glsxtrLatinEth  1307
    +href="glossaries-extra-manual.html#dx1-46084" >1381
    \glsxtrLatinH  1308
    +href="glossaries-extra-manual.html#dx1-46071" >1382
    \glsxtrLatinI  1309
    +href="glossaries-extra-manual.html#dx1-46073" >1383
    \glsxtrLatinInsularG  1310
    +href="glossaries-extra-manual.html#dx1-46091" >1384
    \glsxtrLatinK  1311
    +href="glossaries-extra-manual.html#dx1-46072" >1385
    \glsxtrLatinL  1312
    +href="glossaries-extra-manual.html#dx1-46074" >1386
    \glsxtrLatinLslash  1313
    +href="glossaries-extra-manual.html#dx1-46089" >1387
    \glsxtrLatinM  1314
    +href="glossaries-extra-manual.html#dx1-46075" >1388
    \glsxtrLatinN  1315
    +href="glossaries-extra-manual.html#dx1-46076" >1389
    \glsxtrLatinO  1316
    +href="glossaries-extra-manual.html#dx1-46077" >1390
    \glsxtrLatinOELigature  1317
    +href="glossaries-extra-manual.html#dx1-46087" >1391
    \glsxtrLatinOslash  1318
    +href="glossaries-extra-manual.html#dx1-46088" >1392
    \glsxtrLatinP  1319
    +href="glossaries-extra-manual.html#dx1-46078" >1393
    \glsxtrLatinS  1320
    - - - +href="glossaries-extra-manual.html#dx1-46079" >1394
    \glsxtrLatinSchwa  1321
    +href="glossaries-extra-manual.html#dx1-46092" >1395
    \glsxtrLatinT  1322
    +href="glossaries-extra-manual.html#dx1-46080" >1396
    \glsxtrLatinThorn  1323
    +href="glossaries-extra-manual.html#dx1-46085" >1397
    \glsxtrLatinWynn  1324
    +href="glossaries-extra-manual.html#dx1-46090" >1398
    \glsxtrLatinX  1325
    +href="glossaries-extra-manual.html#dx1-46081" >1399
    \GlsXtrLetField  1326
    +href="glossaries-extra-manual.html#dx1-50027" >1400
    \GlsXtrLetFieldToField  1327
    +href="glossaries-extra-manual.html#dx1-50029" >1401
    \GlsXtrLinkCounterName  1328
    +href="glossaries-extra-manual.html#dx1-38009" >1402
    \GlsXtrLinkCounterValue  1329
    +href="glossaries-extra-manual.html#dx1-38006" >1403
    + + + \GlsXtrLoadResources  1330
    +href="glossaries-extra-manual.html#dx1-40018" >1404
    \glsxtrlocalsetgrouptitle  1331
    +href="glossaries-extra-manual.html#dx1-16007" >1405
    \GlsXtrLocationField  1332
    +href="glossaries-extra-manual.html#dx1-51036" >1406
    \GlsXtrLocationRecordCount  1333
    +href="glossaries-extra-manual.html#dx1-48008" >1407
    \glsxtrlocrangefmt  1334
    +href="glossaries-extra-manual.html#dx1-18018" >1408
    \Glsxtrlong  1335, 1336
    +href="glossaries-extra-manual.html#dx1-26021" >1409, 1410
    \glsxtrlong  1337
    +href="glossaries-extra-manual.html#dx1-26012" >1411
    \glsxtrlonghyphen  1338
    +href="glossaries-extra-manual.html#dx1-30267" >1412
    \glsxtrlonghyphenshort  1339
    +href="glossaries-extra-manual.html#dx1-30248" >1413
    \glsxtrlongnoshortdescname  1340
    +href="glossaries-extra-manual.html#dx1-29062" >1414
    \glsxtrlongnoshortname  1341
    +href="glossaries-extra-manual.html#dx1-29088" >1415
    \GLSxtrlongpl  1342
    +href="glossaries-extra-manual.html#dx1-26031" >1416
    \Glsxtrlongpl  1343
    +href="glossaries-extra-manual.html#dx1-26030" >1417
    \glsxtrlongpl  1344
    +href="glossaries-extra-manual.html#dx1-26029" >1418
    \glsxtrlongshortdescname  1345
    +href="glossaries-extra-manual.html#dx1-30061" >1419
    \glsxtrlongshortdescsort  1346
    +href="glossaries-extra-manual.html#dx1-30058" >1420
    \glsxtrlongshortname  1347
    +href="glossaries-extra-manual.html#dx1-30006" >1421
    \glsxtrlongshortuserdescname  1348
    +href="glossaries-extra-manual.html#dx1-30082" >1422
    \glsxtrMathGreekIIrules  1349
    +href="glossaries-extra-manual.html#dx1-46101" >1423
    \glsxtrMathGreekIrules  1350
    +href="glossaries-extra-manual.html#dx1-46094" >1424
    \glsxtrMathItalicGreekIIrules  1351
    +href="glossaries-extra-manual.html#dx1-46116" >1425
    \glsxtrMathItalicGreekIrules  1352
    +href="glossaries-extra-manual.html#dx1-46110" >1426
    \glsxtrMathItalicLowerGreekIIrules  1353
    +href="glossaries-extra-manual.html#dx1-46130" >1427
    \glsxtrMathItalicLowerGreekIrules  1354
    +href="glossaries-extra-manual.html#dx1-46126" >1428
    \glsxtrMathItalicNabla  1355
    +href="glossaries-extra-manual.html#dx1-46134" >1429
    \glsxtrMathItalicPartial  1356
    +href="glossaries-extra-manual.html#dx1-46133" >1430
    \glsxtrMathItalicUpperGreekIIrules  1357
    +href="glossaries-extra-manual.html#dx1-46123" >1431
    \glsxtrMathItalicUpperGreekIrules  1358
    +href="glossaries-extra-manual.html#dx1-46119" >1432
    \glsxtrMathUpGreekIIrules  1359
    +href="glossaries-extra-manual.html#dx1-46107" >1433
    \glsxtrMathUpGreekIrules  1360
    +href="glossaries-extra-manual.html#dx1-46102" >1434
    \glsxtrmultisupplocation  1361
    +href="glossaries-extra-manual.html#dx1-44004" >1435
    \glsxtrnameloclink  1362
    +href="glossaries-extra-manual.html#dx1-45025" >1436
    \glsxtrnamereflink  1363
    +href="glossaries-extra-manual.html#dx1-45019" >1437
    \glsxtrnewgls  1364
    +href="glossaries-extra-manual.html#dx1-47005" >1438
    \glsxtrnewGLSlike  1365
    +href="glossaries-extra-manual.html#dx1-47007" >1439
    \glsxtrnewglslike  1366
    +href="glossaries-extra-manual.html#dx1-47006" >1440
    \glsxtrnewnumber  1367
    - - - +href="glossaries-extra-manual.html#dx1-4217" >1441
    \glsxtrnewrgls  1368
    +href="glossaries-extra-manual.html#dx1-47008" >1442
    \glsxtrnewrGLSlike  1369
    +href="glossaries-extra-manual.html#dx1-47010" >1443
    \glsxtrnewrglslike  1370
    +href="glossaries-extra-manual.html#dx1-47009" >1444
    \glsxtrnewsymbol  1371
    +href="glossaries-extra-manual.html#dx1-4211" >1445
    \GlsXtrNoGlsWarningAutoMake  1372
    +href="glossaries-extra-manual.html#dx1-59020" >1446
    \GlsXtrNoGlsWarningBuildInfo  1373
    +href="glossaries-extra-manual.html#dx1-59019" >1447
    \GlsXtrNoGlsWarningCheckFile  1374
    +href="glossaries-extra-manual.html#dx1-59015" >1448
    \GlsXtrNoGlsWarningEmptyMain  1375
    +href="glossaries-extra-manual.html#dx1-59013" >1449
    \GlsXtrNoGlsWarningEmptyNotMain  1376
    +href="glossaries-extra-manual.html#dx1-59014" >1450
    + + + \GlsXtrNoGlsWarningEmptyStart  1377
    +href="glossaries-extra-manual.html#dx1-59012" >1451
    \GlsXtrNoGlsWarningHead  1378
    +href="glossaries-extra-manual.html#dx1-59011" >1452
    \GlsXtrNoGlsWarningMisMatch  1379
    +href="glossaries-extra-manual.html#dx1-59016" >1453
    \GlsXtrNoGlsWarningNoOut  1380
    +href="glossaries-extra-manual.html#dx1-59017" >1454
    \GlsXtrNoGlsWarningTail  1381
    +href="glossaries-extra-manual.html#dx1-59018" >1455
    \glsxtrnonprintablerules  1382
    +href="glossaries-extra-manual.html#dx1-46044" >1456
    \glsxtrnopostpunc  1383
    +href="glossaries-extra-manual.html#dx1-6003" >1457
    \glsxtronlydescname  1384
    +href="glossaries-extra-manual.html#dx1-30027" >1458
    \glsxtronlyname  1385
    +href="glossaries-extra-manual.html#dx1-30023" >1459
    \glsxtronlysuffix  1386
    +href="glossaries-extra-manual.html#dx1-28079" >1460
    \glsxtrorglong  1387
    +href="glossaries-extra-manual.html#dx1-31034" >1461
    \glsxtrorgshort  1388
    +href="glossaries-extra-manual.html#dx1-31033" >1462
    \GLSxtrp  1389
    +href="glossaries-extra-manual.html#dx1-13062" >1463
    \Glsxtrp  1390
    +href="glossaries-extra-manual.html#dx1-13061" >1464
    \glsxtrp  1391
    +href="glossaries-extra-manual.html#dx1-13052" >1465
    \glsxtrpageref  1392
    +href="glossaries-extra-manual.html#dx1-49004" >1466
    \glsxtrparen  1393
    +href="glossaries-extra-manual.html#dx1-28030" >1467
    +\glsxtrpdfentryfmt  1468
    \Glsxtrpl  1394
    +href="glossaries-extra-manual.html#dx1-54015" >1469
    \glsxtrpl  1395
    +href="glossaries-extra-manual.html#dx1-54013" >1470
    \glsxtrpostdescription  1396
    +href="glossaries-extra-manual.html#dx1-17032" >1471
    \glsxtrposthyphenlong  1397
    +href="glossaries-extra-manual.html#dx1-30280" >1472
    \glsxtrposthyphenshort  1398
    +href="glossaries-extra-manual.html#dx1-30265" >1473
    \glsxtrpostlink  1399
    +href="glossaries-extra-manual.html#dx1-9033" >1474
    \glsxtrpostlinkAddDescOnFirstUse  1400
    +href="glossaries-extra-manual.html#dx1-9042" >1475
    \glsxtrpostlinkAddSymbolDescOnFirstUse  1401
    +href="glossaries-extra-manual.html#dx1-9048" >1476
    \glsxtrpostlinkAddSymbolOnFirstUse  1402
    +href="glossaries-extra-manual.html#dx1-9046" >1477
    \glsxtrpostlinkendsentence  1403
    +href="glossaries-extra-manual.html#dx1-9034" >1478
    \glsxtrpostlinkhook  1404
    +href="glossaries-extra-manual.html#dx1-9031" >1479
    \glsxtrpostlongdescription  1405
    +href="glossaries-extra-manual.html#dx1-6017" >1480
    \glsxtrpostnamehook  1406
    +href="glossaries-extra-manual.html#dx1-17026" >1481
    \GlsXtrPostNewAbbreviation  1407
    +href="glossaries-extra-manual.html#dx1-31019" >1482
    \glsxtrprelocation  1408
    +href="glossaries-extra-manual.html#dx1-19017" >1483
    \glsxtrprependlabelprefix  1409
    +href="glossaries-extra-manual.html#dx1-47015" >1484
    \GlsXtrProvideBibTeXFields  1410
    +href="glossaries-extra-manual.html#dx1-46008" >1485
    \glsxtrprovidecommand  1411
    +href="glossaries-extra-manual.html#dx1-43022" >1486
    \glsxtrprovidestoragekey  1412
    +href="glossaries-extra-manual.html#dx1-50011" >1487
    \GlsXtrRecordCount  1413
    - - - +href="glossaries-extra-manual.html#dx1-48007" >1488
    \GlsXtrRecordCounter  1414
    +href="glossaries-extra-manual.html#dx1-50085" >1489
    \glsxtrrecordtriggervalue  1415
    +href="glossaries-extra-manual.html#dx1-48020" >1490
    \glsxtrregularfont  1416
    +href="glossaries-extra-manual.html#dx1-9026" >1491
    \glsxtrresourcefile  1417
    +href="glossaries-extra-manual.html#dx1-40017" >1492
    \glsxtrresourceinit  1418
    +href="glossaries-extra-manual.html#dx1-47003" >1493
    \glsxtrrestorepostpunc  1419
    +href="glossaries-extra-manual.html#dx1-6004" >1494
    \glsxtrRevertMarks  1420
    +href="glossaries-extra-manual.html#dx1-33008" >1495
    \glsxtrRevertTocMarks  1421
    +href="glossaries-extra-manual.html#dx1-33009" >1496
    + + + \glsxtrscsuffix  1422
    +href="glossaries-extra-manual.html#dx1-28044" >1497
    \glsxtrseealsolabels  1423
    +href="glossaries-extra-manual.html#dx1-8073" >1498
    \glsxtrseelist  1424
    +href="glossaries-extra-manual.html#dx1-8077" >1499
    \GlsXtrSetActualChar  1425
    +href="glossaries-extra-manual.html#dx1-39049" >1500
    \glsxtrsetaliasnoindex  1426
    +href="glossaries-extra-manual.html#dx1-53014" >1501
    \GlsXtrSetAltModifier  1427
    +href="glossaries-extra-manual.html#dx1-7037" >1502
    \glsxtrsetcategory  1428
    +href="glossaries-extra-manual.html#dx1-35196" >1503
    \glsxtrsetcategoryforall  1429
    +href="glossaries-extra-manual.html#dx1-35198" >1504
    \GlsXtrSetDefaultGlsOpts  1430
    +href="glossaries-extra-manual.html#dx1-7031" >1505
    \GlsXtrSetEncapChar  1431
    +href="glossaries-extra-manual.html#dx1-39052" >1506
    \GlsXtrSetEscChar  1432
    +href="glossaries-extra-manual.html#dx1-39051" >1507
    \GlsXtrSetField  1433
    +href="glossaries-extra-manual.html#dx1-50016" >1508
    \glsxtrsetfieldifexists  1434
    +href="glossaries-extra-manual.html#dx1-50017" >1509
    \glsxtrsetglossarylabel  1435
    +href="glossaries-extra-manual.html#dx1-15012" >1510
    \glsxtrsetgrouptitle  1436
    +href="glossaries-extra-manual.html#dx1-16006" >1511
    \GlsXtrSetLevelChar  1437
    +href="glossaries-extra-manual.html#dx1-39050" >1512
    \glsxtrsetpopts  1438
    +href="glossaries-extra-manual.html#dx1-13057" >1513
    \GlsXtrSetRecordCountAttribute  1439
    +href="glossaries-extra-manual.html#dx1-48016" >1514
    \glsxtrSetWidest  1440
    +href="glossaries-extra-manual.html#dx1-43035" >1515
    \glsxtrSetWidestFallback  1441
    +href="glossaries-extra-manual.html#dx1-43040" >1516
    \Glsxtrshort  1442, 1443
    +href="glossaries-extra-manual.html#dx1-26020" >1517, 1518
    \glsxtrshort  1444
    +href="glossaries-extra-manual.html#dx1-26010" >1519
    \glsxtrshortdescname  1445
    +href="glossaries-extra-manual.html#dx1-29036" >1520
    \glsxtrshorthyphenlong  1446
    +href="glossaries-extra-manual.html#dx1-30273" >1521
    \glsxtrshortlongdescname  1447
    +href="glossaries-extra-manual.html#dx1-30126" >1522
    \glsxtrshortlongname  1448, 1449
    +href="glossaries-extra-manual.html#dx1-30099" >1523, 1524
    \glsxtrshortlonguserdescname  1450
    +href="glossaries-extra-manual.html#dx1-30144" >1525
    \glsxtrshortnolongname  1451
    +href="glossaries-extra-manual.html#dx1-29005" >1526
    \GLSxtrshortpl  1452
    +href="glossaries-extra-manual.html#dx1-26028" >1527
    \Glsxtrshortpl  1453
    +href="glossaries-extra-manual.html#dx1-26027" >1528
    \glsxtrshortpl  1454
    +href="glossaries-extra-manual.html#dx1-26026" >1529
    \glsxtrsmsuffix  1455
    +href="glossaries-extra-manual.html#dx1-28054" >1530
    \glsxtrspacerules  1456
    +href="glossaries-extra-manual.html#dx1-46043" >1531
    \GlsXtrStandaloneEntryName  1457
    +href="glossaries-extra-manual.html#dx1-52010" >1532
    \GlsXtrStandaloneEntryOther  1458
    +href="glossaries-extra-manual.html#dx1-52017" >1533
    \GlsXtrStandaloneGlossaryType  1459
    +href="glossaries-extra-manual.html#dx1-52005" >1534
    \GlsXtrStartUnsetBuffering  1460
    +href="glossaries-extra-manual.html#dx1-11013" >1535
    \GlsXtrStopUnsetBuffering  1461
    - - - +href="glossaries-extra-manual.html#dx1-11014" >1536
    \glsxtrSubScriptDigitrules  1462
    +href="glossaries-extra-manual.html#dx1-46058" >1537
    \Glsxtrsubsequentfmt  1463
    +href="glossaries-extra-manual.html#dx1-31083" >1538
    \glsxtrsubsequentfmt  1464
    +href="glossaries-extra-manual.html#dx1-31082" >1539
    \Glsxtrsubsequentplfmt  1465
    +href="glossaries-extra-manual.html#dx1-31085" >1540
    \glsxtrsubsequentplfmt  1466
    +href="glossaries-extra-manual.html#dx1-31084" >1541
    \glsxtrSuperScriptDigitrules  1467
    +href="glossaries-extra-manual.html#dx1-46059" >1542
    \glsxtrtagfont  1468
    +href="glossaries-extra-manual.html#dx1-25003" >1543
    \GlsXtrTheLinkCounter  1469
    +href="glossaries-extra-manual.html#dx1-38007" >1544
    + + + \GlsXtrTotalRecordCount  1470
    +href="glossaries-extra-manual.html#dx1-48006" >1545
    \glsxtrunsrtdo  1471
    +href="glossaries-extra-manual.html#dx1-51031" >1546
    \GlsXtrUseAbbrStyleFmts  1472
    +href="glossaries-extra-manual.html#dx1-31089" >1547
    \GlsXtrUseAbbrStyleSetup  1473
    +href="glossaries-extra-manual.html#dx1-31040" >1548
    +\glsxtrusealias  1549
    \GLSxtrusefield  1474
    +href="glossaries-extra-manual.html#dx1-50050" >1550
    \Glsxtrusefield  1475
    +href="glossaries-extra-manual.html#dx1-50049" >1551
    \glsxtrusefield  1476
    +href="glossaries-extra-manual.html#dx1-50047" >1552
    \glsxtruserfield  1477
    +href="glossaries-extra-manual.html#dx1-30033" >1553
    \glsxtruserparen  1478
    +href="glossaries-extra-manual.html#dx1-30036" >1554
    \glsxtrusersuffix  1479, 1480
    +href="glossaries-extra-manual.html#dx1-28068" >1555, 1556
    \glsxtrusesee  1481
    +href="glossaries-extra-manual.html#dx1-8020" >1557
    \glsxtruseseealso  1482
    +href="glossaries-extra-manual.html#dx1-8068" >1558
    \glsxtruseseeformat  1483, 1484
    +href="glossaries-extra-manual.html#dx1-8021" >1559, 1560
    \GlsXtrWarnDeprecatedAbbrStyle  1485
    +href="glossaries-extra-manual.html#dx1-28107" >1561
    \GlsXtrWarning  1486
    +href="glossaries-extra-manual.html#dx1-54011" >1562
    \glsxtrword  1487
    +href="glossaries-extra-manual.html#dx1-35057" >1563
    \glsxtrwordsep  1488
    +href="glossaries-extra-manual.html#dx1-35056" >1564
    \glsxtrwrglossmark  1489
    +class="cmti-10">1565

    H hyperref package  1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514
    +href="glossaries-extra-manual.html#dx1-4092" >1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591

    I -\ifglsxtrinitwrglossbefore  1515
    inputenc package  1516
    +href="glossaries-extra-manual.html#dx1-42012" >1592

    L link-text  1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536
    +href="glossaries-extra-manual.html#dx1-9001" >1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612
    location list  1537, 1538, 1539, 1540, 1541
    +href="glossaries-extra-manual.html#dx1-18013" >1613, 1614, 1615, 1616, 1617
    \longnewglossaryentry  1542
    +href="glossaries-extra-manual.html#dx1-6015" >1618

    M makeglossaries  1543, 1544, 1545, 1546, 1547
    +href="glossaries-extra-manual.html#dx1-3027" >1619, 1620, 1621, 1622, 1623
    \makeglossaries  1548
    - - - +href="glossaries-extra-manual.html#dx1-6032" >1624
    makeglossaries-lite  1549, 1550
    +href="glossaries-extra-manual.html#dx1-6038" >1625, 1626
    makeglossaries-lite  1551, 1552
    +href="glossaries-extra-manual.html#dx1-6039" >1627, 1628
    +makeidx package  1629
    makeindex  1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572
    +href="glossaries-extra-manual.html#dx1-3022" >1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649
    makeindex  1573, 1574, 1575, 1576, 1577
    +href="glossaries-extra-manual.html#dx1-7053" >1650, 1651, 1652, 1653, 1654
    memoir class  1578
    +href="glossaries-extra-manual.html#dx1-3021" >1655
    mfirstuc package  1579, 1580, 1581
    +href="glossaries-extra-manual.html#dx1-4" >1656, 1657, 1658
    + + + multicols package  1582
    +href="glossaries-extra-manual.html#dx1-23002" >1659

    N \newabbreviation  1583
    +href="glossaries-extra-manual.html#dx1-24011" >1660
    \newabbreviationstyle  1584
    +href="glossaries-extra-manual.html#dx1-31001" >1661
    \newacronym  1585
    +href="glossaries-extra-manual.html#dx1-24020" >1662
    \newglossaryentry options
        access  1586, 1587
    +href="glossaries-extra-manual.html#dx1-35164" >1663
        alias  1588, 1589, 1590, 1591, 1592, 1593
    +href="glossaries-extra-manual.html#dx1-6008" >1664, 1665, 1666, 1667, 1668, 1669, 1670
        category  1594, 1595, 1596, 1597, 1598, 1599
    +href="glossaries-extra-manual.html#dx1-6007" >1671, 1672, 1673, 1674, 1675, 1676
        counter  1600
    +href="glossaries-extra-manual.html#dx1-7044" >1677
        description  1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624
    +href="glossaries-extra-manual.html#dx1-6002" >1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703
        descriptionplural  1625, 1626, 1627, 1628, 1629, 1630
    +href="glossaries-extra-manual.html#dx1-6016" >1704, 1705, 1706, 1707, 1708, 1709
        first  1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643
    +href="glossaries-extra-manual.html#dx1-9013" >1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722
        firstaccess  1644
    +href="glossaries-extra-manual.html#dx1-35171" >1723
        firstplural  1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654
    +href="glossaries-extra-manual.html#dx1-9014" >1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733
        group  1655, 1656, 1657, 1658, 1659
    +href="glossaries-extra-manual.html#dx1-42011" >1734, 1735, 1736, 1737, 1738
        location  1660, 1661, 1662, 1663
    +href="glossaries-extra-manual.html#dx1-21023" >1739, 1740, 1741, 1742, 1743
        loclist  1664, 1665, 1666, 1667
    +href="glossaries-extra-manual.html#dx1-45014" >1744, 1745, 1746, 1747
        long  1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676
    +href="glossaries-extra-manual.html#dx1-12026" >1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756
        longplural  1677, 1678, 1679, 1680, 1681, 1682
    +href="glossaries-extra-manual.html#dx1-12010" >1757, 1758, 1759, 1760, 1761, 1762
        name  1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735
    +href="glossaries-extra-manual.html#dx1-8034" >1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819
        nameshortaccess  1736, 1737
    +href="glossaries-extra-manual.html#dx1-35167" >1820, 1821
        parent  1738, 1739, 1740
    +href="glossaries-extra-manual.html#dx1-19085" >1822, 1823, 1824
        plural  1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753
    +href="glossaries-extra-manual.html#dx1-9017" >1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837
        prefix  1754
    +href="glossaries-extra-manual.html#dx1-15009" >1838
        see  1755, 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781
    +href="glossaries-extra-manual.html#dx1-4057" >1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865
        seealso  1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791
    +href="glossaries-extra-manual.html#dx1-4058" >1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876
        short  1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807
    +href="glossaries-extra-manual.html#dx1-8051" >1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892
        shortaccess  1808, 1809, 1810, 1811, 1812, 1813
    +href="glossaries-extra-manual.html#dx1-35133" >1893, 1894, 1895, 1896, 1897
        shortplural  1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828
    +href="glossaries-extra-manual.html#dx1-12011" >1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912
        shortpluralaccess  1829, 1830, 1831, 1832
    +href="glossaries-extra-manual.html#dx1-35150" >1913, 1914, 1915, 1916
        sort  1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852
    +href="glossaries-extra-manual.html#dx1-4176" >1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 1938, 1939
        symbol  1853, 1854, 1855, 1856
    - - - +href="glossaries-extra-manual.html#dx1-17013" >1940, 1941, 1942, 1943, 1944, 1945
    +    symbolaccess  1946
        symbolplural  1857, 1858
    +href="glossaries-extra-manual.html#dx1-57037" >1947, 1948
        text  1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872
    +href="glossaries-extra-manual.html#dx1-8033" >1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963
        textaccess  1873
    +href="glossaries-extra-manual.html#dx1-35168" >1964
        type  1874, 1875, 1876, 1877
    +href="glossaries-extra-manual.html#dx1-14058" >1965, 1966, 1967, 1968
        user1  1878, 1879, 1880
    +href="glossaries-extra-manual.html#dx1-17018" >1969, 1970, 1971, 1972
    number list  1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914
    +href="glossaries-extra-manual.html#dx1-4027" >1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
    + + +

    P package options:
        abbreviations  1915, 1916, 1917, 1918, 1919
    +href="glossaries-extra-manual.html#dx1-4191" >2007, 2008, 2009, 2010, 2011
        accsupp  1920, 1921, 1922, 1923, 1924
    +href="glossaries-extra-manual.html#dx1-4035" >2012, 2013, 2014, 2015, 2016, 2017, 2018
        acronym  1925, 1926
    +href="glossaries-extra-manual.html#dx1-4205" >2019, 2020
        acronymlists  1927
    +href="glossaries-extra-manual.html#dx1-4209" >2021, 2022
        acronyms  1928
    +href="glossaries-extra-manual.html#dx1-4221" >2023
        automake  1929, 1930
    +href="glossaries-extra-manual.html#dx1-6040" >2024, 2025
        autoseeindex  1931, 1932
    +href="glossaries-extra-manual.html#dx1-4066" >2026, 2027
            false  1933, 1934
    +href="glossaries-extra-manual.html#dx1-4059" >2028, 2029
        counter
            chapter  1935
    +href="glossaries-extra-manual.html#dx1-4094" >2030
            equation  1936
    +href="glossaries-extra-manual.html#dx1-4097" >2031
            section  1937
    +href="glossaries-extra-manual.html#dx1-4095" >2032
            wrglossary  1938
    +href="glossaries-extra-manual.html#dx1-4130" >2033
        debug  1939
    +href="glossaries-extra-manual.html#dx1-4002" >2034
            all  1940, 1941
    +href="glossaries-extra-manual.html#dx1-4005" >2035, 2036
            showtargets  1942, 1943
    +href="glossaries-extra-manual.html#dx1-4003" >2037, 2038
            showwrgloss  1944, 1945, 1946
    +href="glossaries-extra-manual.html#dx1-4004" >2039, 2040, 2041
            true  1947
    +href="glossaries-extra-manual.html#dx1-4007" >2042
        docdef  1948, 1949, 1950, 1951
    +href="glossaries-extra-manual.html#dx1-4156" >2043, 2044, 2045, 2046
            restricted  1952, 1953, 1954, 1955
    +href="glossaries-extra-manual.html#dx1-4169" >2047, 2048, 2049, 2050
            true  1956, 1957
    +href="glossaries-extra-manual.html#dx1-4187" >2051, 2052
        docdefs  1958, 1959, 1960
    +href="glossaries-extra-manual.html#dx1-51022" >2053, 2054, 2055
            true  1961
    +href="glossaries-extra-manual.html#dx1-4168" >2056
        entrycounter  1962, 1963
    +href="glossaries-extra-manual.html#dx1-49002" >2057, 2058
        equations  1964, 1965
    +href="glossaries-extra-manual.html#dx1-4111" >2059, 2060
            true  1966
    +href="glossaries-extra-manual.html#dx1-4098" >2061
        floats  1967
    +href="glossaries-extra-manual.html#dx1-4118" >2062
        hyperfirst
            false  1968
    +href="glossaries-extra-manual.html#dx1-35030" >2063
        index  1969, 1970, 1971
    +href="glossaries-extra-manual.html#dx1-4227" >2064, 2065, 2066
        indexcounter  1972, 1973, 1974, 1975
    +href="glossaries-extra-manual.html#dx1-4093" >2067, 2068, 2069, 2070
        indexcrossrefs  1976, 1977, 1978, 1979
    +href="glossaries-extra-manual.html#dx1-4056" >2071, 2072, 2073, 2074
            false  1980
    +href="glossaries-extra-manual.html#dx1-4065" >2075
        indexonlyfirst  1981, 1982, 1983, 1984
    +href="glossaries-extra-manual.html#dx1-7004" >2076, 2077, 2078, 2079
        makeindex  1985
    - - - +href="glossaries-extra-manual.html#dx1-45016" >2080
        nogroupskip  1986, 1987, 1988, 1989, 1990, 1991
    +href="glossaries-extra-manual.html#dx1-19014" >2081, 2082, 2083, 2084, 2085
        nomain  1992
    +href="glossaries-extra-manual.html#dx1-3032" >2086
        nomissingglstext  1993
    +href="glossaries-extra-manual.html#dx1-4190" >2087
        nonumberlist  1994, 1995, 1996, 1997, 1998
    +href="glossaries-extra-manual.html#dx1-8058" >2088, 2089, 2090, 2091, 2092
        nopostdot  1999, 2000, 2001, 2002
    +href="glossaries-extra-manual.html#dx1-4022" >2093, 2094, 2095, 2096
            false  2003, 2004, 2005
    +href="glossaries-extra-manual.html#dx1-3004" >2097, 2098, 2099
    + + +         true  2006
    +href="glossaries-extra-manual.html#dx1-3003" >2100
        noredefwarn
            false  2007
    +href="glossaries-extra-manual.html#dx1-3009" >2101
            true  2008
    +href="glossaries-extra-manual.html#dx1-3006" >2102
        notree  2009
    +href="glossaries-extra-manual.html#dx1-19067" >2103
        numbers  2010, 2011, 2012
    +href="glossaries-extra-manual.html#dx1-4216" >2104, 2105, 2106
        postdot  2013, 2014, 2015
    +href="glossaries-extra-manual.html#dx1-3005" >2107, 2108, 2109
        postpunc  2016, 2017, 2018
    +href="glossaries-extra-manual.html#dx1-4018" >2110, 2111, 2112
            comma  2019
    +href="glossaries-extra-manual.html#dx1-4019" >2113
            dot  2020
    +href="glossaries-extra-manual.html#dx1-4020" >2114
            none  2021
    +href="glossaries-extra-manual.html#dx1-4021" >2115
    +    prefix  2116
        record  2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034
    +href="glossaries-extra-manual.html#dx1-4064" >2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129
            alsoindex  2035, 2036, 2037, 2038, 2039, 2040, 2041
    +href="glossaries-extra-manual.html#dx1-4009" >2130, 2131, 2132, 2133, 2134, 2135, 2136
            nameref  2042, 2043
    +href="glossaries-extra-manual.html#dx1-45001" >2137, 2138
            off  2044, 2045
    +href="glossaries-extra-manual.html#dx1-6035" >2139, 2140
            only  2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056
    +href="glossaries-extra-manual.html#dx1-4069" >2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151
    +    savenumberlist  2152
        section
            chapter  2057
    +href="glossaries-extra-manual.html#dx1-21040" >2153
        seeautonumberlist  2058
    +href="glossaries-extra-manual.html#dx1-8059" >2154
        seenoindex  2059
    +href="glossaries-extra-manual.html#dx1-8016" >2155
            ignore  2060, 2061
    +href="glossaries-extra-manual.html#dx1-8018" >2156, 2157
            warn  2062
    +href="glossaries-extra-manual.html#dx1-51020" >2158
        shortcuts  2063, 2064
    +href="glossaries-extra-manual.html#dx1-4231" >2159, 2160, 2161
            abbr  2065, 2066
    +href="glossaries-extra-manual.html#dx1-4237" >2162, 2163
            abbreviation  2067, 2068
    +href="glossaries-extra-manual.html#dx1-27005" >2164
            abbreviations  2069, 2070
    +href="glossaries-extra-manual.html#dx1-4236" >2165, 2166, 2167
            ac  2071, 2072, 2073, 2074, 2075, 2076
    +href="glossaries-extra-manual.html#dx1-4234" >2168, 2169, 2170, 2171, 2172, 2173, 2174
            acro  2077, 2078
    +href="glossaries-extra-manual.html#dx1-4233" >2175, 2176
            acronyms  2079, 2080
    +href="glossaries-extra-manual.html#dx1-4232" >2177, 2178
            all  2081, 2082
    +href="glossaries-extra-manual.html#dx1-4247" >2179, 2180
            false  2083
    +href="glossaries-extra-manual.html#dx1-4253" >2181
            none  2084
    +href="glossaries-extra-manual.html#dx1-4252" >2182
            other  2085, 2086
    +href="glossaries-extra-manual.html#dx1-4238" >2183, 2184
            true  2087
    +href="glossaries-extra-manual.html#dx1-4248" >2185
        sort
            none  2088, 2089
    +href="glossaries-extra-manual.html#dx1-4089" >2186, 2187
        stylemods  2090, 2091, 2092, 2093, 2094
    +href="glossaries-extra-manual.html#dx1-4045" >2188, 2189, 2190, 2191, 2192, 2193
            all  2095
    +href="glossaries-extra-manual.html#dx1-4048" >2194
            default  2096
    +href="glossaries-extra-manual.html#dx1-4047" >2195
        subentrycounter  2097, 2098
    - - - +href="glossaries-extra-manual.html#dx1-49003" >2196, 2197
        symbols  2099, 2100, 2101
    +href="glossaries-extra-manual.html#dx1-4210" >2198, 2199, 2200
        toc
            false  2102
    +href="glossaries-extra-manual.html#dx1-3002" >2201
            true  2103
    +href="glossaries-extra-manual.html#dx1-3001" >2202
    + + +     translate
            babel  2104
    +href="glossaries-extra-manual.html#dx1-3011" >2203
            true  2105
    +href="glossaries-extra-manual.html#dx1-3013" >2204
        undefaction  2106, 2107
    +href="glossaries-extra-manual.html#dx1-4049" >2205, 2206
            error  2108, 2109, 2110
    +href="glossaries-extra-manual.html#dx1-4050" >2207, 2208, 2209
            warn  2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119
    +href="glossaries-extra-manual.html#dx1-4051" >2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218
        xindy  2120, 2121
    +href="glossaries-extra-manual.html#dx1-8080" >2219, 2220
    page (counter)  2122, 2123, 2124, 2125, 2126, 2127
    +href="glossaries-extra-manual.html#dx1-4096" >2221, 2222, 2223, 2224, 2225, 2226
    polyglossia package  2128, 2129
    +href="glossaries-extra-manual.html#dx1-50083" >2227, 2228
    \pretoglossarypreamble  2130
    +href="glossaries-extra-manual.html#dx1-49011" >2229
    \printabbreviations  2131
    +href="glossaries-extra-manual.html#dx1-4195" >2230
    \printglossary options
        label  2132
    +href="glossaries-extra-manual.html#dx1-15011" >2231
        nogroupskip  2133
    +href="glossaries-extra-manual.html#dx1-19015" >2232
        prefix  2134
    +href="glossaries-extra-manual.html#dx1-15008" >2233
        target  2135, 2136
    +href="glossaries-extra-manual.html#dx1-15006" >2234, 2235
        targetnameprefix  2137
    +href="glossaries-extra-manual.html#dx1-15007" >2236
        title  2138
    +href="glossaries-extra-manual.html#dx1-59006" >2237
    \printnoidxglossary options
        sort  2139
    +href="glossaries-extra-manual.html#dx1-51023" >2238
    \printunsrtabbreviations  2140
    +href="glossaries-extra-manual.html#dx1-4197" >2239
    \printunsrtacronyms  2141
    +href="glossaries-extra-manual.html#dx1-4224" >2240
    \printunsrtglossaries  2142
    +href="glossaries-extra-manual.html#dx1-51024" >2241
    \printunsrtglossary  2143
    +href="glossaries-extra-manual.html#dx1-51001" >2242
    \printunsrtglossary*  2144
    +href="glossaries-extra-manual.html#dx1-51005" >2243
    \printunsrtglossaryentryprocesshook  2145
    +href="glossaries-extra-manual.html#dx1-51027" >2244
    \printunsrtglossaryhandler  2146
    +href="glossaries-extra-manual.html#dx1-51030" >2245
    \printunsrtglossarypredoglossary  2147
    +href="glossaries-extra-manual.html#dx1-51029" >2246
    \printunsrtglossaryskipentry  2148
    +href="glossaries-extra-manual.html#dx1-51028" >2247
    \printunsrtglossaryunit  2149
    +href="glossaries-extra-manual.html#dx1-51042" >2248
    \printunsrtglossaryunitsetup  2150
    +href="glossaries-extra-manual.html#dx1-51043" >2249
    \printunsrtindex  2151
    +href="glossaries-extra-manual.html#dx1-4229" >2250
    \printunsrtnumbers  2152
    +href="glossaries-extra-manual.html#dx1-4219" >2251
    \printunsrtsymbols  2153
    +href="glossaries-extra-manual.html#dx1-4214" >2252
    \provideignoredglossary  2154
    +href="glossaries-extra-manual.html#dx1-15003" >2253

    R relsizes package  2155
    +href="glossaries-extra-manual.html#dx1-28052" >2254
    \RestoreAcronyms  2156
    +href="glossaries-extra-manual.html#dx1-14057" >2255
    \rGLS  2157
    +href="glossaries-extra-manual.html#dx1-48013" >2256
    \rGls  2158
    - - - +href="glossaries-extra-manual.html#dx1-48011" >2257
    \rgls  2159
    +href="glossaries-extra-manual.html#dx1-48009" >2258
    \rGLSformat  2160
    +href="glossaries-extra-manual.html#dx1-48029" >2259
    \rGlsformat  2161
    +href="glossaries-extra-manual.html#dx1-48027" >2260
    \rglsformat  2162
    +href="glossaries-extra-manual.html#dx1-48025" >2261
    + + + \rGLSpl  2163
    +href="glossaries-extra-manual.html#dx1-48014" >2262
    \rGlspl  2164
    +href="glossaries-extra-manual.html#dx1-48012" >2263
    \rglspl  2165
    +href="glossaries-extra-manual.html#dx1-48010" >2264
    \rGLSplformat  2166
    +href="glossaries-extra-manual.html#dx1-48030" >2265
    \rGlsplformat  2167
    +href="glossaries-extra-manual.html#dx1-48028" >2266
    \rglsplformat  2168
    +href="glossaries-extra-manual.html#dx1-48026" >2267

    S \seealsoname  2268
    +\setabbreviationstyle  2169
    +href="glossaries-extra-manual.html#dx1-26001" >2269
    slantsc package  2170
    +href="glossaries-extra-manual.html#dx1-34009" >2270
    soul package  2171, 2172
    +href="glossaries-extra-manual.html#dx1-7024" >2271, 2272
    style package  2173
    +href="glossaries-extra-manual.html#dx1-21005" >2273
    subentrycounter package  2174
    +href="glossaries-extra-manual.html#dx1-52021" >2274

    T texindy  2175
    +href="glossaries-extra-manual.html#dx1-39007" >2275
    textcase package  2176
    +href="glossaries-extra-manual.html#dx1-7" >2276
    tracklang package  2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186
    +href="glossaries-extra-manual.html#dx1-3" >2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286
    translator package  2187
    +href="glossaries-extra-manual.html#dx1-3012" >2287

    U upgreek package  2188, 2189, 2190, 2191
    +href="glossaries-extra-manual.html#dx1-46029" >2288, 2289, 2290, 2291

    W wrglossary (counter)  2192, 2193, 2194, 2195, 2196
    +href="glossaries-extra-manual.html#dx1-4131" >2292, 2293, 2294, 2295, 2296

    X xfor package  2197, 2198, 2199
    +href="glossaries-extra-manual.html#dx1-8" >2297, 2298, 2299
    \xglssetwidest  2200
    +href="glossaries-extra-manual.html#dx1-19071" >2300
    \xglsupdatewidest  2201
    +href="glossaries-extra-manual.html#dx1-19075" >2301
    \xGlsXtrSetField  2202
    +href="glossaries-extra-manual.html#dx1-50026" >2302
    xindy  2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219
    +href="glossaries-extra-manual.html#dx1-3023" >2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319
    xindy  2220
    +href="glossaries-extra-manual.html#dx1-7056" >2320
    xkeyval package  2221
    +href="glossaries-extra-manual.html#dx1-6" >2321

    1.14.21 was originally intended as the last release of glossaries to incorporate new features, but a few new minor features slipped in with some bug fixes in v4.21.

    -

    2.1The descriptionplural key is a throwback to the base package’s original acronym mechanism before the introduction of the long and short keys, where the long form was stored in the description + id="dx1-6026"> field and the short form was stored in the symbol field.

    -

    3.1

    4.1For compatibility with earlier versions, \glsabbrvscfont is defined to \glsxtrscfont is now deprecated. Likewise for similar commands.

    -

    9.1Version 1.11 only allowed one use of \GlsXtrLoadResources per document.

    -

    9.2v1.08 assumed filename.glstex extension was enforced by version 1.11.

    -

    10.1Pre version 1.28 used \csedef#1={\protect\ttfamily#1}|main}} \DeleteShortVerb{\|} \MakeShortVerb{"} - \title{glossaries-extra.sty v1.41: + \title{glossaries-extra.sty v1.42: an extension to the glossaries package} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} - \date{2019-04-09} + \date{2020-02-13} \maketitle \begin{abstract} @@ -241,7 +241,7 @@ Some of the features provided by this package are only available with \styfmt{glossaries} version 4.19 (or above). This document assumes familiarity with the \styfmt{glossaries} package. -The file \texttt{example-glossaries-xr.tex} contains dummy +The file \nolinkurl{example-glossaries-xr.tex} contains dummy entries with cross-references that may be used for creating minimal working examples for testing the \styfmt{glossaries-extra} package. (The base \styfmt{glossaries} package provides additional files, @@ -611,9 +611,17 @@ missing. (With \gls{bib2gls} you can instead redefine location prefixes with \texttt{loc-prefix} which will only apply if the entry has a \gls{numberlist}.) -\item[{\pkgoptdef{accsupp}}] Load the \sty{glossaries-accsupp} +\item[{\pkgoptdef{prefix}}] Load the \sty{glossaries-prefix} package (if not already loaded). +\item[{\pkgoptdef{accsupp}}] Load the \sty{glossaries-accsupp} +package (if not already loaded). + +\begin{important} +The \sty{glossaries-accsupp} package is still experimental and so +accessibility features are liable to change. +\end{important} + If you want to define styles that can interface with the accessibility support provided by \sty{glossaries-accsupp} use the \cs{glsaccess\meta{xxx}} type of commands instead of @@ -1009,7 +1017,9 @@ file or files. be cancelled. If used, it will automatically create a new glossary with the label \texttt{abbreviations} and redefines \cs{glsxtrabbrvtype} to this -label. In addition, it defines a shortcut command +label. (The file extensions are \filetype{glg-abr}, +\filetype{gls-abr} and \filetype{glo-abr}.) +In addition, this option defines a shortcut command \begin{definition}[\DescribeMacro\printabbreviations] \cs{printabbreviations}\oarg{options} \end{definition} @@ -1180,6 +1190,8 @@ after \ics{makenoidxglossaries}. \chapter{Modifications to Existing Commands and Styles} \label{sec:modifications} +\section{Defining Entries} + The \styfmt{glossaries} package provides \ics{nopostdesc} which may be used in the \gloskey{description} to suppress the post-description hook. The \styfmt{glossaries-extra} package @@ -1202,95 +1214,10 @@ These commands have no effect outside of the glossary (except with standalone entries that use \cs{glsxtractivatenopost} and \cs{glspostdescription}, see \sectionref{sec:glossentry}). -The \styfmt{glossaries} package provides -\begin{definition}[\DescribeMacro\glsseeitemformat] -\cs{glsseeitemformat}\marg{label} -\end{definition} -to format items in a cross-reference list (identified with the -\gloskey{see} key or \cs{glssee}). This was originally defined to -use \cs{glsentryname}\marg{label} since it makes more sense for the -cross-reference to match the way the term appears in the glossary. -Unfortunately this caused a problem when the \gloskey{name} field -was sanitized, which used to be the default setting, so -\styfmt{glossaries} v3.0 changed the default definition of this -command to use \cs{glsentrytext} instead. Since the \gloskey{name} -and \gloskey{text} field are quite often the same, this change -usually doesn't have a noticeable effect. However, now that the -\gloskey{name} field is no longer sanitized (following the redesign -of \styfmt{glossaries} v4.0) it makes more sense to restore this -command to its original behaviour, but to take account of -abbreviations \styfmt{glossaries-extra} redefines this as: -\begin{verbatim} -\renewcommand*{\glsseeitemformat}[1]{% - \ifglshasshort{\glslabel}{\glsaccesstext{#1}}{\glsaccessname{#1}}% -} -\end{verbatim} -If you want to restore the \styfmt{glossaries} v3.0+ definition just do: -\begin{verbatim} -\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} -\end{verbatim} -The \sty{glossaries-extra} package provides \ics{glsxtrhiername} -and its case-changing variants that may be used within -the definition of \cs{glsseeitemformat} if required. These -display the hierarchy for sub-entries rather than just the name, -which may be more helpful in cross-references. See -\sectionref{sec:see} for further details. - The commands used by \styfmt{glossaries} to automatically produce an error if an entry is undefined (such as \ics{glsdoifexists}) are changed to take the \pkgopt{undefaction} option into account. -The \ics{newignoredglossary}\marg{type} command now (as from v1.11) has a starred -version that doesn't automatically switch off the hyperlinks. -This starred version may be used with the \catattr{targeturl} -attribute to create a link to an external URL. (See -\sectionref{sec:categories} for further details.) -As from v1.12 both the starred and unstarred version check -that the glossary doesn't already exist. (The \styfmt{glossaries} -package omits this check.) - -You can now provide an ignored glossary with: -\begin{definition}[\DescribeMacro\provideignoredglossary] -\cs{provideignoredglossary}\marg{type} -\end{definition} -which will only define the glossary if it doesn't already exist. -This also has a starred version that doesn't automatically switch -off hyperlinks. - -The individual glossary displaying commands \ics{printglossary}, -\ics{printnoidxglossary} and \cs{printunsrtglossary} have two extra -keys: - -\begin{itemize} -\item \gloskey[printglossary]{target}. This is a boolean key which can -be used to switch off the automatic hypertarget for each entry. -Unlike \cs{glsdisablehyper} this doesn't switch off hyperlinks, so -any cross-references within the glossary won't be affected. This is -a way of avoiding duplicate target warnings if a glossary needs to -be displayed multiple times. -\item -\gloskey[printglossary]{targetnameprefix}\texttt{=}\marg{prefix}. Another way -of avoiding duplicate target names is to set a prefix -used for the names. Unlike changing \cs{glolinkprefix} this doesn't affect -any hyperlinks (such as those created with \cs{gls}). -\item -\gloskey[printglossary]{prefix}\texttt{=}\marg{prefix}. If you do -actually want to locally change \cs{glolinkprefix}, you can use -the \gloskey{prefix} key instead. You need to use the matching -\gloskey[glslink]{prefix} key in commands like \cs{gls}. - -\item -\gloskey[printglossary]{label}\texttt{=}\marg{label}. Labels -the glossary with \texttt{\cs{label}\marg{label}} and also -defines \cs{@currentlabelname} to the glossary's TOC title -(to provide text for \cs{nameref}). You can also set the -label before the glossary using: -\begin{definition}[\DescribeMacro\glsxtrsetglossarylabel] -\cs{glsxtrsetglossarylabel}\marg{label} -\end{definition} -but take care of duplicate labels if it's not scoped. -\end{itemize} - The \cs{newglossaryentry} command has three new keys: \begin{itemize} \item \gloskey{category}, which sets the category label for the given @@ -1303,11 +1230,14 @@ entry. See \sectionref{sec:alias} for further details. allows for separate \qt{see} and \qt{see also} treatment. See \sectionref{sec:see} for further details. \end{itemize} -The test file \texttt{example-glossaries-xr.tex} contains +This apply to all entry defining commands (such as +\cs{newabbreviation}). + +The test file \nolinkurl{example-glossaries-xr.tex} contains dummy entries with a mixture of \gloskey{see}, \gloskey{alias} and \gloskey{seealso} keys for use with minimal working examples. -There are also \texttt{example-glossaries-*.bib} files that -correspond to each \texttt{example-glossaries-*.tex} file +There are also \nolinkurl{example-glossaries-*.bib} files that +correspond to each \nolinkurl{example-glossaries-*.tex} file for testing \gls{bib2gls}. The \cs{longnewglossaryentry} command now has a starred version @@ -1444,6 +1374,7 @@ equivalent to: \cs{GlsXtrAutoAddOnFormat} is not applied to \cs{glsadd} as it could cause an infinite loop. \end{important} + The \styfmt{glossaries-extra} package provides extra keys for commands like \cs{gls} and \cs{glstext}: \begin{description} @@ -1491,8 +1422,8 @@ which is defined as: } \end{verbatim} This sets the conditional -\begin{definition}[\DescribeMacro\ifglsxtrinitwrglossbefore] -\cs{ifglsxtrinitwrgloss} +\begin{definition} +\ics{ifglsxtrinitwrgloss} \end{definition} which is used to determine where to perform the indexing. @@ -1555,6 +1486,77 @@ hyperlink location (see below). \end{description} +You can set the default options used by \ics{glslink}, \ics{gls} +etc with: +\begin{definition}[\DescribeMacro\GlsXtrSetDefaultGlsOpts] +\cs{GlsXtrSetDefaultGlsOpts}\marg{options} +\end{definition} +For example, if you mostly don't want to index entries then +you can do: +\begin{verbatim} +\GlsXtrSetDefaultGlsOpts{noindex} +\end{verbatim} +and then use, for example, \verb|\gls[noindex=false]{sample}| +when you actually want the location added to the \gls{numberlist}. +These defaults may be overridden by other settings (such as +category attributes) in addition to any settings passed in the +option argument of commands like \cs{glslink} and \cs{gls}. + +Note that if you don't want \emph{any} indexing, just omit +\cs{makeglossaries} and \cs{printglossaries} (or analogous +commands). If you want to adjust the default for +\gloskey[glslink]{wrgloss}, it's better to do this by redefining +\ics{glsxtrinitwrgloss} instead. + +\begin{important} +\cs{GlsXtrSetDefaultGlsOpts} doesn't affect \cs{glsadd}. +\end{important} + +If you want to change the default value of \gloskey[glsadd]{format}, +you can instead use: +\begin{definition}[\GlsXtrSetDefaultNumberFormat] +\cs{GlsXtrSetDefaultNumberFormat}\marg{format} +\end{definition} +This has the advantage of also working for \cs{glsadd}. +For example, if you want all locations in the back matter to appear +in italic (unless explicitly overridden): +\begin{verbatim} +\backmatter +\GlsXtrSetDefaultNumberFormat{hyperit} +\end{verbatim} + +Commands like \ics{gls} have star (\texttt{*}) and plus +(\texttt{+}) modifiers as a short cut for \texttt{hyper=false} +and \texttt{hyper=true}. The \styfmt{glossaries-extra} package +provides a way to add a third modifier, if required, using +\begin{definition}[\DescribeMacro\GlsXtrSetAltModifier] +\cs{GlsXtrSetAltModifier}\marg{char}\marg{options} +\end{definition} +where \meta{char} is the character used as the modifier and +\meta{options} is the default set of options (which may be +overridden). Note that \meta{char} must be a single character +(not a UTF-8 character, unless you are using \XeLaTeX\ or +\LuaLaTeX). + +\begin{important} +When choosing the character \meta{char} take care of any +changes in category code. +\end{important} + +Example: +\begin{verbatim} +\GlsXtrSetAltModifier{!}{noindex} +\end{verbatim} +This means that \verb|\gls!{sample}| will be equivalent to +\verb|\gls[noindex]{sample}|. It's not possible to mix modifiers. +For example, if you want to do +\begin{verbatim} +\gls[noindex,hyper=false]{sample} +\end{verbatim} +you can use \verb|\gls*[noindex]{sample}| or +\verb|\gls![hyper=false]{sample}| but you can't combine the +\texttt{*} and \texttt{!} modifiers. + There is a new hook that's used each time indexing information is written to the external glossary files: \begin{definition}[\DescribeMacro\glsxtrdowrglossaryhook] @@ -1813,7 +1815,44 @@ sub-entries. For example: \renewcommand*{\glsseeitemformat}[1]{\glsxtrhiername{#1}} \end{verbatim} -The command: +The \styfmt{glossaries} package provides +\begin{definition}[\DescribeMacro\glsseeitemformat] +\cs{glsseeitemformat}\marg{label} +\end{definition} +to format items in a cross-reference list (identified with the +\gloskey{see} key or \cs{glssee}). This was originally defined to +use \cs{glsentryname}\marg{label} since it makes more sense for the +cross-reference to match the way the term appears in the glossary. +Unfortunately this caused a problem when the \gloskey{name} field +was sanitized, which used to be the default setting, so +\styfmt{glossaries} v3.0 changed the default definition of this +command to use \cs{glsentrytext} instead. Since the \gloskey{name} +and \gloskey{text} field are quite often the same, this change +usually doesn't have a noticeable effect. However, now that the +\gloskey{name} field is no longer sanitized (following the redesign +of \styfmt{glossaries} v4.0) it makes more sense to restore this +command to its original behaviour, but to take account of +abbreviations \styfmt{glossaries-extra} redefines this as: +\begin{verbatim} +\renewcommand*{\glsseeitemformat}[1]{% + \ifglshasshort{\glslabel}{\glsfmttext{#1}}{\glsfmtname{#1}}% +} +\end{verbatim} +(Note that as from \styfmt{glossaries-extra} version 1.42, this now +uses \cs{glsfmttext} and \cs{glsfmtname} instead of just referencing +the \gloskey{text} and \gloskey{name} fields. This helps to ensure +that any formatting is correctly applied.) + +If you want to restore the \styfmt{glossaries} v3.0+ definition just do: +\begin{verbatim} +\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}} +\end{verbatim} + +The \sty{glossaries-extra} package provides \ics{glsxtrhiername} +and its case-changing variants that may be used within +the definition of \cs{glsseeitemformat} if required. These +display the hierarchy for sub-entries rather than just the name, +which may be more helpful in cross-references. \begin{definition}[\DescribeMacro\glsxtrhiername] \cs{glsxtrhiername}\marg{label} \end{definition} @@ -1824,8 +1863,8 @@ performs a recursive action: \cs{glsxtrhiernamesep} then: \item If the entry given by \meta{label} is an abbreviation (that is, it has the \gloskey{short} field set) then -the short form is displayed (using \cs{glsaccessshort}) -otherwise the name is displayed (using \cs{glsaccessname}). +the short form is displayed (using \cs{glsfmtshort}) +otherwise the name is displayed (using \cs{glsfmtname}). \end{enumerate} The first step above is skipped if the entry doesn't have a parent. Each level is separated by: @@ -1840,27 +1879,27 @@ There are some case-changing variants: \cs{Glsxtrhiername}\marg{label} \end{definition} The top-level has the first letter changed to upper case -(either \cs{Glsaccessshort} or \cs{Glsaccessname}). There's +(either \cs{Glsfmtshort} or \cs{Glsfmtname}). There's no case-change for sub-entries. \begin{definition}[\DescribeMacro\GlsXtrhiername] \cs{GlsXtrhiername}\marg{label} \end{definition} All levels have the first letter changed to upper case -(either \cs{Glsaccessshort} or \cs{Glsaccessname}). +(either \cs{Glsfmtshort} or \cs{Glsfmtname}). \begin{definition}[\DescribeMacro\GLSxtrhiername] \cs{GLSxtrhiername}\marg{label} \end{definition} The top-level is converted to upper case -(either \cs{GLSaccessshort} or \cs{GLSaccessname}). There's +(either \cs{GLSfmtshort} or \cs{GLSfmtname}). There's no case-change for sub-entries. \begin{definition}[\DescribeMacro\GLSXTRhiername] \cs{GLSXTRhiername}\marg{label} \end{definition} All levels are converted to upper case -(either \cs{GLSaccessshort} or \cs{GLSaccessname}). +(either \cs{GLSfmtshort} or \cs{GLSfmtname}). Suppose you want to suppress the \gls*{numberlist} using \pkgopt{nonumberlist}. This will automatically prevent the @@ -1912,6 +1951,13 @@ For example: } \end{verbatim} +The \gloskey{alias} key only contains a single label not a list, but +if you want to ensure consistent formatting with \cs{glsxtrusesee} +and \cs{glsxtruseseealso} you can use (from v1.42): +\begin{definition}[\DescribeMacro\glsxtrusealias] +\cs{glsxtrusealias}\marg{label} +\end{definition} + The actual unformatted comma-separated list \meta{xr-list} stored in the \gloskey{seealso} field can be accessed with: \begin{definition}[\DescribeMacro\glsxtrseealsolabels] @@ -1946,6 +1992,21 @@ unless the \pkgopt{xindy} option is used with \sty{glossaries} v4.30+, in which case a distinct \texttt{seealso} cross-reference class is used instead. +The command that produces this \qt{see also} text is +\begin{definition}[\DescribeMacro\seealsoname] +\cs{seealsoname} +\end{definition} +If \ics{alsoname} (provided by language packages) is defined then +\cs{seealsoname} will simply be defined to \cs{alsoname} otherwise +it will be defined to \texttt{see also}. + +The language-sensitive \cs{alsoname} is used by general indexing +packages, such as \sty{makeidx}, so if you redefine \cs{alsoname} +the change will apply to normal indexes as well as glossaries. If +you only want to change the text produced by the \gloskey{seealso} +key without affecting general indexing (with \cs{index}) then +redefine \cs{seealsoname} instead. + \section{Entry Display Style Modifications} \label{sec:entryfmtmods} @@ -1959,8 +2020,9 @@ depends on the command used (such as \cs{gls}) and the entry format. The default entry format (\ics{glsentryfmt}) used in the \gls{linktext} by commands like \ics{gls}, \ics{glsxtrfull}, \ics{glsxtrshort} and \ics{glsxtrlong} (but not commands like -\ics{glslink}, \ics{glsfirst} and \cs{glstext}) is changed by \styfmt{glossaries-extra} to test for -regular entries, which are determined as follows: +\ics{glslink}, \ics{glsfirst} and \cs{glstext}) is changed by +\styfmt{glossaries-extra} to test for regular entries, which are +determined as follows: \begin{itemize} \item If an entry is assigned to a category that has the @@ -2178,167 +2240,32 @@ The \abbrstyle{short-postfootnote} abbreviation style uses the post-\gls{linktext} hook to place the footnote after trailing punctuation characters. -You can set the default options used by \ics{glslink}, \ics{gls} -etc with: -\begin{definition}[\DescribeMacro\GlsXtrSetDefaultGlsOpts] -\cs{GlsXtrSetDefaultGlsOpts}\marg{options} -\end{definition} -For example, if you mostly don't want to index entries then -you can do: -\begin{verbatim} -\GlsXtrSetDefaultGlsOpts{noindex} -\end{verbatim} -and then use, for example, \verb|\gls[noindex=false]{sample}| -when you actually want the location added to the \gls{numberlist}. -These defaults may be overridden by other settings (such as -category attributes) in addition to any settings passed in the -option argument of commands like \cs{glslink} and \cs{gls}. -Note that if you don't want \emph{any} indexing, just omit -\cs{makeglossaries} and \cs{printglossaries} (or analogous -commands). If you want to adjust the default for -\gloskey[glslink]{wrgloss}, it's better to do this by redefining -\ics{glsxtrinitwrgloss} instead. +\section{Entry Counting Modifications} +\label{sec:entrycountmods} -\begin{important} -\cs{GlsXtrSetDefaultGlsOpts} doesn't affect \cs{glsadd}. -\end{important} +If you are using \gls{bib2gls} you may find it more convenient +to use the record count commands described in +\sectionref{sec:bib2gls} instead. -If you want to change the default value of \gloskey[glsadd]{format}, -you can instead use: -\begin{definition}[\GlsXtrSetDefaultNumberFormat] -\cs{GlsXtrSetDefaultNumberFormat}\marg{format} -\end{definition} -This has the advantage of also working for \cs{glsadd}. -For example, if you want all locations in the back matter to appear -in italic (unless explicitly overridden): +The \ics{glsenableentrycount} command is modified to allow +for the \catattr{entrycount} attribute. This means that +you not only need to enable entry counting with +\cs{glsenableentrycount}, but you also need +to set the appropriate attribute (see \sectionref{sec:categories}). + +For example, instead of just doing: \begin{verbatim} -\backmatter -\GlsXtrSetDefaultNumberFormat{hyperit} +\glsenableentrycount +\end{verbatim} +you now need to do: +\begin{verbatim} +\glsenableentrycount +\glssetcategoryattribute{abbreviation}{entrycount}{1} \end{verbatim} - -Commands like \ics{gls} have star (\texttt{*}) and plus -(\texttt{+}) modifiers as a short cut for \texttt{hyper=false} -and \texttt{hyper=true}. The \styfmt{glossaries-extra} package -provides a way to add a third modifier, if required, using -\begin{definition}[\DescribeMacro\GlsXtrSetAltModifier] -\cs{GlsXtrSetAltModifier}\marg{char}\marg{options} -\end{definition} -where \meta{char} is the character used as the modifier and -\meta{options} is the default set of options (which may be -overridden). Note that \meta{char} must be a single character -(not a UTF-8 character, unless you are using \XeLaTeX\ or -\LuaLaTeX). - -\begin{important} -When choosing the character \meta{char} take care of any -changes in category code. -\end{important} - -Example: -\begin{verbatim} -\GlsXtrSetAltModifier{!}{noindex} -\end{verbatim} -This means that \verb|\gls!{sample}| will be equivalent to -\verb|\gls[noindex]{sample}|. It's not possible to mix modifiers. -For example, if you want to do -\begin{verbatim} -\gls[noindex,hyper=false]{sample} -\end{verbatim} -you can use \verb|\gls*[noindex]{sample}| or -\verb|\gls![hyper=false]{sample}| but you can't combine the -\texttt{*} and \texttt{!} modifiers. - -\Glspl{locationlist} displayed with \cs{printnoidxglossary} -internally use -\begin{definition}[\DescribeMacro\glsnoidxdisplayloc] -\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location} -\end{definition} -This command is provided by \styfmt{glossaries}, but is modified by -\styfmt{glossaries-extra} to check for the start and end range -formation identifiers \verb|(| and \verb|)| which are discarded to -obtain the actual control sequence name that forms the location -formatting command. - -If the range identifiers aren't present, this just uses -\begin{definition}[\DescribeMacro\glsxtrdisplaysingleloc] -\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} -\end{definition} -otherwise it uses -\begin{definition}[\DescribeMacro\glsxtrdisplaystartloc] -\cs{glsxtrdisplaystartloc}\marg{format}\marg{location} -\end{definition} -for the start of a range (where the identifier has been stripped -from \meta{format}) or -\begin{definition}[\DescribeMacro\glsxtrdisplayendloc] -\cs{glsxtrdisplayendloc}\marg{format}\marg{location} -\end{definition} -for the end of a range (where the identifier has been stripped -from \meta{format}). - -By default the start range command saves the format in -\begin{definition}[\DescribeMacro\glsxtrlocrangefmt] -\cs{glsxtrlocrangefmt} -\end{definition} -and does -\begin{display} -\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} -\end{display} -(If the format is empty, it will be replaced with -\texttt{glsnumberformat}.) - -The end command checks that the format matches the start of the -range, does -\begin{definition}[\DescribeMacro\glsxtrdisplayendlochook] -\cs{glsxtrdisplayendlochook}\marg{format}\marg{location} -\end{definition} -(which does nothing by default), followed by -\begin{display} -\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} -\end{display} -and then sets \cs{glsxtrlocrangefmt} to empty. - -This means that the list -\begin{verbatim} -\glsnoidxdisplayloc{}{page}{(textbf}{1}, -\glsnoidxdisplayloc{}{page}{textbf}{1}, -\glsnoidxdisplayloc{}{page}{)textbf}{1}. -\end{verbatim} -doesn't display any differently from -\begin{verbatim} -\glsnoidxdisplayloc{}{page}{textbf}{1}, -\glsnoidxdisplayloc{}{page}{textbf}{1}, -\glsnoidxdisplayloc{}{page}{textbf}{1}. -\end{verbatim} -but it does make it easier to define your own custom list handler -that can accommodate the ranges. - - -\section{Entry Counting Modifications} -\label{sec:entrycountmods} - -If you are using \gls{bib2gls} you may find it more convenient -to use the record count commands described in -\sectionref{sec:bib2gls} instead. - -The \ics{glsenableentrycount} command is modified to allow -for the \catattr{entrycount} attribute. This means that -you not only need to enable entry counting with -\cs{glsenableentrycount}, but you also need -to set the appropriate attribute (see \sectionref{sec:categories}). - -For example, instead of just doing: -\begin{verbatim} -\glsenableentrycount -\end{verbatim} -you now need to do: -\begin{verbatim} -\glsenableentrycount -\glssetcategoryattribute{abbreviation}{entrycount}{1} -\end{verbatim} -This will enable the entry counting for entries in the -\category{abbreviation} category, but any entries assigned to -other categories will be unchanged. +This will enable the entry counting for entries in the +\category{abbreviation} category, but any entries assigned to +other categories will be unchanged. Further information about entry counting, including the new per-unit feature, is described in \sectionref{sec:entrycount}. @@ -2457,6 +2384,12 @@ where \meta{cs} is a control sequence that takes a single argument (which is the entry label). This is best used with the starred version \cs{GlsXtrStartUnsetBuffering*} to avoid duplicates. +You can discard the buffer and restore \cs{glsunset} to its normal +behaviour with (new to v1.42): +\begin{definition}[\DescribeMacro\GlsXtrDiscardUnsetBuffering] +\cs{GlsXtrDiscardUnsetBuffering} +\end{definition} + \begin{important} Note that since the change in the first use flag now doesn't occur until \cs{GlsXtrStopUnsetBuffering}, multiple references @@ -2995,7 +2928,16 @@ The simplest way to update a document that uses \begin{verbatim} \setabbreviationstyle[acronym]{long-short} \end{verbatim} -before you define any entries. +before you define any entries. If you have used commands like +\ics{acrshort}, \ics{acrlong} and \ics{acrfull}, you need to +substitute them with \ics{glsxtrshort}, \ics{glsxtrlong} and +\ics{glsxtrfull}. (This includes plural and case-changing forms.) +Your text editor's search and replace function should help with +this. If you have used the \pkgopt{shortcuts} package option then +use \pkgopt[ac]{shortcuts} in order to continue using the shortcut +commands like \ics{ac}. With this setting, \ics{acs} will use +\ics{glsxtrshort} instead of \ics{acrshort} etc. + For example, the following document using just \styfmt{glossaries} \begin{verbatim} \documentclass{article} @@ -3129,1587 +3071,1775 @@ is redefined to use the subsequent use abbreviation font command \ics{glsabbrvfont}. This will be reset if you use \cs{RestoreAcronyms}. -\section{\styfmt{glossary-bookindex} package} -\label{sec:bookindex} +\section{Glossaries} -As from v1.21, \styfmt{glossaries-extra} has a new supplementary -package \sty{glossary-bookindex} which provides the glossary style -\glostyle{bookindex}. This is very similar to the -\glostyle{mcolindexgroup} style but is designed for indexes, so by -default only the name and location list are displayed. You can -either load this package explicitly and then set the style: -\begin{verbatim} -\usepackage{glossaries-extra} -\usepackage{glossary-bookindex} -\setglossarystyle{bookindex} -\end{verbatim} -or use both the \pkgopt{stylemods} and \sty{style} options: -\begin{verbatim} -\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra} -\end{verbatim} -The \glostyle{bookindex} style only supports a maximum -hierarchical level of 2 (top-level, level~1 and level~2). It's -primarily designed for use with \gls{bib2gls}. It may be used with -other indexing options, but some features may not be present and -UTF-8 characters may cause a problem with non-Unicode engines in -letter group headings or PDF bookmarks. (\gls{bib2gls} uses numeric -identifies by default to avoid these problems. If numbers show up in -the group headings instead of the appropriate characters, check that -you have used the \pkgopt{record} package option.) +The \ics{newignoredglossary}\marg{type} command now (as from v1.11) has a starred +version that doesn't automatically switch off the hyperlinks. +This starred version may be used with the \catattr{targeturl} +attribute to create a link to an external URL. (See +\sectionref{sec:categories} for further details.) +As from v1.12 both the starred and unstarred version check +that the glossary doesn't already exist. (The \styfmt{glossaries} +package omits this check.) -The number of columns is given by -\begin{definition}[\DescribeMacro\glsxtrbookindexcols] -\cs{glsxtrbookindexcols} +You can now provide an ignored glossary with: +\begin{definition}[\DescribeMacro\provideignoredglossary] +\cs{provideignoredglossary}\marg{type} \end{definition} -which defaults to 2. +which will only define the glossary if it doesn't already exist. +This also has a starred version that doesn't automatically switch +off hyperlinks. -This style uses the \env{multicols} environment. If -the command -\begin{definition}[\DescribeMacro\glsxtrbookindexcolspread] -\cs{glsxtrbookindexcolspread} +The individual glossary displaying commands \ics{printglossary}, +\ics{printnoidxglossary} and \cs{printunsrtglossary} have extra +keys: + +\begin{itemize} +\item \gloskey[printglossary]{target}. This is a boolean key which can +be used to switch off the automatic hypertarget for each entry. +Unlike \cs{glsdisablehyper} this doesn't switch off hyperlinks, so +any cross-references within the glossary won't be affected. This is +a way of avoiding duplicate target warnings if a glossary needs to +be displayed multiple times. +\item +\gloskey[printglossary]{targetnameprefix}\texttt{=}\marg{prefix}. Another way +of avoiding duplicate target names is to set a prefix +used for the names. Unlike changing \cs{glolinkprefix} this doesn't affect +any hyperlinks (such as those created with \cs{gls}). +\item +\gloskey[printglossary]{prefix}\texttt{=}\marg{prefix}. If you do +actually want to locally change \cs{glolinkprefix}, you can use +the \gloskey{prefix} key instead. You need to use the matching +\gloskey[glslink]{prefix} key in commands like \cs{gls}. + +\item +\gloskey[printglossary]{label}\texttt{=}\marg{label}. Labels +the glossary with \texttt{\cs{label}\marg{label}} and also +defines \cs{@currentlabelname} to the glossary's TOC title +(to provide text for \cs{nameref}). You can also set the +label before the glossary using: +\begin{definition}[\DescribeMacro\glsxtrsetglossarylabel] +\cs{glsxtrsetglossarylabel}\marg{label} \end{definition} -isn't empty then it's supplied as the optional argument -following \verb|\begin{multicols}|\marg{n}. You can switch from -\env{multicols} to \env{multicols*} by redefining -\begin{definition}[\DescribeMacro\glsxtrbookindexmulticolsenv] -\cs{glsxtrbookindexmulticolsenv} +but take care of duplicate labels if it's not scoped. +\end{itemize} + +\subsection{Glossary Style Modifications} +\label{sec:glosstylemods} + +The \sty{glossaries-extra-stylemods} package (more conveniently +loaded through the \styfmt{glossaries-extra} +\pkgopt{stylemods} option) modifies some of the predefined +styles that are provided with the \styfmt{glossaries} package. +These modifications are described in more detail in +\sectionref{sec:stylemods}. + +The \sty{glossaries} package tries to determine the group +title from its label by first checking if +\cs{}\meta{label}\texttt{groupname} exists. If it doesn't exist, +then the title is assumed to be the same as the label. +For example, when typesetting the \qt{A} letter group, +\sty{glossaries} first checks if \cs{Agroupname} exists. +This could potentially cause conflict with another package +that may have some other meaning for \cs{Agroupname}, so +\sty{glossaries-extra} first checks for the existence +of the internal command \cs{glsxtr@grouptitle@}\meta{label} +which shouldn't clash with another package. You can set the +group title using +\begin{definition}[\DescribeMacro\glsxtrsetgrouptitle] +\cs{glsxtrsetgrouptitle}\marg{label}\marg{title} \end{definition} -For example +For example: \begin{verbatim} -\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*} +\glsxtrsetgrouptitle{A}{A (a)} \end{verbatim} +This uses a global assignment. If you need to scope the change +you can use +\begin{definition}[\DescribeMacro\glsxtrlocalsetgrouptitle] +\cs{glsxtrlocalsetgrouptitle}\marg{label}\marg{title} +\end{definition} -Each top-level entry is displayed using -\begin{definition}[\DescribeMacro\glsxtrbookindexname] -\cs{glsxtrbookindexname}\marg{label} +\subsubsection{Style Hooks} +\label{sec:stylehooks} + +The commands \ics{glossentryname} and \ics{glossentrydesc} are +modified to take into account the \catattr{glossname}, +\category{glossnamefont}, \catattr{glossdesc} and \catattr{glossdescfont} +attributes (see \sectionref{sec:categories}). This means you can +make simple font or case-changing modifications to the name and description +without defining a new glossary style. + +(New to version 1.42.) +The command \ics{glossentrysymbol} is modified to take into account +the \catattr{glosssymbolfont}. Note that, unlike the above, there's +no corresponding attribute to change the case as it's usually not +appropriate to change the case of a symbol (and for some symbols, +such as pictographs, there's no concept of case). If +\ics{texorpdfstring} has been defined \ics{glossentrysymbol} will +be defined to do: +\begin{alltt} +\ics{texorpdfstring}\marg{\TeX\ code}\marg{PDF} +\end{alltt} +The \meta{\TeX\ code} part is robust and deals with the actual +typesetting of the symbol. The \meta{PDF} part is simply: +\begin{definition}[\DescribeMacro\glsentrypdfsymbol] +\cs{glsentrypdfsymbol}\marg{label} \end{definition} -where the entry is identified by \meta{label}. This just -does \cs{glossentryname}\marg{label} by default. -For example, if you want the symbol to be included: +which is defined to just do \cs{glsentrysymbol}\marg{label}. The +chances are that the code in the \gloskey{symbol} key won't be valid +in the PDF bookmarks, so you can redefine \cs{glsentrypdfsymbol} to +use a more appropriate field. (If you do redefine this command, +remember that it needs to fully expand.) + +For example, if you are using \sty{glossaries-accsupp}, you could +use the \gloskey{symbolaccess} field: \begin{verbatim} -\renewcommand*{\glsxtrbookindexname}[1]{% - \glossentryname{#1}% - \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}% -} +\renewcommand{\glsentrypdfsymbol}[1]{\glsentrysymbolaccess{#1}} \end{verbatim} -or if you want the description (if set): +Alternatively, if you are using \gls{bib2gls} you can use the \TeX\ +parser library to interpret a copy of the \gloskey{symbol} field and +use that. For example, with the resource options: \begin{verbatim} -\renewcommand*{\glsxtrbookindexname}[1]{% - \glossentryname{#1}% - \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}% -} + replicate-fields={symbol=user1}, + interpret-fields={user1} \end{verbatim} -(which picks up the post-description hook). - -Alternatively you can use the \cs{glsxtrpostname\meta{category}} -hook to append information after the name according to the entry's -category. - -Sub-entries are displayed using -\begin{definition}[\DescribeMacro\glsxtrbookindexsubname] -\cs{glsxtrbookindexsubname}\marg{label} -\end{definition} -which just defaults to \cs{glsxtrbookindexname}\marg{label}. - -The separator used before the location list for top-level -entries is given by -\begin{definition}[\DescribeMacro\glsxtrbookindexprelocation] -\cs{glsxtrbookindexprelocation}\marg{label} -\end{definition} -where \meta{label} is the entry's label. This checks if -the \texttt{location} field has been set. If it has, it -does +This stores the interpreted value of the symbol in the +\gloskey{user1} field, so you can then do: \begin{verbatim} -,\glsxtrprelocation +\renewcommand{\glsentrypdfsymbol}[1]{\glsentryuseri{#1}} \end{verbatim} -otherwise it just does \cs{glsxtrprelocation} (which defaults -to \cs{space}). If you're not using -\gls{bib2gls}, the \gloskey{location} field won't be set. +(You may need \XeLaTeX\ or \LuaLaTeX\ with this method.) This allows +\cs{glossentrysymbol} to be used in a section heading with +standalone definitions. -The separator used before the -location list for sub-entries is given by -\begin{definition}[\DescribeMacro\glsxtrbookindexsubprelocation] -\cs{glsxtrbookindexsubprelocation}\marg{label} +If you want to adapt a style to use another field instead +of \gloskey{name}, you can use +\begin{definition}[\DescribeMacro\glossentrynameother] +\cs{glossentrynameother}\marg{label}\marg{field} \end{definition} -which defaults to \cs{glsxtrbookindexprelocation}\marg{label}. +This behaves just like \cs{glossentryname} (that is, it obeys +\catattr{glossname}, \catattr{glossnamefont} or \cs{glsnamefont} and uses the post-name +hook) but it uses the given \meta{field} instead of \gloskey{name}. +The \meta{field} argument must be the internal field name +(for example \texttt{desc} rather than \texttt{description}). +See the key to field mappings table in the \styfmt{glossaries} +user manual. -The actual location list is encapsulated with: -\begin{definition}[\DescribeMacro\glsxtrbookindexlocation] -\cs{glsxtrbookindexlocation}\marg{label}\marg{location list} +There is a hook after \ics{glossentryname} and +\ics{Glossentryname}: +\begin{definition}[\DescribeMacro\glsxtrpostnamehook] +\cs{glsxtrpostnamehook}\marg{label} \end{definition} -for top-level entries and -\begin{definition}[\DescribeMacro\glsxtrbookindexsublocation] -\cs{glsxtrbookindexsublocation}\marg{label}\marg{location list} +By default this checks the \catattr{indexname} attribute. +If the attribute exists for the category to which the label belongs, +then the name is automatically indexed using +\begin{definition} +\ics{glsxtrdoautoindexname}\marg{label}\texttt{\{indexname\}} \end{definition} -for sub-entries. These both just do \meta{location list} by default. +See \sectionref{sec:autoindex} for further details. -The separator used between a top-level parent and child entry is -given by -\begin{definition}[\DescribeMacro\glsxtrbookindexparentchildsep] -\cs{glsxtrbookindexparentchildsep} +\begin{sloppypar} +As from version 1.04, the post-name hook \cs{glsxtrpostnamehook} +will also use \cs{glsxtrpostname}\meta{category} if it exists. +You can use \ics{glscurrententrylabel} to obtain the entry label +with the definition of this command. For example, suppose you are +using a glossary style the doesn't display the symbol, you can +insert the symbol after the name for a particular category, say, +the \qt{symbol} category: +\end{sloppypar} +\begin{verbatim} +\newcommand*{\glsxtrpostnamesymbol}{\space + (\glsentrysymbol{\glscurrententrylabel})} +\end{verbatim} +For convenience, as from v1.31, you can use +\begin{definition}[\DescribeMacro\glsdefpostname] +\cs{glsdefpostname}\marg{category}\marg{definition} \end{definition} -This defaults to \cs{nopagebreak}. +This is simply a shortcut for: +\begin{alltt} +\cs{csdef}\{glsxtrpostname\meta{category}\}\marg{definition} +\end{alltt} +Note that it doesn't check if the command has already been defined. -The separator used between a sub-level parent and child entry is -given by -\begin{definition}[\DescribeMacro\glsxtrbookindexparentsubchildsep] -\cs{glsxtrbookindexparentsubchildsep} +As from version 1.25, the post-name hook also does +\begin{definition}[\DescribeMacro\glsextrapostnamehook] +\cs{glsextrapostnamehook}\marg{label} \end{definition} -This defaults to \cs{glsxtrbookindexparentchildsep}. +(before \cs{glsxtrpostname}\meta{category}) +to allow for additional non-category related code. This does nothing +by default. -The separator between top-level entries is given by -\begin{definition}[\DescribeMacro\glsxtrbookindexbetween] -\cs{glsxtrbookindexbetween}\marg{label1}\marg{label2} +The post-description code used within the glossary is modified so +that it also does +\begin{definition}[\DescribeMacro\glsxtrpostdescription] +\cs{glsxtrpostdescription} \end{definition} -This comes after the entry given by \meta{label1}, if the entry -has no children, or after the last descendent otherwise, -so it always comes immediately before the entry given -by \meta{label2} unless the entry occurs at the start of -a group. This does nothing by default. +This occurs before the original \cs{glspostdescription}, so if the +\pkgopt[false]{nopostdot} option is used, it will be inserted before +the terminating full stop. -The separator between two level~1 entries is given by -\begin{definition}[\DescribeMacro\glsxtrbookindexsubbetween] -\cs{glsxtrbookindexsubbetween}\marg{label1}\marg{label2} +This new command will do \cs{glsxtrpostdesc\meta{category}} +if it exists, where \meta{category} is the category label associated +with the current entry. For example \cs{glsxtrpostdescgeneral} +for entries with the category set to \category{general} +or \cs{glsxtrpostdescacronym} for entries with the category set to +\category{acronym}. +For convenience, as from v1.31, you can use +\begin{definition}[\DescribeMacro\glsdefpostdesc] +\cs{glsdefpostdesc}\marg{category}\marg{definition} \end{definition} +This is simply a shortcut for: +\begin{alltt} +\cs{csdef}\{glsxtrpostdesc\meta{category}\}\marg{definition} +\end{alltt} +Note that it doesn't check if the command has already been defined. -The separator between two level~2 entries is given by -\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubbetween] -\cs{glsxtrbookindexsubsubbetween}\marg{label1}\marg{label2} -\end{definition} -At the end of each letter group, the following hooks -are done in order: -\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubatendgroup] -\cs{glsxtrbookindexsubsubatendgroup}\marg{sub-sub-label} -\end{definition} -\begin{definition}[\DescribeMacro\glsxtrbookindexsubatendgroup] -\cs{glsxtrbookindexsubatendgroup}\marg{sub-label} -\end{definition} -\begin{definition}[\DescribeMacro\glsxtrbookindexatendgroup] -\cs{glsxtrbookindexatendgroup}\marg{label} +Since both \cs{glossentry} and \cs{subglossentry} set +\begin{definition}[\DescribeMacro\glscurrententrylabel] +\cs{glscurrententrylabel} \end{definition} -where \meta{sub-sub-label} is the label of the last -level~2 entry, \meta{sub-label} is the label of the last -level~1 entry and \meta{label} is the label of the last -level~0 entry. +to the label for the current entry, you can use this within the +definition of these post-description hooks if you need to reference +the label. -For example, the resource option \texttt{seealso=omit} -instructs \gls{bib2gls} to omit the \texttt{seealso} cross-reference -from the location list. (The \texttt{see} cross-reference -will still be added unless you also have \texttt{see=omit}.) -The \texttt{seealso} cross-reference can instead be appended after -the child entries using: +For example, suppose you want to insert the plural form in brackets +after the description in the glossary, but only for entries in the +\category{general} category, then you could do: \begin{verbatim} -\renewcommand{\glsxtrbookindexatendgroup}[1]{% - \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}% -} -\renewcommand{\glsxtrbookindexbetween}[2]{% - \glsxtrbookindexatendgroup{#1}% -}% +\renewcommand{\glsxtrpostdescgeneral}{\space + (plural: \glsentryplural{\glscurrententrylabel})} +\end{verbatim} +This means you don't have to define a custom glossary style, which +you may find more complicated. (It also allows more flexibility if +you decide to change the underlying glossary style.) -\renewcommand{\glsxtrbookindexsubatendgroup}[1]{% - \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}% -} +\begin{important} +This feature can't be used for glossary styles that ignore +\cs{glspostdescription} or if you redefine +\cs{glspostdescription} without including \cs{glsxtrpostdescription}. +(For example, if you redefine \cs{glspostdescription} to do +nothing instead of using the \pkgopt{nopostdot} option to suppress +the terminating full stop.) See \sectionref{sec:stylemods} to patch +the predefined styles provided by \styfmt{glossaries} that are missing +\cs{glspostdescription}. +\end{important} -\renewcommand{\glsxtrbookindexsubbetween}[2]{% - \glsxtrbookindexsubatendgroup{#1}% -} +\subsubsection{Number List} +\label{sec:glosstylenumlist} -\renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{% - \glsxtrifhasfield{seealso}{#1}% - {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}% -} +The \gls{numberlist} is now placed inside the argument of +\begin{definition}[\DescribeMacro\GlsXtrFormatLocationList] +\cs{GlsXtrFormatLocationList}\marg{number list} +\end{definition} +This is internally used by \cs{glossaryentrynumbers}. The +\pkgopt{nonumberlist} option redefines \cs{glossaryentrynumbers} so that it +doesn't display the \gls{numberlist}, but it still saves the +\gls{numberlist} in case it's required. -\renewcommand{\glsxtrbookindexsubsubbetween}[2]{% - \glsxtrbookindexsubsubatendgroup{#1}% -} -\end{verbatim} -This uses \cs{glstreesubitem} and \cs{glstreesubsubitem} -to indent the cross-reference according to the next level down, -so the cross-reference for a top-level entry is aligned with -the sub-entries, and a level~1 entry has its cross-reference -aligned with sub-sub-entries. In the event that a level~2 -entry has a cross-reference, this is indented a bit further -(but it won't be aligned with any deeper level as the -\glostyle{bookindex} style only supports a maximum of two -sub-levels). +\begin{important} +If you want to suppress the \gls{numberlist} always use the +\pkgopt{nonumberlist} option instead of redefining +\cs{glossaryentrynumbers} to do nothing. +\end{important} -The \glostyle{bookindex} style uses group headings. (If you -use \gls{bib2gls} remember to invoke it with the \verb|--group| -or \verb|-g| switch.) The heading will use -\begin{definition}[\DescribeMacro\glsxtrbookindexbookmark] -\cs{glsxtrbookindexbookmark}\marg{group title}\marg{name} -\end{definition} -If \cs{pdfbookmark} has been defined, this will -use that command to bookmark the group title. If -\pkgopt[chapter]{section} is set (default if chapters are defined) -then this uses level~1 otherwise it uses level~2. You can -redefine this command if this isn't appropriate. -If \cs{pdfbookmark} hasn't been defined, this command does nothin. +For example, to change the font for the entire +\gls{numberlist} redefine \cs{GlsXtrFormatLocationList} as +appropriate. Don't modify \cs{glossaryentrynumbers}. -The group heading is formatted according to -\begin{definition}[\DescribeMacro\glsxtrbookindexformatheader] -\cs{glsxtrbookindexformatheader}\marg{group title} +Sometimes users like to insert \qt{page} or \qt{pages} in front of +the \gls{numberlist}. This is quite fiddly to do with the base +\styfmt{glossaries} package, but \styfmt{glossaries-extra} +provides a way of doing this. First you need to enable this +option and specify the text to display using: +\begin{definition}[\DescribeMacro\GlsXtrEnablePreLocationTag] +\cs{GlsXtrEnablePreLocationTag}\marg{page}\marg{pages} \end{definition} -which is defined as +where \meta{page} is the text to display if the \gls{numberlist} only +contains a single location and \meta{pages} is the text to display +otherwise. For example: \begin{verbatim} -\newcommand*{\glsxtrbookindexformatheader}[1]{% - \par{\centering\glstreegroupheaderfmt{#1}\par}% -} +\GlsXtrEnablePreLocationTag{Page: }{Pages: } \end{verbatim} -where \cs{glstreegroupheaderfmt} is provided by the -\sty{glossary-tree} package, which is automatically loaded. -Note that the entry names aren't encapsulated with -\cs{glstreenamefmt}. +An extra run is required when using this command. -The \sty{glossary-bookindex} package provides some supplementary -commands that aren't used by default, but may be used when -adjusting the style. These commands should only be -used within one of the \cs{print\ldots glossary} commands. -(That is, they should only be used in glossary styles.) -\begin{definition}[\DescribeMacro\glsxtrbookindexmarkentry] -\cs{glsxtrbookindexmarkentry}\marg{label} +\begin{important} +Use \texttt{glsignore} not \texttt{@gobble} as the format if you +want to suppress the page number (and only index the entry once). +\end{important} + +See the accompanying sample file \texttt{sample-pages.tex}. + +Note that \gls{bib2gls} can be instructed to insert +a prefix at the start of non-empty location lists, which +can be used as an alternative to \cs{GlsXtrEnablePreLocationTag}. + +\Glspl{locationlist} displayed with \cs{printnoidxglossary} +internally use +\begin{definition}[\DescribeMacro\glsnoidxdisplayloc] +\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location} \end{definition} -This writes information to the \texttt{.aux} file that -can be read on the next run to obtain the first and last entry on -each page of the glossary. +This command is provided by \styfmt{glossaries}, but is modified by +\styfmt{glossaries-extra} to check for the start and end range +formation identifiers \verb|(| and \verb|)| which are discarded to +obtain the actual control sequence name that forms the location +formatting command. -You can display the first entry -associated with the current page using: -\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmark] -\cs{glsxtrbookindexfirstmark} +If the range identifiers aren't present, this just uses +\begin{definition}[\DescribeMacro\glsxtrdisplaysingleloc] +\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} \end{definition} -and the last entry associated with the current page -using: -\begin{definition}[\DescribeMacro\glsxtrbookindexlastmark] -\cs{glsxtrbookindexlastmark} +otherwise it uses +\begin{definition}[\DescribeMacro\glsxtrdisplaystartloc] +\cs{glsxtrdisplaystartloc}\marg{format}\marg{location} \end{definition} -These do nothing if there are no entries marked on the current page -(or if the document build isn't up to date). +for the start of a range (where the identifier has been stripped +from \meta{format}) or +\begin{definition}[\DescribeMacro\glsxtrdisplayendloc] +\cs{glsxtrdisplayendloc}\marg{format}\marg{location} +\end{definition} +for the end of a range (where the identifier has been stripped +from \meta{format}). -The entry is formatted using: -\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmarkfmt] -\cs{glsxtrbookindexfirstmarkfmt}\marg{label} +By default the start range command saves the format in +\begin{definition}[\DescribeMacro\glsxtrlocrangefmt] +\cs{glsxtrlocrangefmt} \end{definition} -for the first instance and -\begin{definition}[\DescribeMacro\glsxtrbookindexlastmarkfmt] -\cs{glsxtrbookindexlastmarkfmt}\marg{label} +and does +\begin{display} +\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} +\end{display} +(If the format is empty, it will be replaced with +\texttt{glsnumberformat}.) + +The end command checks that the format matches the start of the +range, does +\begin{definition}[\DescribeMacro\glsxtrdisplayendlochook] +\cs{glsxtrdisplayendlochook}\marg{format}\marg{location} \end{definition} -for the last. +(which does nothing by default), followed by +\begin{display} +\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location} +\end{display} +and then sets \cs{glsxtrlocrangefmt} to empty. -These commands are designed for use in page headers or footers -where the page number is stable. For example, \cs{glsxtrbookindexname} -can be redefined to mark the current entry: +This means that the list \begin{verbatim} -\renewcommand{\glsxtrbookindexname}[1]{% - \glsxtrbookindexmarkentry{#1}% - \glossentryname{#1}% -} +\glsnoidxdisplayloc{}{page}{(textbf}{1}, +\glsnoidxdisplayloc{}{page}{textbf}{1}, +\glsnoidxdisplayloc{}{page}{)textbf}{1}. \end{verbatim} -If you only want to mark the top-level entries, remember -to redefine \cs{glsxtrbookindexsubname} as it defaults -to \cs{glsxtrbookindexname}: +doesn't display any differently from \begin{verbatim} -\renewcommand{\glsxtrbookindexsubname}[1]{% - \glossentryname{#1}% -} +\glsnoidxdisplayloc{}{page}{textbf}{1}, +\glsnoidxdisplayloc{}{page}{textbf}{1}, +\glsnoidxdisplayloc{}{page}{textbf}{1}. \end{verbatim} +but it does make it easier to define your own custom list handler +that can accommodate the ranges. -Then if you're using \sty{fancyhdr} you can set the page style -to show the first and last entry for the current page with: +\subsubsection{The \styfmt{glossaries-extra-stylemods} Package} +\label{sec:stylemods} + +As from v1.02, \styfmt{glossaries-extra} now includes the package +\sty{glossaries-extra-stylemods} that will redefine the predefined +styles to include the post-description hook (for those that are +missing it). You will need to make sure the styles have already +been defined before loading \styfmt{glossaries-extra}. For example: \begin{verbatim} - \pagestyle{fancy}% - \lhead{\thepage}% - \lfoot{\glsxtrbookindexfirstmark}% - \cfoot{}% - \rfoot{\glsxtrbookindexlastmark}% +\usepackage{glossaries-extra} +\usepackage{glossary-longragged} +\usepackage{glossaries-extra-stylemods} \end{verbatim} - -\section{\styfmt{glossary-longextra} package} -\label{sec:longextra} - -As from version 1.37, the \styfmt{glossaries-extra} package comes -with the supplementary package \sty{glossary-longextra} that -provides additional styles, listed below, that use the -\env{longtable} environment. If you know that your glossary won't -span more than a page and you need to use it in a context that's -incompatible with \env{longtable}, you can instead setup these styles -to use \env{tabular} instead. In order to do this you must use -\begin{definition}[\DescribeMacro\GlsLongExtraUseTabulartrue] -\cs{GlsLongExtraUseTabulartrue} -\end{definition} -\emph{before the style is set}. For example: +Alternatively you can load +\texttt{glossary-}\meta{name}\texttt{.sty} at the same time by +passing \meta{name} as a package option to +\sty{glossaries-extra-stylemods}. For example: \begin{verbatim} -\GlsLongExtraUseTabulartrue -\setglossarystyle{long-name-desc} +\usepackage{glossaries-extra} +\usepackage[longragged]{glossaries-extra-stylemods} \end{verbatim} -or +Another option is to use the \pkgopt{stylemods} key when you +load \styfmt{glossaries-extra}. You can omit a value if you only want to use +the predefined styles that are automatically loaded by +\styfmt{glossaries} (for example, the \glostyle{long3col} style): \begin{verbatim} -\GlsLongExtraUseTabulartrue -\printunsrtglossary[style={long-name-desc}] +\usepackage[style=long3col,stylemods]{glossaries-extra} +\end{verbatim} +Or the value of \pkgopt{stylemods} may be a comma-separated list +of the style package identifiers. For example: +\begin{verbatim} +\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra} +\end{verbatim} +Remember to group the value if it contains any commas: +\begin{verbatim} +\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra} \end{verbatim} -If you use this setting, you can change the default vertical -alignment with: -\begin{definition}[\DescribeMacro\glslongextraTabularVAlign] -\cs{glslongextraTabularVAlign} -\end{definition} -The default definition is \texttt{c}. - -The column titles are formatted according to: -\begin{definition}[\DescribeMacro\glslongextraHeaderFmt] -\cs{glslongextraHeaderFmt}\marg{text} -\end{definition} -which simply does \cs{textbf}\marg{text} by default. -The name column has the title given by \ics{entryname} and -the column alignment is given by: -\begin{definition}[\DescribeMacro\glslongextraNameAlign] -\cs{glslongextraNameAlign} -\end{definition} -which expands to \texttt{l} (left) by default. +Note that the \glostyle{inline} style is dealt with slightly +differently. The original definition provided by the +\sty{glossary-inline} package uses \cs{glspostdescription} at the +end of the glossary (not after each entry description) within the +definition of \cs{glspostinline}. The style modification changes +this so that \cs{glspostinline} just does a full stop followed by +space factor adjustment, and the description +\cs{glsinlinedescformat} and sub-entry description formats +\cs{glsinlinesubdescformat} are redefined to include +\cs{glsxtrpostdescription} (not \cs{glspostdescription}). This means +that the modified \glostyle{inline} style isn't affected by the +\pkgopt{nopostdot} option, but the post-description category hook +can still be used. -The symbol column (where applicable) has the title given by -\ics{symbolname} and the column alignment is given by: -\begin{definition}[\DescribeMacro\glslongextraSymbolAlign] -\cs{glslongextraSymbolAlign} -\end{definition} -which expands to \texttt{c} (centred) by default. +The \env{tabular}-like styles, such as \glostyle{long} are +adjusted so that the \ics{ifglsnogroupskip} conditional (set with +\pkgopt{nogroupskip}) is moved outside of the definition of +\cs{glsgroupskip} to avoid problems that cause an \qt{Incomplete +\cs{iftrue}} error with \cs{printunsrtglossary} and +\cs{printnoidxglossary}. This means that if you want to change this +conditional using \cs{setupglossaries} or using the +\gloskey[printglossary]{nogroupskip} option in \cs{printglossary}, +\cs{printnoidxglossary} or \cs{printunsrtglossary}, you must also +reset the glossary style. -The location list column (where applicable) has the title given by -\ics{pagelistname} and the column alignment is given by: -\begin{definition}[\DescribeMacro\glslongextraLocationAlign] -\cs{glslongextraLocationAlign} +As from version 1.21, the hard-coded \cs{space} before the +\gls{numberlist} in many of the predefined styles is replaced +with +\begin{definition}[\DescribeMacro\glsxtrprelocation] +\cs{glsxtrprelocation} \end{definition} -which expands to +This just defaults to \cs{space} but may be redefined as required. +For example: \begin{verbatim} ->{\raggedright}p{\glspagelistwidth} +\renewcommand{\glsxtrprelocation}{\dotfill} \end{verbatim} -by default. (Ragged-right paragraph, \ics{glspagelistwidth} is -defined in \sty{glossary-long}, which is automatically loaded.) -The description column has the title given by \ics{descriptionname} -and the column alignment is given by: -\begin{definition}[\DescribeMacro\glslongextraDescAlign] -\cs{glslongextraDescAlign} +The \glostyle{list} styles use +\begin{definition}[\DescribeMacro\glslistprelocation] +\cs{glslistprelocation} \end{definition} -which expands to -\begin{verbatim} ->{\raggedright}p{\glsdescwidth} -\end{verbatim} -by default. (Ragged-right paragraph, \ics{glsdescwidth} is -defined in \sty{glossary-long}, which is automatically loaded.) +(which defaults to \cs{glsxtrprelocation}) for top-level items and +\begin{definition}[\DescribeMacro\glslistchildprelocation] +\cs{glslistchildprelocation} +\end{definition} +(which defaults to \cs{glslistprelocation}) for child items. -Unlike the long styles provided by the base \styfmt{glossaries} -package, these new styles try to determine the value of -\cs{glsdescwidth} at the start of the glossary according to the -number of columns provided by the style. The calculations are -performed by the following commands: -\begin{definition}[\DescribeMacro\glslongextraSetDescWidth] -\cs{glslongextraSetDescWidth} +As from v1.31, the description (including the post-description hook) +is governed by: +\begin{definition}[\DescribeMacro\glslistdesc] +\cs{glslistdesc}\marg{label} \end{definition} -This is used by the styles that have a name and description -column. The value of \cs{glsdescwidth} is computed as: -\[ - \cs{glsdescwidth} = \cs{linewidth} - 4\cs{tabcolsep} - W -\] -where $W$ is a guess at the width of the name column. This is first -set to the width of the name column header: -\begin{alltt} -\cs{settowidth}\marg{width}\{\cs{glslongextraHeaderFmt}\cs{entryname}\} -\end{alltt} -If any names in that column are larger than this, then you need -to specify the widest name using: -\begin{definition}[\DescribeMacro\glslongextraSetWidest] -\cs{glslongextraSetWidest}\marg{widest name} +for the \glostyle{list} and \glostyle{altlist} styles (but not the +\glostyle{listdotted} variations). + +For just the \glostyle{list} style and its letter group variations +(not the \glostyle{altlist} or \glostyle{listdotted} variations) the +\gls{numberlist} for child entries is followed by +\begin{definition}[\DescribeMacro\glslistchildpostlocation] +\cs{glslistchildpostlocation} \end{definition} -or -\begin{definition}[\DescribeMacro\glslongextraUpdateWidest] -\cs{glslongextraUpdateWidest}\marg{text} +which defaults to a full stop. + +The default value of \ics{glslistdottedwidth} is changed so that +it's set at the start of the document (if it hasn't been changed in +the preamble). This should take into account situations where +\cs{hsize} isn't set until the start of the document. + +The separator between groups (if not \pkgopt{nogroupskip}) is now +given by: +\begin{definition}[\DescribeMacro\glslistgroupskip] +\cs{glslistgroupskip} \end{definition} -These work like the analogous commands \cs{glssetwidest} and -\cs{glsupdatewidest} provided with the \glostyle{alttree} style, but -in this case there's no hierarchy. The default widest name -is obtained from the \glostyle{alttree} top-level name if set, -otherwise it's empty, so you can use \gls{bib2gls}['s] -\texttt{set-widest} option. If you have the entry counter enabled, -you will need to include this with the name for the extra material to -be taken into account. +This defaults to \cs{indexspace} with penalties to deter page +breaks. +This command isn't used if \pkgopt{nogroupskip} is set. -The name isn't shown for child entries by default, but if -you change this and you want to use \gls{bib2gls}['s] -\texttt{set-widest} option (for \gls{bib2gls} v1.8+) then you need to -redefine: -\begin{definition}[\DescribeMacro\glslongextraUpdateWidestChild] -\cs{glslongextraUpdateWidestChild}\marg{level}\marg{text} +The \sty{glossary-tree} package introduced new commands in +v4.22, \ics{glstreegroupheaderfmt} +and \ics{glstreenavigationfmt}, which are used to format +the letter group headings and the navigation elements for the +appropriate styles. These two new commands are defined in terms of +\ics{glstreenamefmt} since that was the command originally used +for the group headings and navigation. This now allows these +different elements to be defined independently, but the most common +redefinition is for \cs{glstreenamefmt} to remove the bold in the +name. If the bold is still required for the group heading and navigation +elements, then both other commands also need redefining. To simplify +matters, if \cs{glstreenamefmt} has been defined, as from v1.31 +\sty{glossaries-extra-stylemods} defines: +\begin{definition}[\DescribeMacro\glstreedefaultnamefmt] +\cs{glstreedefaultnamefmt}\marg{text} \end{definition} -This does nothing by default, but if you are including the child -names then you need to redefine this command: -\begin{verbatim} -\renewcommand{\glslongextraUpdateWidestChild}[2]{% - \glslongextraUpdateWidest{#2}% -} -\end{verbatim} +which simply does \cs{textbf}\marg{text} and redefines +\cs{glstreenamefmt}, \cs{glstreegroupheaderfmt} and +\cs{glstreenavigationfmt} all in terms of +\cs{glstreedefaultnamefmt}. -If you prefer to set an explicit width for the description -column then you need to redefine \cs{glslongextraSetDescWidth}. For -example: -\begin{verbatim} -\renewcommand{\glslongextraSetDescWidth}{% - \setlength{\glsdescwidth}{0.6\linewidth}% -} -\end{verbatim} +This means that if you want to change +all three to use a particular style you only need to redefine +\cs{glstreedefaultnamefmt}, but if you only want to redefine +\cs{glstreenamefmt} without affecting the other two commands, then +you now can. -The styles that have a name, symbol and description, -\cs{glsdescwidth} is set with: -\begin{definition}[\DescribeMacro\glslongextraSymSetDescWidth] -\cs{glslongextraSymSetDescWidth} +The separator between groups without headers is given by: +\begin{definition}[\DescribeMacro\glstreegroupskip] +\cs{glstreegroupskip} \end{definition} -This first uses \cs{glslongextraSetDescWidth} and then subtracts -2\cs{tabcolsep} and the width of the symbol column header from -\cs{glsdescwidth}. This assumes that the symbol column header -is larger than any of the symbols. If this isn't appropriate -then you can redefine this command. For example: -\begin{verbatim} -\renewcommand{\glslongextraSymSetDescWidth}{% - \glslongextraSetDescWidth - \addtolength{\glsdescwidth}{-3cm}% -} -\end{verbatim} -or +This defaults to just \ics{indexspace} without penalties. This +command isn't used if \pkgopt{nogroupskip} is set. (The penalties +introduced in v1.41 were moved to \cs{glstreeheadergroupskip} in +v1.42 as they are inappropriate when there's no header.) + +The separator between groups with headers is now given by (as from v1.42): +\begin{definition}[\DescribeMacro\glstreeheadergroupskip] +\cs{glstreegroupheaderskip} +\end{definition} +This defaults to \cs{glstreegroupskip} with penalties to deter page +breaks after the group heading. + +The styles that display the group titles now use: +\begin{definition}[\DescribeMacro\glstreePreHeader] +\cs{glstreePreHeader}\marg{label}\marg{title} +\end{definition} +where \meta{label} is the group label and \meta{title} is the group +title. This does nothing by default +and is inserted before the group title. You can redefine it to add +the group title to the PDF bookmarks. For example, if the +glossary title uses \cs{chapter} then: \begin{verbatim} -\renewcommand{\glslongextraSymSetDescWidth}{% - \setlength{\glsdescwidth}{.5\linewidth}% +\renewcommand{\glstreePreHeader}[2]{% + \pdfbookmark[1]{#2}{\currentglossary.#1}% } \end{verbatim} +will insert section-level bookmarks. The use of \cs{currentglossary} +helps to provide unique bookmark labels in the event of multiple +glossaries. -For the styles that have a name, description and location column, -\cs{glsdescwidth} is set using: -\begin{definition}[\DescribeMacro\glslongextraLocSetDescWidth] -\cs{glslongextraLocSetDescWidth} +The \glostyle{index}-like and \glostyle{tree}-like styles +insert the pre-\gls{numberlist} space with +\begin{definition}[\DescribeMacro\glstreeprelocation] +\cs{glstreeprelocation} \end{definition} -This uses \cs{glslongextraSetDescWidth} and then subtracts -2\cs{tabcolsep} and \cs{glspagelistwidth} from \cs{glsdescwidth}. -You can redefine this command to set both \cs{glsdescwidth} and -\cs{glspagelistwidth} if appropriate. - -For the styles that have a name, description, symbol and location -column, \cs{glsdescwidth} is set using: -\begin{definition}[\DescribeMacro\glslongextraSymLocSetDescWidth] -\cs{glslongextraSymLocSetDescWidth} +(which defaults to \cs{glsxtrprelocation}) for top-level items and +\begin{definition}[\DescribeMacro\glstreechildprelocation] +\cs{glstreechildprelocation} \end{definition} -This uses \cs{glslongextraSymSetDescWidth} and then subtracts -2\cs{tabcolsep} and \cs{glspagelistwidth} from -\cs{glsdescwidth}. Again, you can redefine this command -to explicitly set both lengths. +(which defaults to \cs{glstreeprelocation}) for child items. -In all cases, the top-level name is formatted according to: -\begin{definition}[\DescribeMacro\glslongextraNameFmt] -\cs{glslongextraNameFmt}\marg{label} +As from version 1.31, the \styfmt{glossaries-extra-stylemods} +package also provides: +\begin{definition}[\DescribeMacro\glstreenonamedesc] +\cs{glstreenonamedesc}\marg{label} \end{definition} -This does -\begin{alltt} -\cs{glsentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{glossentryname}\marg{label}\} -\end{alltt} -which includes the entry counter (if enabled), the target and the post-name link. - -The top-level description is formatted according to: -\begin{definition}[\DescribeMacro\glslongextraDescFmt] -\cs{glslongextraDescFmt}\marg{label} +which is used by the \glostyle{treenoname} styles to display the +pre-description separator, the description and the post-description +hook. Similarly for the symbol: +\begin{definition}[\DescribeMacro\glstreenonamesymbol] +\cs{glstreenonamesymbol}\marg{label} \end{definition} -This does \cs{glossentrydesc}\marg{label} followed by the -post-description hook. - -The styles that have a symbol column format the symbol using: -\begin{definition}[\DescribeMacro\glslongextraSymbolFmt] -\cs{glslongextraSymbolFmt}\marg{label} +The above are just used for top-level entries. Child entries don't +have the name or symbol displayed for the \glostyle{treenoname} +styles, so there's only a command for the child description: +\begin{definition}[\DescribeMacro\glstreenonamechilddesc] +\cs{glstreenonamechilddesc}\marg{label} \end{definition} -This just does \cs{glossentrysymbol}\marg{label}. -The styles that have a location list column format the list using: -\begin{definition}[\DescribeMacro\glslongextraLocationFmt] -\cs{glslongextraLocationFmt}\marg{label}\marg{locations} +For the \glostyle{tree} styles (but not the \glostyle{treenoname} or +\glostyle{alttree} styles), the description is displayed using: +\begin{definition}[\DescribeMacro\glstreedesc] +\cs{glstreedesc}\marg{label} \end{definition} -This just does \meta{locations} and ignores the label. - -The child entries have their name formatted according to: -\begin{definition}[\DescribeMacro\glslongextraSubNameFmt] -\cs{glslongextraSubNameFmt}\marg{level}\marg{label} +and the symbol with: +\begin{definition}[\DescribeMacro\glstreesymbol] +\cs{glstreesymbol}\marg{label} \end{definition} -where \meta{level} is the hierarchical level. This defaults to: -\begin{alltt} -\cs{glssubentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{strut}\} -\end{alltt} -This includes the sub-entry counter (if enabled) and the target -but doesn't show the name. The child description is formatted according to: -\begin{definition}[\DescribeMacro\glslongextraSubDescFmt] -\cs{glslongextraSubDescFmt}\marg{level}\marg{label} +Again the above two commands are just for top-level entries. The +child entries use: +\begin{definition}[\DescribeMacro\glstreechilddesc] +\cs{glstreechilddesc}\marg{label} \end{definition} -which defaults to just \cs{glslongextraDescFmt}\marg{label} - -The child symbol is formatted (where appropriate) according to: -\begin{definition}[\DescribeMacro\glslongextraSubSymbolFmt] -\cs{glslongextraSubSymbolFmt}\marg{level}\marg{label} +for the description and +\begin{definition}[\DescribeMacro\glstreechildsymbol] +\cs{glstreechildsymbol}\marg{label} \end{definition} -This just does \cs{glslongextraSymbolFmt}\marg{label} by default. - -The styles that have a location list column format the list for -child entries using: -\begin{definition}[\DescribeMacro\glslongextraLocationFmt] -\cs{glslongextraSubLocationFmt}\meta{level}\marg{label}\marg{locations} +for the symbol. +As from version 1.41, there are now wrapper commands for +\cs{glstreedesc} and \cs{glstreechilddesc} that check for +the description and symbol to determine what separator to use +before the page list. These are: +\begin{definition}[\DescribeMacro\glstreeDescLoc] +\cs{glstreeDescLoc}\marg{label}\marg{location} \end{definition} -This just does \meta{locations} and ignores the level and label. +for top-level entries and +\begin{definition}[\DescribeMacro\glstreeChildDescLoc] +\cs{glstreeChildDescLoc}\marg{label}\marg{location} +\end{definition} +for sub-entries. -The letter group headings are formatted according to: -\begin{definition}[\DescribeMacro\glslongextraGroupHeading] -\cs{glslongextraGroupHeading}\marg{n}\marg{label} +If either the symbol or description is present these will use +\cs{glstreeprelocation} or \cs{glstreechildprelocation}, +respectively. Otherwise, both will use (from v1.42): +\begin{definition}[\DescribeMacro\glstreeNoDescSymbolPreLocation] +\cs{glstreeNoDescSymbolPreLocation} \end{definition} -which does nothing by default. The first argument \meta{n} is the -number of columns in the table. The second argument \meta{label} -is the group label (not the title, although they may happen -to be the same). +The default is a space. This means that you could have, say, a +comma followed by a space for terms that are simply an alias, but +just have a space for terms that have a description that ends with a +full stop (or that just have a symbol without a description) where +the comma would be inappropriate. -This can be redefined to show the group heading. For example: -\begin{verbatim} -\renewcommand*{\glslongextraGroupHeading}[2]{% - \glsxtrgetgrouptitle{#2}{\thisgrptitle}% - \glslongextraHeaderFmt{\thisgrptitle}% - \tabularnewline - \noalign{\vskip\normalbaselineskip}% -} -\end{verbatim} -This ignores the first argument and just puts the group -title in the first column formatted according to -\cs{glslongextraHeaderFmt} (to match the column header). +Note that version 1.42 has corrected an error that was introduced to +v1.41 that caused the name to run into the location list if there +was no symbol and no description. -Remember that you can also adjust the styles through category -attributes. The name column's title is given by -\cs{entryname}, the description column's title is given by -\cs{descriptionname} and (where present) the symbol column's -title is given by \cs{symbolname}, as for the other long styles -that have headers. - -\begin{description} -\item{\glostyle{long-name-desc}} This is like the -\glostyle{longragged-booktabs} style but doesn't show the location -list (regardless of the \pkgopt{nonumberlist} option). The name is -shown in the first column and the description in the second. +As from version 1.05, the \styfmt{glossaries-extra-stylemods} +package provides some additional commands for use with the +\glostyle{alttree} style to make it easier to modify. +These commands are only defined if the +\sty{glossary-tree} package has already been loaded, which is +typically the case unless the \pkgopt{notree} option has been used +when loading \styfmt{glossaries}. -The symbol is not displayed. The header -row is produced with: -\begin{definition}[\DescribeMacro\glslongextraNameDescHeader] -\cs{glslongextraNameDescHeader} -\end{definition} -This essentially uses the same code as for \glostyle{longragged-booktabs} -but makes it easier to adjust the header without having to define a -new style. This is defined as: -\begin{verbatim} -\glslongextraNameDescTabularHeader\endhead -\glslongextraNameDescTabularFooter\endfoot -\end{verbatim} -where: -\begin{definition}[\DescribeMacro\glslongextraNameDescTabularHeader] -\cs{glslongextraNameDescTabularHeader} -\end{definition} -sets up the header and -\begin{definition}[\DescribeMacro\glslongextraNameDescTabularFooter] -\cs{glslongextraNameDescTabularFooter} +\begin{definition}[\DescribeMacro\gglssetwidest] +\cs{gglssetwidest}\oarg{level}\marg{name} \end{definition} -sets up the footer. If you have setup the \env{tabular} version -of this style then the above two commands are used at the -start and end of the \env{tabular} environment (and -\cs{glslongextraNameDescHeader} isn't used). - -For example, to simply remove the header and footer (for the default -\env{longtable} version of the style): -\begin{verbatim} -\renewcommand{\glslongextraNameDescHeader}{} -\end{verbatim} -Or to change the name alignment to centred: -\begin{verbatim} -\renewcommand{\glslongextraNameAlign}{c} -\end{verbatim} +(New to version 1.21.) +This is like \cs{glssetwidest} (provided by \sty{glossary-tree}) +but performs a global assignment. -\item{\glostyle{long-name-desc-loc}} This is like the -\glostyle{long-name-desc} style but has a third column for the -location list. The \env{longtable} header is given by: -\begin{definition}[\DescribeMacro\glslongextraNameDescLocationHeader] -\cs{glslongextraNameDescLocationHeader} +\begin{definition}[\DescribeMacro\eglssetwidest] +\cs{eglssetwidest}\oarg{level}\marg{name} \end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularHeader] -\cs{glslongextraNameDescLocationTabularHeader} +This is like \cs{glssetwidest} +but performs a protected expansion on \meta{name}. This has +a localised effect. For a global setting, use +\begin{definition}[\DescribeMacro\xglssetwidest] +\cs{xglssetwidest}\oarg{level}\marg{name} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularFooter] -\cs{glslongextraNameDescLocationTabularFooter} +The following only set the value if \meta{name} is wider than the +current value (new to version 1.23). Local update: +\begin{definition}[\DescribeMacro\glsupdatewidest] +\cs{glsupdatewidest}\oarg{level}\marg{name} \end{definition} - -\item{\glostyle{long-desc-name}} This is like the -\glostyle{long-name-desc} style but swaps the columns. Note that -if the entry counter is displayed it will appear at the start -of the second column by default. The \env{longtable} header is formatted according -to: -\begin{definition}[\DescribeMacro\glslongextraDescNameHeader] -\cs{glslongextraDescNameHeader} +Global update: +\begin{definition}[\DescribeMacro\gglsupdatewidest] +\cs{gglsupdatewidest}\oarg{level}\marg{name} \end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraDescNameTabularHeader] -\cs{glslongextraDescNameTabularHeader} +Locale update (expands \meta{name}): +\begin{definition}[\DescribeMacro\eglsupdatewidest] +\cs{eglsupdatewidest}\oarg{level}\marg{name} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraDescNameTabularFooter] -\cs{glslongextraDescNameTabularFooter} +Global update (expands \meta{name}): +\begin{definition}[\DescribeMacro\xglsupdatewidest] +\cs{xglsupdatewidest}\oarg{level}\marg{name} \end{definition} -\item{\glostyle{long-loc-desc-name}} This has three columns -containing the location list, description and name. The -\env{longtable} header -is formatted according to: -\begin{definition}[\DescribeMacro\glslongextraLocationDescNameHeader] -\cs{glslongextraLocationDescNameHeader} -\end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularHeader] -\cs{glslongextraLocationDescNameTabularHeader} + +The widest entry value can later be retrieved using +\begin{definition}[\DescribeMacro\glsgetwidestname] +\cs{glsgetwidestname} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularFooter] -\cs{glslongextraLocationDescNameTabularFooter} +for the top-level entries and +\begin{definition}[\DescribeMacro\glsgetwidestsubname] +\cs{glsgetwidestsubname}\marg{level} \end{definition} +for sub-entries, where \meta{level} is the level number. -\item{\glostyle{long-name-desc-sym}} This is has three columns, with -the name in the first, the description in the second and the symbol -in the third. +Note that if you are using \gls{bib2gls}, you can use the +resource option \texttt{set-widest} which will try to determine the +widest name of all the selected entries. This isn't guaranteed +to work as it may depend on fonts or commands that \gls{bib2gls} +can't replicate, but it should be suitable for names that just +consist of text, and can be more efficient than iterating over all +the defined entries using \TeX. -The \env{longtable} header row is produced with: -\begin{definition}[\DescribeMacro\glslongextraNameDescSymHeader] -\cs{glslongextraNameDescSymHeader} -\end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularHeader] -\cs{glslongextraNameDescSymTabularHeader} +The command \cs{glsfindwidesttoplevelname} provided by +\sty{glossary-tree} has a CamelCase synonym: +\begin{definition}[\DescribeMacro\glsFindWidestTopLevelName] +\cs{glsFindWidestTopLevelName}\oarg{glossary list} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularFooter] -\cs{glslongextraNameDescSymTabularFooter} +Similar commands are also provided: +\begin{definition}[\DescribeMacro\glsFindWidestUsedTopLevelName] +\cs{glsFindWidestUsedTopLevelName}\oarg{glossary list} \end{definition} +This has an additional check that the entry has been used. +Naturally this is only useful if the glossaries that use +the \glostyle{alttree} style occur at the end of the document. +This command should be placed just before the start of the glossary. +(Alternatively, place it at the end of the document and save +the value in the auxiliary file for the next run.) -\item{\glostyle{long-name-desc-sym-loc}} This is has four columns, with -the name in the first, the description in the second, the symbol -in the third and the location list in the fourth. +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyName] +\cs{glsFindWidestUsedAnyName}\oarg{glossary list} +\end{definition} +This is like the previous command but if doesn't check the +\gloskey{parent} key. This is useful if all levels should have the +same width for the name. -The \env{longtable} header row is produced with: -\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationHeader] -\cs{glslongextraNameDescSymLocationHeader} +\begin{definition}[\DescribeMacro\glsFindWidestAnyName] +\cs{glsFindWidestAnyName}\oarg{glossary list} \end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularHeader] -\cs{glslongextraNameDescSymLocationTabularHeader} +This is like the previous command but doesn't check if the entry +has been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedLevelTwo] +\cs{glsFindWidestUsedLevelTwo}\oarg{glossary list} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularFooter] -\cs{glslongextraNameDescSymLocationTabularFooter} +This is like \cs{glsFindWidestUsedTopLevelName} but also sets +the first two sub-levels as well. Any entry that has a +great-grandparent is ignored. + +\begin{definition}[\DescribeMacro\glsFindWidestLevelTwo] +\cs{glsFindWidestLevelTwo}\oarg{glossary list} \end{definition} +This is like the previous command but doesn't check if the entry has +been used. -\item{\glostyle{long-name-sym-desc}} This is like the -\glostyle{long-name-desc-sym} but the second and third column are -swapped. The \env{longtable} header row is given by: -\begin{definition}[\DescribeMacro\glslongextraNameSymDescHeader] -\cs{glslongextraNameSymDescHeader} +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbol] +\cs{glsFindWidestUsedAnyNameSymbol}\oarg{glossary +list}\marg{register} \end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularHeader] -\cs{glslongextraNameSymDescTabularHeader} +This is like \cs{glsFindWidestUsedAnyName} but also measures the +symbol. The length of the widest symbol is stored in +\meta{register}. + +\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbol] +\cs{glsFindWidestAnyNameSymbol}\oarg{glossary list}\marg{register} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularFooter] -\cs{glslongextraNameSymDescTabularFooter} +This is like the previous command but it doesn't check if the entry +has been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbolLocation] +\cs{glsFindWidestUsedAnyNameSymbolLocation}\oarg{glossary +list}\marg{symbol register}\marg{location register} \end{definition} +This is like \cs{glsFindWidestUsedAnyNameSymbol} but also +measures the \gls{numberlist}. This requires +\ics{glsentrynumberlist} (see the \styfmt{glossaries} user manual). +The length of the widest symbol is stored in \meta{symbol register} +and the length of the widest \gls*{numberlist} is stored in +\meta{location register}. -\item{\glostyle{long-name-sym-desc-loc}} This is like the -\glostyle{long-name-desc-sym-loc} but the second and third column are -swapped. The \env{longtable} header row is given by: -\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationHeader] -\cs{glslongextraNameSymDescLocationHeader} +\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbolLocation] +\cs{glsFindWidestAnyNameSymbolLocation}\oarg{glossary +list}\marg{symbol register}\marg{location register} \end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularHeader] -\cs{glslongextraNameSymDescLocationTabularHeader} +This is like the previous command but it doesn't check if the entry +has been used. + +\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameLocation] +\cs{glsFindWidestUsedAnyNameLocation}\oarg{glossary +list}\marg{register} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularFooter] -\cs{glslongextraNameSymDescLocationTabularFooter} +This is like \cs{glsFindWidestUsedAnyNameSymbolLocation} but doesn't +measure the symbol. The length of the widest \gls{numberlist} +is stored in \meta{register}. + +\begin{definition}[\DescribeMacro\glsFindWidestAnyNameLocation] +\cs{glsFindWidestAnyNameLocation}\oarg{glossary +list}\marg{register} \end{definition} +This is like the previous command but doesn't check if the entry has +been used. -\item{\glostyle{long-sym-desc-name}} This has the symbol in the -first column, the description in the second and the name in the -third. The \env{longtable} header row is given by: -\begin{definition}[\DescribeMacro\glslongextraSymDescNameHeader] -\cs{glslongextraSymDescNameHeader} -\end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularHeader] -\cs{glslongextraSymDescNameTabularHeader} +The layout of the symbol, description and \gls{numberlist} +is governed by +\begin{definition}[\DescribeMacro\glsxtralttreeSymbolDescLocation] +\cs{glsxtralttreeSymbolDescLocation}\marg{label}\marg{number list} \end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularFooter] -\cs{glslongextraSymDescNameTabularFooter} +for top-level entries and +\begin{definition}[\DescribeMacro\glsxtralttreeSubSymbolDescLocation] +\cs{glsxtralttreeSubSymbolDescLocation}\marg{label}\marg{number list} \end{definition} +for sub-entries. -\item{\glostyle{long-loc-sym-desc-name}} This has the location list -in the first column, symbol in the -second column, the description in the third and the name in the -fourth. The \env{longtable} header row is given by: -\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameHeader] -\cs{glslongextraLocationSymDescNameHeader} -\end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularHeader] -\cs{glslongextraLocationSymDescNameTabularHeader} -\end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularFooter] -\cs{glslongextraLocationSymDescNameTabularFooter} +There is now a user level command that performs the initialisation +for the \glostyle{alttree} style: +\begin{definition}[\DescribeMacro\glsxtralttreeInit] +\cs{glsxtralttreeInit} \end{definition} -\item{\glostyle{long-desc-sym-name}} This has the description in the -first column, the symbol in the second and the name in the -third. The \env{longtable} header row is given by: -\begin{definition}[\DescribeMacro\glslongextraDescSymNameHeader] -\cs{glslongextraDescSymNameHeader} -\end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularHeader] -\cs{glslongextraDescSymNameTabularHeader} -\end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularFooter] -\cs{glslongextraDescSymNameTabularFooter} +The paragraph indent for subsequent paragraphs in multi-paragraph +descriptions is provided by the length +\begin{definition}[\DescribeMacro\glsxtrAltTreeIndent] +\cs{glsxtrAltTreeIndent} \end{definition} -\item{\glostyle{long-loc-desc-sym-name}} This has the location list -in the first column, the description in the -second column, the symbol in the third and the name in the -fourth. The \env{longtable} header row is given by: -\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameHeader] -\cs{glslongextraLocationDescSymNameHeader} -\end{definition} -which similarly defined in terms of the commands used for the -\env{tabular} version: -\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularHeader] -\cs{glslongextraLocationDescSymNameTabularHeader} -\end{definition} -and -\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularFooter] -\cs{glslongextraLocationDescSymNameTabularFooter} -\end{definition} +For additional commands that are available with the +\glostyle{alttree} style, see the documented code +(\nolinkurl{glossaries-extra-code.pdf}). See also +the accompanying sample files \nolinkurl{sample-alttree.tex}, +\nolinkurl{sample-alttree-sym.tex} and +\nolinkurl{sample-alttree-marginpar.tex}. -\end{description} +\chapter{New Glossary Styles} -\section{\styfmt{glossary-topic} package} -\label{sec:topic} +The \styfmt{glossaries-extra} package comes with some new styles. +The associated style package needs to be loaded. This can be done +with \cs{usepackage} but it's simpler to use the \pkgopt{stylemods} +option. -As from version 1.40, the \styfmt{glossaries-extra} package comes -with the supplementary package \sty{glossary-topic} that -provides glossary styles designed for hierarchical glossaries -where the top-level entries are topic titles. This package -automatically loads the \sty{multicols} package. If the -\sty{glossary-tree} package is also loaded then commands like -\cs{glssetwidest} can be used on these styles in much the same way -as for the \glostyle{alttree} style. If a widest value isn't set -then these styles behave more like the \glostyle{tree} style. -\begin{description} -\item[\glostyle{topic}] This style is similar to the \glostyle{tree} -style but the indentation doesn't start until the second -sub-item level. The top-level entries have the name displayed -in a larger font with the description following in a new paragraph. -This style doesn't support the \pkgopt{nogroupskip} setting. +\section{\styfmt{glossary-bookindex} package} +\label{sec:bookindex} -\item[\glostyle{topicmcols}] This style is like the \glostyle{topic} -style but the sub-entries are placed inside a \env{multicols} -environment. The environment name is supplied in the value of -the command: -\begin{definition}[\DescribeMacro\glstopicColsEnv] -\cs{glstopicColsEnv} -\end{definition} -You can change this to the starred form. For example: +As from v1.21, \styfmt{glossaries-extra} has a new supplementary +package \sty{glossary-bookindex} which provides the glossary style +\glostyle{bookindex}. This is very similar to the +\glostyle{mcolindexgroup} style but is designed for indexes, so by +default only the name and location list are displayed. You can +either load this package explicitly and then set the style: \begin{verbatim} -\renewcommand{\glstopicColsEnv}{multicols*} +\usepackage{glossaries-extra} +\usepackage{glossary-bookindex} +\setglossarystyle{bookindex} \end{verbatim} -The number of columns is given by the command: -\begin{definition}[\DescribeMacro\glstopicCols] -\cs{glstopicCols} -\end{definition} -The default value is 2. -\end{description} -Both styles use the following commands. -\begin{definition}[\DescribeMacro\glstopicParIndent] -\cs{glstopicParIndent} -\end{definition} -This command is a length that's used for the paragraph indentation -in any multi-paragraph description for top-level entries, but not -for the first paragraph (at the start of the description) which -isn't indented. +or use both the \pkgopt{stylemods} and \sty{style} options: +\begin{verbatim} +\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra} +\end{verbatim} +The \glostyle{bookindex} style only supports a maximum +hierarchical level of 2 (top-level, level~1 and level~2). It's +primarily designed for use with \gls{bib2gls}. It may be used with +other indexing options, but some features may not be present and +UTF-8 characters may cause a problem with non-Unicode engines in +letter group headings or PDF bookmarks. (\gls{bib2gls} uses numeric +identifies by default to avoid these problems. If numbers show up in +the group headings instead of the appropriate characters, check that +you have used the \pkgopt{record} package option.) -\begin{definition}[\DescribeMacro\glstopicSubIndent] -\cs{glstopicSubIndent} +The number of columns is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexcols] +\cs{glsxtrbookindexcols} \end{definition} -This command is a length that's used to calculate the hanging -indentation for sub-entries. The level~1 sub-entries don't indent -the name. Level~$n$ sub-entries have the name indented by -$(n-1)\times$\cs{glstopicSubIndent}. The hanging indent depends -on whether or not a widest name has been set for the level. +which defaults to 2. -\begin{definition}[\DescribeMacro\glstopicInit] -\cs{glstopicInit} +This style uses the \env{multicols} environment. If +the command +\begin{definition}[\DescribeMacro\glsxtrbookindexcolspread] +\cs{glsxtrbookindexcolspread} \end{definition} -Hook used at the start of the glossary. Does nothing by default. +isn't empty then it's supplied as the optional argument +following \verb|\begin{multicols}|\marg{n}. You can switch from +\env{multicols} to \env{multicols*} by redefining +\begin{definition}[\DescribeMacro\glsxtrbookindexmulticolsenv] +\cs{glsxtrbookindexmulticolsenv} +\end{definition} +For example +\begin{verbatim} +\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*} +\end{verbatim} -Although the styles don't support letter groups by default, if you -have many topics (top-level entries) and you feel that it would help -the reader to divide them up into headed letter groups, you can -redefine: -\begin{definition}[\DescribeMacro\glstopicGroupHeading] -\cs{glstopicGroupHeading}\marg{group label} +Each top-level entry is displayed using +\begin{definition}[\DescribeMacro\glsxtrbookindexname] +\cs{glsxtrbookindexname}\marg{label} \end{definition} -This does nothing by default. If you want to redefine it, you can -fetch the title corresponding to the group label with -\cs{glsxtrgetgrouptitle}. For example: +where the entry is identified by \meta{label}. This just +does \cs{glossentryname}\marg{label} by default. +For example, if you want the symbol to be included: \begin{verbatim} -\renewcommand*{\glstopicGroupHeading}[1]{% - \glsxtrgetgrouptitle{#1}{\thisgrptitle}% - \section*{\thisgrptitle}% +\renewcommand*{\glsxtrbookindexname}[1]{% + \glossentryname{#1}% + \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}% } \end{verbatim} -Remember that if you use \gls{bib2gls}, you will need the -\verb|--group| (or \verb|-g|) switch to support this. +or if you want the description (if set): +\begin{verbatim} +\renewcommand*{\glsxtrbookindexname}[1]{% + \glossentryname{#1}% + \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}% +} +\end{verbatim} +(which picks up the post-description hook). -\begin{definition}[\DescribeMacro\glstopicItem] -\cs{glstopicItem}\marg{label}\marg{location list} +Alternatively you can use the \cs{glsxtrpostname\meta{category}} +hook to append information after the name according to the entry's +category. + +Sub-entries are displayed using +\begin{definition}[\DescribeMacro\glsxtrbookindexsubname] +\cs{glsxtrbookindexsubname}\marg{label} \end{definition} -Used to format the name, symbol, description and location list -for the top-level entries. This starts with a paragraph break -followed by: -\begin{definition}[\DescribeMacro\glstopicPreSkip] -\cs{glstopicPreSkip} +which just defaults to \cs{glsxtrbookindexname}\marg{label}. + +The separator used before the location list for top-level +entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexprelocation] +\cs{glsxtrbookindexprelocation}\marg{label} \end{definition} -which defaults to \cs{medskip}. There is then a hook: -\begin{definition}[\DescribeMacro\glstopicMarker] -\cs{glstopicMarker}\marg{label} +where \meta{label} is the entry's label. This checks if +the \texttt{location} field has been set. If it has, it +does +\begin{verbatim} +,\glsxtrprelocation +\end{verbatim} +otherwise it just does \cs{glsxtrprelocation} (which defaults +to \cs{space}). If you're not using +\gls{bib2gls}, the \gloskey{location} field won't be set. + +The separator used before the +location list for sub-entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexsubprelocation] +\cs{glsxtrbookindexsubprelocation}\marg{label} \end{definition} -which does nothing by default, but may be redefined. For example, -to add a line to the table of contents. -The name and symbol are set in the -form of a title using: -\begin{definition}[\DescribeMacro\glstopicTitle] -\cs{glstopicTitle}\marg{label} +which defaults to \cs{glsxtrbookindexprelocation}\marg{label}. + +The actual location list is encapsulated with: +\begin{definition}[\DescribeMacro\glsxtrbookindexlocation] +\cs{glsxtrbookindexlocation}\marg{label}\marg{location list} \end{definition} -This uses \cs{Glossentryname} which converts the first letter to -upper case. If there's a symbol, this is added in parentheses. -Both name and symbol (if present) are encapsulated by -\begin{definition}[\DescribeMacro\glstopicTitleFont] -\cs{glstopicTitleFont}\marg{text} +for top-level entries and +\begin{definition}[\DescribeMacro\glsxtrbookindexsublocation] +\cs{glsxtrbookindexsublocation}\marg{label}\marg{location list} \end{definition} -This uses a bold, large font by default. +for sub-entries. These both just do \meta{location list} by default. -If the entry has the description key set (tested with -\cs{ifglshasdesc}) then a paragraph break is inserted followed by: -\begin{definition}[\DescribeMacro\glstopicMidSkip] -\cs{glstopicMidSkip} -\end{definition} -which defaults to \cs{smallskip}. This is followed by the -description which is formatted according to: -\begin{definition}[\DescribeMacro\glstopicDesc] -\cs{glstopicDesc}\marg{label} +The separator used between a top-level parent and child entry is +given by +\begin{definition}[\DescribeMacro\glsxtrbookindexparentchildsep] +\cs{glsxtrbookindexparentchildsep} \end{definition} -This just does \cs{Glossentrydesc}\marg{label} followed -by the post-description hook. +This defaults to \cs{nopagebreak}. -A paragraph break followed by: -\begin{definition}[\DescribeMacro\glstopicPostSkip] -\cs{glstopicPostSkip} -\end{definition} -comes next regardless of whether or not the description was -displayed. This defaults to \cs{smallskip}. This is then followed -by: -\begin{definition}[\DescribeMacro\glstopicLoc] -\cs{glstopicLoc}\marg{label}\marg{location list} +The separator used between a sub-level parent and child entry is +given by +\begin{definition}[\DescribeMacro\glsxtrbookindexparentsubchildsep] +\cs{glsxtrbookindexparentsubchildsep} \end{definition} -which may be used to display the location list, but does nothing by -default. +This defaults to \cs{glsxtrbookindexparentchildsep}. -The sub-entries first set up the paragraph and hanging indentations -using: -\begin{definition}[\DescribeMacro\glstopicAssignSubIndent] -\cs{glstopicAssignSubIndent}\marg{level} +The separator between top-level entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexbetween] +\cs{glsxtrbookindexbetween}\marg{label1}\marg{label2} \end{definition} -This uses: -\begin{definition}[\DescribeMacro\glstopicAssignWidest] -\cs{glstopicAssignWidest}\marg{level} +This comes after the entry given by \meta{label1}, if the entry +has no children, or after the last descendent otherwise, +so it always comes immediately before the entry given +by \meta{label2} unless the entry occurs at the start of +a group. This does nothing by default. + +The separator between two level~1 entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexsubbetween] +\cs{glsxtrbookindexsubbetween}\marg{label1}\marg{label2} \end{definition} -to determine if a widest name has been set for the given level. -The sub-entry has its information displayed using: -\begin{definition}[\DescribeMacro\glstopicSubItem] -\cs{glstopicSubItem}\marg{level}\marg{label}\marg{location} +The separator between two level~2 entries is given by +\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubbetween] +\cs{glsxtrbookindexsubsubbetween}\marg{label1}\marg{label2} \end{definition} -This encapsulates the name with: -\begin{definition}[\DescribeMacro\glstopicSubNameFont] -\cs{glstopicSubNameFont}\marg{text} +At the end of each letter group, the following hooks +are done in order: +\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubatendgroup] +\cs{glsxtrbookindexsubsubatendgroup}\marg{sub-sub-label} \end{definition} -By default this just uses \cs{textbf}. This is followed by: -\begin{definition}[\DescribeMacro\glstopicSubItemSep] -\cs{glstopicSubItemSep} +\begin{definition}[\DescribeMacro\glsxtrbookindexsubatendgroup] +\cs{glsxtrbookindexsubatendgroup}\marg{sub-label} \end{definition} -which defaults to \cs{quad}. The name and separator are -passed in the \meta{text} argument of: -\begin{definition}[\DescribeMacro\glstopicSubItemBox] -\cs{glstopicSubItemBox}\marg{level}\marg{text} +\begin{definition}[\DescribeMacro\glsxtrbookindexatendgroup] +\cs{glsxtrbookindexatendgroup}\marg{label} \end{definition} -If a widest name was set for the given level, this will -put \meta{text} inside a box of that width otherwise it just does -\meta{text}. +where \meta{sub-sub-label} is the label of the last +level~2 entry, \meta{sub-label} is the label of the last +level~1 entry and \meta{label} is the label of the last +level~0 entry. -This is followed by the symbol in parentheses if set. Then, if the -description is set, the description and post-description hook are -displayed followed by: -\begin{definition}[\DescribeMacro\glstopicSubPreLocSep] -\cs{glstopicSubPreLocSep} -\end{definition} -(This command isn't used if the description isn't set.) +For example, the resource option \texttt{seealso=omit} +instructs \gls{bib2gls} to omit the \texttt{seealso} cross-reference +from the location list. (The \texttt{see} cross-reference +will still be added unless you also have \texttt{see=omit}.) +The \texttt{seealso} cross-reference can instead be appended after +the child entries using: +\begin{verbatim} +\renewcommand{\glsxtrbookindexatendgroup}[1]{% + \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}% +} +\renewcommand{\glsxtrbookindexbetween}[2]{% + \glsxtrbookindexatendgroup{#1}% +}% -Finally the location list is displayed using: -\begin{definition}[\DescribeMacro\glstopicSubLoc] -\cs{glstopicSubLoc}\marg{label}\marg{location} -\end{definition} -which just does \meta{location} by default. +\renewcommand{\glsxtrbookindexsubatendgroup}[1]{% + \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}% +} -\section{Glossary Style Modifications} -\label{sec:glosstylemods} +\renewcommand{\glsxtrbookindexsubbetween}[2]{% + \glsxtrbookindexsubatendgroup{#1}% +} -The \sty{glossaries-extra-stylemods} package (more conveniently -loaded through the \styfmt{glossaries-extra} -\pkgopt{stylemods} option) modifies some of the predefined -styles that are provided with the \styfmt{glossaries} package. -These modifications are described in more detail in -\sectionref{sec:stylemods}. +\renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{% + \glsxtrifhasfield{seealso}{#1}% + {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}% +} -The \sty{glossaries} package tries to determine the group -title from its label by first checking if -\cs{}\meta{label}\texttt{groupname} exists. If it doesn't exist, -then the title is assumed to be the same as the label. -For example, when typesetting the \qt{A} letter group, -\sty{glossaries} first checks if \cs{Agroupname} exists. -This could potentially cause conflict with another package -that may have some other meaning for \cs{Agroupname}, so -\sty{glossaries-extra} first checks for the existence -of the internal command \cs{glsxtr@grouptitle@}\meta{label} -which shouldn't clash with another package. You can set the -group title using -\begin{definition}[\DescribeMacro\glsxtrsetgrouptitle] -\cs{glsxtrsetgrouptitle}\marg{label}\marg{title} -\end{definition} -For example: -\begin{verbatim} -\glsxtrsetgrouptitle{A}{A (a)} +\renewcommand{\glsxtrbookindexsubsubbetween}[2]{% + \glsxtrbookindexsubsubatendgroup{#1}% +} \end{verbatim} -This uses a global assignment. If you need to scope the change -you can use -\begin{definition}[\DescribeMacro\glsxtrlocalsetgrouptitle] -\cs{glsxtrlocalsetgrouptitle}\marg{label}\marg{title} +This uses \cs{glstreesubitem} and \cs{glstreesubsubitem} +to indent the cross-reference according to the next level down, +so the cross-reference for a top-level entry is aligned with +the sub-entries, and a level~1 entry has its cross-reference +aligned with sub-sub-entries. In the event that a level~2 +entry has a cross-reference, this is indented a bit further +(but it won't be aligned with any deeper level as the +\glostyle{bookindex} style only supports a maximum of two +sub-levels). + +The \glostyle{bookindex} style uses group headings. (If you +use \gls{bib2gls} remember to invoke it with the \verb|--group| +or \verb|-g| switch.) The heading will use +\begin{definition}[\DescribeMacro\glsxtrbookindexbookmark] +\cs{glsxtrbookindexbookmark}\marg{group title}\marg{name} \end{definition} +If \cs{pdfbookmark} has been defined, this will +use that command to bookmark the group title. If +\pkgopt[chapter]{section} is set (default if chapters are defined) +then this uses level~1 otherwise it uses level~2. You can +redefine this command if this isn't appropriate. +If \cs{pdfbookmark} hasn't been defined, this command does nothin. -\subsection{Style Hooks} -\label{sec:stylehooks} +The group heading is formatted according to +\begin{definition}[\DescribeMacro\glsxtrbookindexformatheader] +\cs{glsxtrbookindexformatheader}\marg{group title} +\end{definition} +which is defined as +\begin{verbatim} +\newcommand*{\glsxtrbookindexformatheader}[1]{% + \par{\centering\glstreegroupheaderfmt{#1}\par}% +} +\end{verbatim} +where \cs{glstreegroupheaderfmt} is provided by the +\sty{glossary-tree} package, which is automatically loaded. +Note that the entry names aren't encapsulated with +\cs{glstreenamefmt}. -The commands \ics{glossentryname} and \ics{glossentrydesc} are -modified to take into account the \catattr{glossname}, -\catattr{glossdesc} and \catattr{glossdescfont} attributes (see \sectionref{sec:categories}). -This means you can make simple case-changing modifications to -the name and description without defining a new glossary style. +The \sty{glossary-bookindex} package provides some supplementary +commands that aren't used by default, but may be used when +adjusting the style. These commands should only be +used within one of the \cs{print\ldots glossary} commands. +(That is, they should only be used in glossary styles.) +\begin{definition}[\DescribeMacro\glsxtrbookindexmarkentry] +\cs{glsxtrbookindexmarkentry}\marg{label} +\end{definition} +This writes information to the \texttt{.aux} file that +can be read on the next run to obtain the first and last entry on +each page of the glossary. -If you want to adapt a style to use another field instead -of \gloskey{name}, you can use -\begin{definition}[\DescribeMacro\glossentrynameother] -\cs{glossentrynameother}\marg{label}\marg{field} +You can display the first entry +associated with the current page using: +\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmark] +\cs{glsxtrbookindexfirstmark} \end{definition} -This behaves just like \cs{glossentryname} (that is, it obeys -\catattr{glossname}, \catattr{glossnamefont} or \cs{glsnamefont} and uses the post-name -hook) but it uses the given \meta{field} instead of \gloskey{name}. -The \meta{field} argument must be the internal field name -(for example \texttt{desc} rather than \texttt{description}). -See the key to field mappings table in the \styfmt{glossaries} -user manual. +and the last entry associated with the current page +using: +\begin{definition}[\DescribeMacro\glsxtrbookindexlastmark] +\cs{glsxtrbookindexlastmark} +\end{definition} +These do nothing if there are no entries marked on the current page +(or if the document build isn't up to date). -There is a hook after \ics{glossentryname} and -\ics{Glossentryname}: -\begin{definition}[\DescribeMacro\glsxtrpostnamehook] -\cs{glsxtrpostnamehook}\marg{label} +The entry is formatted using: +\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmarkfmt] +\cs{glsxtrbookindexfirstmarkfmt}\marg{label} \end{definition} -By default this checks the \catattr{indexname} attribute. -If the attribute exists for the category to which the label belongs, -then the name is automatically indexed using -\begin{definition} -\ics{glsxtrdoautoindexname}\marg{label}\texttt{\{indexname\}} +for the first instance and +\begin{definition}[\DescribeMacro\glsxtrbookindexlastmarkfmt] +\cs{glsxtrbookindexlastmarkfmt}\marg{label} \end{definition} -See \sectionref{sec:autoindex} for further details. +for the last. -\begin{sloppypar} -As from version 1.04, the post-name hook \cs{glsxtrpostnamehook} -will also use \cs{glsxtrpostname}\meta{category} if it exists. -You can use \ics{glscurrententrylabel} to obtain the entry label -with the definition of this command. For example, suppose you are -using a glossary style the doesn't display the symbol, you can -insert the symbol after the name for a particular category, say, -the \qt{symbol} category: -\end{sloppypar} +These commands are designed for use in page headers or footers +where the page number is stable. For example, \cs{glsxtrbookindexname} +can be redefined to mark the current entry: \begin{verbatim} -\newcommand*{\glsxtrpostnamesymbol}{\space - (\glsentrysymbol{\glscurrententrylabel})} +\renewcommand{\glsxtrbookindexname}[1]{% + \glsxtrbookindexmarkentry{#1}% + \glossentryname{#1}% +} \end{verbatim} -For convenience, as from v1.31, you can use -\begin{definition}[\DescribeMacro\glsdefpostname] -\cs{glsdefpostname}\marg{category}\marg{definition} +If you only want to mark the top-level entries, remember +to redefine \cs{glsxtrbookindexsubname} as it defaults +to \cs{glsxtrbookindexname}: +\begin{verbatim} +\renewcommand{\glsxtrbookindexsubname}[1]{% + \glossentryname{#1}% +} +\end{verbatim} + +Then if you're using \sty{fancyhdr} you can set the page style +to show the first and last entry for the current page with: +\begin{verbatim} + \pagestyle{fancy}% + \lhead{\thepage}% + \lfoot{\glsxtrbookindexfirstmark}% + \cfoot{}% + \rfoot{\glsxtrbookindexlastmark}% +\end{verbatim} + +\section{\styfmt{glossary-longextra} package} +\label{sec:longextra} + +As from version 1.37, the \styfmt{glossaries-extra} package comes +with the supplementary package \sty{glossary-longextra} that +provides additional styles, listed below, that use the +\env{longtable} environment. If you know that your glossary won't +span more than a page and you need to use it in a context that's +incompatible with \env{longtable}, you can instead setup these styles +to use \env{tabular} instead. In order to do this you must use +\begin{definition}[\DescribeMacro\GlsLongExtraUseTabulartrue] +\cs{GlsLongExtraUseTabulartrue} \end{definition} -This is simply a shortcut for: -\begin{alltt} -\cs{csdef}\{glsxtrpostname\meta{category}\}\marg{definition} -\end{alltt} -Note that it doesn't check if the command has already been defined. +\emph{before the style is set}. For example: +\begin{verbatim} +\GlsLongExtraUseTabulartrue +\setglossarystyle{long-name-desc} +\end{verbatim} +or +\begin{verbatim} +\GlsLongExtraUseTabulartrue +\printunsrtglossary[style={long-name-desc}] +\end{verbatim} +If you use this setting, you can change the default vertical +alignment with: +\begin{definition}[\DescribeMacro\glslongextraTabularVAlign] +\cs{glslongextraTabularVAlign} +\end{definition} +The default definition is \texttt{c}. -As from version 1.25, the post-name hook also does -\begin{definition}[\DescribeMacro\glsextrapostnamehook] -\cs{glsextrapostnamehook}\marg{label} +The column titles are formatted according to: +\begin{definition}[\DescribeMacro\glslongextraHeaderFmt] +\cs{glslongextraHeaderFmt}\marg{text} \end{definition} -(before \cs{glsxtrpostname}\meta{category}) -to allow for additional non-category related code. This does nothing -by default. +which simply does \cs{textbf}\marg{text} by default. -The post-description code used within the glossary is modified so -that it also does -\begin{definition}[\DescribeMacro\glsxtrpostdescription] -\cs{glsxtrpostdescription} +The name column has the title given by \ics{entryname} and +the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraNameAlign] +\cs{glslongextraNameAlign} \end{definition} -This occurs before the original \cs{glspostdescription}, so if the -\pkgopt[false]{nopostdot} option is used, it will be inserted before -the terminating full stop. +which expands to \texttt{l} (left) by default. -This new command will do \cs{glsxtrpostdesc\meta{category}} -if it exists, where \meta{category} is the category label associated -with the current entry. For example \cs{glsxtrpostdescgeneral} -for entries with the category set to \category{general} -or \cs{glsxtrpostdescacronym} for entries with the category set to -\category{acronym}. -For convenience, as from v1.31, you can use -\begin{definition}[\DescribeMacro\glsdefpostdesc] -\cs{glsdefpostdesc}\marg{category}\marg{definition} +The symbol column (where applicable) has the title given by +\ics{symbolname} and the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraSymbolAlign] +\cs{glslongextraSymbolAlign} \end{definition} -This is simply a shortcut for: +which expands to \texttt{c} (centred) by default. + +The location list column (where applicable) has the title given by +\ics{pagelistname} and the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraLocationAlign] +\cs{glslongextraLocationAlign} +\end{definition} +which expands to +\begin{verbatim} +>{\raggedright}p{\glspagelistwidth} +\end{verbatim} +by default. (Ragged-right paragraph, \ics{glspagelistwidth} is +defined in \sty{glossary-long}, which is automatically loaded.) + +The description column has the title given by \ics{descriptionname} +and the column alignment is given by: +\begin{definition}[\DescribeMacro\glslongextraDescAlign] +\cs{glslongextraDescAlign} +\end{definition} +which expands to +\begin{verbatim} +>{\raggedright}p{\glsdescwidth} +\end{verbatim} +by default. (Ragged-right paragraph, \ics{glsdescwidth} is +defined in \sty{glossary-long}, which is automatically loaded.) + +Unlike the long styles provided by the base \styfmt{glossaries} +package, these new styles try to determine the value of +\cs{glsdescwidth} at the start of the glossary according to the +number of columns provided by the style. The calculations are +performed by the following commands: +\begin{definition}[\DescribeMacro\glslongextraSetDescWidth] +\cs{glslongextraSetDescWidth} +\end{definition} +This is used by the styles that have a name and description +column. The value of \cs{glsdescwidth} is computed as: +\[ + \cs{glsdescwidth} = \cs{linewidth} - 4\cs{tabcolsep} - W +\] +where $W$ is a guess at the width of the name column. This is first +set to the width of the name column header: \begin{alltt} -\cs{csdef}\{glsxtrpostdesc\meta{category}\}\marg{definition} +\cs{settowidth}\marg{width}\{\cs{glslongextraHeaderFmt}\cs{entryname}\} \end{alltt} -Note that it doesn't check if the command has already been defined. +If any names in that column are larger than this, then you need +to specify the widest name using: +\begin{definition}[\DescribeMacro\glslongextraSetWidest] +\cs{glslongextraSetWidest}\marg{widest name} +\end{definition} +or +\begin{definition}[\DescribeMacro\glslongextraUpdateWidest] +\cs{glslongextraUpdateWidest}\marg{text} +\end{definition} +These work like the analogous commands \cs{glssetwidest} and +\cs{glsupdatewidest} provided with the \glostyle{alttree} style, but +in this case there's no hierarchy. The default widest name +is obtained from the \glostyle{alttree} top-level name if set, +otherwise it's empty, so you can use \gls{bib2gls}['s] +\texttt{set-widest} option. If you have the entry counter enabled, +you will need to include this with the name for the extra material to +be taken into account. -Since both \cs{glossentry} and \cs{subglossentry} set -\begin{definition}[\DescribeMacro\glscurrententrylabel] -\cs{glscurrententrylabel} +The name isn't shown for child entries by default, but if +you change this and you want to use \gls{bib2gls}['s] +\texttt{set-widest} option (for \gls{bib2gls} v1.8+) then you need to +redefine: +\begin{definition}[\DescribeMacro\glslongextraUpdateWidestChild] +\cs{glslongextraUpdateWidestChild}\marg{level}\marg{text} \end{definition} -to the label for the current entry, you can use this within the -definition of these post-description hooks if you need to reference -the label. +This does nothing by default, but if you are including the child +names then you need to redefine this command: +\begin{verbatim} +\renewcommand{\glslongextraUpdateWidestChild}[2]{% + \glslongextraUpdateWidest{#2}% +} +\end{verbatim} -For example, suppose you want to insert the plural form in brackets -after the description in the glossary, but only for entries in the -\category{general} category, then you could do: +If you prefer to set an explicit width for the description +column then you need to redefine \cs{glslongextraSetDescWidth}. For +example: \begin{verbatim} -\renewcommand{\glsxtrpostdescgeneral}{\space - (plural: \glsentryplural{\glscurrententrylabel})} +\renewcommand{\glslongextraSetDescWidth}{% + \setlength{\glsdescwidth}{0.6\linewidth}% +} \end{verbatim} -This means you don't have to define a custom glossary style, which -you may find more complicated. (It also allows more flexibility if -you decide to change the underlying glossary style.) -\begin{important} -This feature can't be used for glossary styles that ignore -\cs{glspostdescription} or if you redefine -\cs{glspostdescription} without including \cs{glsxtrpostdescription}. -(For example, if you redefine \cs{glspostdescription} to do -nothing instead of using the \pkgopt{nopostdot} option to suppress -the terminating full stop.) See \sectionref{sec:stylemods} to patch -the predefined styles provided by \styfmt{glossaries} that are missing -\cs{glspostdescription}. -\end{important} +The styles that have a name, symbol and description, +\cs{glsdescwidth} is set with: +\begin{definition}[\DescribeMacro\glslongextraSymSetDescWidth] +\cs{glslongextraSymSetDescWidth} +\end{definition} +This first uses \cs{glslongextraSetDescWidth} and then subtracts +2\cs{tabcolsep} and the width of the symbol column header from +\cs{glsdescwidth}. This assumes that the symbol column header +is larger than any of the symbols. If this isn't appropriate +then you can redefine this command. For example: +\begin{verbatim} +\renewcommand{\glslongextraSymSetDescWidth}{% + \glslongextraSetDescWidth + \addtolength{\glsdescwidth}{-3cm}% +} +\end{verbatim} +or +\begin{verbatim} +\renewcommand{\glslongextraSymSetDescWidth}{% + \setlength{\glsdescwidth}{.5\linewidth}% +} +\end{verbatim} -\subsection{Number List} -\label{sec:glosstylenumlist} +For the styles that have a name, description and location column, +\cs{glsdescwidth} is set using: +\begin{definition}[\DescribeMacro\glslongextraLocSetDescWidth] +\cs{glslongextraLocSetDescWidth} +\end{definition} +This uses \cs{glslongextraSetDescWidth} and then subtracts +2\cs{tabcolsep} and \cs{glspagelistwidth} from \cs{glsdescwidth}. +You can redefine this command to set both \cs{glsdescwidth} and +\cs{glspagelistwidth} if appropriate. -The \gls{numberlist} is now placed inside the argument of -\begin{definition}[\DescribeMacro\GlsXtrFormatLocationList] -\cs{GlsXtrFormatLocationList}\marg{number list} +For the styles that have a name, description, symbol and location +column, \cs{glsdescwidth} is set using: +\begin{definition}[\DescribeMacro\glslongextraSymLocSetDescWidth] +\cs{glslongextraSymLocSetDescWidth} \end{definition} -This is internally used by \cs{glossaryentrynumbers}. The -\pkgopt{nonumberlist} option redefines \cs{glossaryentrynumbers} so that it -doesn't display the \gls{numberlist}, but it still saves the -\gls{numberlist} in case it's required. +This uses \cs{glslongextraSymSetDescWidth} and then subtracts +2\cs{tabcolsep} and \cs{glspagelistwidth} from +\cs{glsdescwidth}. Again, you can redefine this command +to explicitly set both lengths. -\begin{important} -If you want to suppress the \gls{numberlist} always use the -\pkgopt{nonumberlist} option instead of redefining -\cs{glossaryentrynumbers} to do nothing. -\end{important} +In all cases, the top-level name is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraNameFmt] +\cs{glslongextraNameFmt}\marg{label} +\end{definition} +This does +\begin{alltt} +\cs{glsentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{glossentryname}\marg{label}\} +\end{alltt} +which includes the entry counter (if enabled), the target and the post-name link. -If you want to, for example, change the font for the entire -\gls{numberlist} then redefine \cs{GlsXtrFormatLocationList} as -appropriate. Don't modify \cs{glossaryentrynumbers}. +The top-level description is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraDescFmt] +\cs{glslongextraDescFmt}\marg{label} +\end{definition} +This does \cs{glossentrydesc}\marg{label} followed by the +post-description hook. -Sometimes users like to insert \qt{page} or \qt{pages} in front of -the \gls{numberlist}. This is quite fiddly to do with the base -\styfmt{glossaries} package, but \styfmt{glossaries-extra} -provides a way of doing this. First you need to enable this -option and specify the text to display using: -\begin{definition}[\DescribeMacro\GlsXtrEnablePreLocationTag] -\cs{GlsXtrEnablePreLocationTag}\marg{page}\marg{pages} +The styles that have a symbol column format the symbol using: +\begin{definition}[\DescribeMacro\glslongextraSymbolFmt] +\cs{glslongextraSymbolFmt}\marg{label} \end{definition} -where \meta{page} is the text to display if the \gls{numberlist} only -contains a single location and \meta{pages} is the text to display -otherwise. For example: -\begin{verbatim} -\GlsXtrEnablePreLocationTag{Page: }{Pages: } -\end{verbatim} -An extra run is required when using this command. +This just does \cs{glossentrysymbol}\marg{label}. -\begin{important} -Use \texttt{glsignore} not \texttt{@gobble} as the format if you -want to suppress the page number (and only index the entry once). -\end{important} +The styles that have a location list column format the list using: +\begin{definition}[\DescribeMacro\glslongextraLocationFmt] +\cs{glslongextraLocationFmt}\marg{label}\marg{locations} +\end{definition} +This just does \meta{locations} and ignores the label. -See the accompanying sample file \texttt{sample-pages.tex}. +The child entries have their name formatted according to: +\begin{definition}[\DescribeMacro\glslongextraSubNameFmt] +\cs{glslongextraSubNameFmt}\marg{level}\marg{label} +\end{definition} +where \meta{level} is the hierarchical level. This defaults to: +\begin{alltt} +\cs{glssubentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{strut}\} +\end{alltt} +This includes the sub-entry counter (if enabled) and the target +but doesn't show the name. The child description is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraSubDescFmt] +\cs{glslongextraSubDescFmt}\marg{level}\marg{label} +\end{definition} +which defaults to just \cs{glslongextraDescFmt}\marg{label} -Note that \gls{bib2gls} can be instructed to insert -a prefix at the start of non-empty location lists, which -can be used as an alternative to \cs{GlsXtrEnablePreLocationTag}. +The child symbol is formatted (where appropriate) according to: +\begin{definition}[\DescribeMacro\glslongextraSubSymbolFmt] +\cs{glslongextraSubSymbolFmt}\marg{level}\marg{label} +\end{definition} +This just does \cs{glslongextraSymbolFmt}\marg{label} by default. -\subsection{The \styfmt{glossaries-extra-stylemods} Package} -\label{sec:stylemods} +The styles that have a location list column format the list for +child entries using: +\begin{definition}[\DescribeMacro\glslongextraLocationFmt] +\cs{glslongextraSubLocationFmt}\meta{level}\marg{label}\marg{locations} +\end{definition} +This just does \meta{locations} and ignores the level and label. -As from v1.02, \styfmt{glossaries-extra} now includes the package -\sty{glossaries-extra-stylemods} that will redefine the predefined -styles to include the post-description hook (for those that are -missing it). You will need to make sure the styles have already -been defined before loading \styfmt{glossaries-extra}. For example: -\begin{verbatim} -\usepackage{glossaries-extra} -\usepackage{glossary-longragged} -\usepackage{glossaries-extra-stylemods} -\end{verbatim} -Alternatively you can load -\texttt{glossary-}\meta{name}\texttt{.sty} at the same time by -passing \meta{name} as a package option to -\sty{glossaries-extra-stylemods}. For example: -\begin{verbatim} -\usepackage{glossaries-extra} -\usepackage[longragged]{glossaries-extra-stylemods} -\end{verbatim} -Another option is to use the \pkgopt{stylemods} key when you -load \styfmt{glossaries-extra}. You can omit a value if you only want to use -the predefined styles that are automatically loaded by -\styfmt{glossaries} (for example, the \glostyle{long3col} style): -\begin{verbatim} -\usepackage[style=long3col,stylemods]{glossaries-extra} -\end{verbatim} -Or the value of \pkgopt{stylemods} may be a comma-separated list -of the style package identifiers. For example: -\begin{verbatim} -\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra} -\end{verbatim} -Remember to group the value if it contains any commas: +The letter group headings are formatted according to: +\begin{definition}[\DescribeMacro\glslongextraGroupHeading] +\cs{glslongextraGroupHeading}\marg{n}\marg{label} +\end{definition} +which does nothing by default. The first argument \meta{n} is the +number of columns in the table. The second argument \meta{label} +is the group label (not the title, although they may happen +to be the same). + +This can be redefined to show the group heading. For example: \begin{verbatim} -\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra} +\renewcommand*{\glslongextraGroupHeading}[2]{% + \glsxtrgetgrouptitle{#2}{\thisgrptitle}% + \glslongextraHeaderFmt{\thisgrptitle}% + \tabularnewline + \noalign{\vskip\normalbaselineskip}% +} \end{verbatim} +This ignores the first argument and just puts the group +title in the first column formatted according to +\cs{glslongextraHeaderFmt} (to match the column header). -Note that the \glostyle{inline} style is dealt with slightly -differently. The original definition provided by the -\sty{glossary-inline} package uses \cs{glspostdescription} at the -end of the glossary (not after each entry description) within the -definition of \cs{glspostinline}. The style modification changes -this so that \cs{glspostinline} just does a full stop followed by -space factor adjustment, and the description -\cs{glsinlinedescformat} and sub-entry description formats -\cs{glsinlinesubdescformat} are redefined to include -\cs{glsxtrpostdescription} (not \cs{glspostdescription}). This means -that the modified \glostyle{inline} style isn't affected by the -\pkgopt{nopostdot} option, but the post-description category hook -can still be used. +Remember that you can also adjust the styles through category +attributes. The name column's title is given by +\cs{entryname}, the description column's title is given by +\cs{descriptionname} and (where present) the symbol column's +title is given by \cs{symbolname}, as for the other long styles +that have headers. -The \env{tabular}-like styles, such as \glostyle{long} are -adjusted so that the \ics{ifglsnogroupskip} conditional (set with -\pkgopt{nogroupskip}) is moved outside of the definition of -\cs{glsgroupskip} to avoid problems that cause an \qt{Incomplete -\cs{iftrue}} error with \cs{printunsrtglossary} and -\cs{printnoidxglossary}. This means that if you want to change this -conditional using \cs{setupglossaries} or using the -\gloskey[printglossary]{nogroupskip} option in \cs{printglossary}, -\cs{printnoidxglossary} or \cs{printunsrtglossary}, you must also -reset the glossary style. +\begin{description} +\item{\glostyle{long-name-desc}} This is like the +\glostyle{longragged-booktabs} style but doesn't show the location +list (regardless of the \pkgopt{nonumberlist} option). The name is +shown in the first column and the description in the second. -As from version 1.21, the hard-coded \cs{space} before the -\gls{numberlist} in many of the predefined styles is replaced -with -\begin{definition}[\DescribeMacro\glsxtrprelocation] -\cs{glsxtrprelocation} +The symbol is not displayed. The header +row is produced with: +\begin{definition}[\DescribeMacro\glslongextraNameDescHeader] +\cs{glslongextraNameDescHeader} \end{definition} -This just defaults to \cs{space} but may be redefined as required. -For example: +This essentially uses the same code as for \glostyle{longragged-booktabs} +but makes it easier to adjust the header without having to define a +new style. This is defined as: \begin{verbatim} -\renewcommand{\glsxtrprelocation}{\dotfill} +\glslongextraNameDescTabularHeader\endhead +\glslongextraNameDescTabularFooter\endfoot \end{verbatim} +where: +\begin{definition}[\DescribeMacro\glslongextraNameDescTabularHeader] +\cs{glslongextraNameDescTabularHeader} +\end{definition} +sets up the header and +\begin{definition}[\DescribeMacro\glslongextraNameDescTabularFooter] +\cs{glslongextraNameDescTabularFooter} +\end{definition} +sets up the footer. If you have setup the \env{tabular} version +of this style then the above two commands are used at the +start and end of the \env{tabular} environment (and +\cs{glslongextraNameDescHeader} isn't used). -The \glostyle{list} styles use -\begin{definition}[\DescribeMacro\glslistprelocation] -\cs{glslistprelocation} +For example, to simply remove the header and footer (for the default +\env{longtable} version of the style): +\begin{verbatim} +\renewcommand{\glslongextraNameDescHeader}{} +\end{verbatim} +Or to change the name alignment to centred: +\begin{verbatim} +\renewcommand{\glslongextraNameAlign}{c} +\end{verbatim} + +\item{\glostyle{long-name-desc-loc}} This is like the +\glostyle{long-name-desc} style but has a third column for the +location list. The \env{longtable} header is given by: +\begin{definition}[\DescribeMacro\glslongextraNameDescLocationHeader] +\cs{glslongextraNameDescLocationHeader} \end{definition} -(which defaults to \cs{glsxtrprelocation}) for top-level items and -\begin{definition}[\DescribeMacro\glslistchildprelocation] -\cs{glslistchildprelocation} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularHeader] +\cs{glslongextraNameDescLocationTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularFooter] +\cs{glslongextraNameDescLocationTabularFooter} \end{definition} -(which defaults to \cs{glslistprelocation}) for child items. -As from v1.31, the description (including the post-description hook) -is governed by: -\begin{definition}[\DescribeMacro\glslistdesc] -\cs{glslistdesc}\marg{label} +\item{\glostyle{long-desc-name}} This is like the +\glostyle{long-name-desc} style but swaps the columns. Note that +if the entry counter is displayed it will appear at the start +of the second column by default. The \env{longtable} header is formatted according +to: +\begin{definition}[\DescribeMacro\glslongextraDescNameHeader] +\cs{glslongextraDescNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraDescNameTabularHeader] +\cs{glslongextraDescNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraDescNameTabularFooter] +\cs{glslongextraDescNameTabularFooter} \end{definition} -for the \glostyle{list} and \glostyle{altlist} styles (but not the -\glostyle{listdotted} variations). -For just the \glostyle{list} style and its letter group variations -(not the \glostyle{altlist} or \glostyle{listdotted} variations) the -\gls{numberlist} for child entries is followed by -\begin{definition}[\DescribeMacro\glslistchildpostlocation] -\cs{glslistchildpostlocation} +\item{\glostyle{long-loc-desc-name}} This has three columns +containing the location list, description and name. The +\env{longtable} header +is formatted according to: +\begin{definition}[\DescribeMacro\glslongextraLocationDescNameHeader] +\cs{glslongextraLocationDescNameHeader} +\end{definition} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularHeader] +\cs{glslongextraLocationDescNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularFooter] +\cs{glslongextraLocationDescNameTabularFooter} \end{definition} -which defaults to a full stop. -The default value of \ics{glslistdottedwidth} is changed so that -it's set at the start of the document (if it hasn't been changed in -the preamble). This should take into account situations where -\cs{hsize} isn't set until the start of the document. +\item{\glostyle{long-name-desc-sym}} This is has three columns, with +the name in the first, the description in the second and the symbol +in the third. -The separator between groups (if not \pkgopt{nogroupskip}) is now -given by: -\begin{definition}[\DescribeMacro\glslistgroupskip] -\cs{glslistgroupskip} +The \env{longtable} header row is produced with: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymHeader] +\cs{glslongextraNameDescSymHeader} \end{definition} -This defaults to \cs{indexspace} with penalties to deter page -breaks. -This command isn't used if \pkgopt{nogroupskip} is set. - -The \sty{glossary-tree} package introduced two new commands in -\sty{glossaries} version 4.22, \ics{glstreegroupheaderfmt} -and \ics{glstreenavigationfmt}, which are used to format -the letter group headings and the navigation elements for the -appropriate styles. These two new commands are defined in terms of -\ics{glstreenamefmt} since that was the command originally used -for the group headings and navigation. This now allows these -different elements to be defined independently, but the most common -redefinition is for \cs{glstreenamefmt} to remove the bold in the -name. If the bold is still required for the group heading and navigation -elements, then both other commands also need redefining. To simplify -matters, if \cs{glstreenamefmt} has been defined, as from v1.31 -\sty{glossaries-extra-stylemods} defines: -\begin{definition}[\DescribeMacro\glstreedefaultnamefmt] -\cs{glstreedefaultnamefmt}\marg{text} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularHeader] +\cs{glslongextraNameDescSymTabularHeader} \end{definition} -which simply does \cs{textbf}\marg{text} and redefines -\cs{glstreenamefmt}, \cs{glstreegroupheaderfmt} and -\cs{glstreenavigationfmt} all in terms of -\cs{glstreedefaultnamefmt}. This means that if you want to change -all three to use a particular style you only need to redefine -\cs{glstreedefaultnamefmt}, but if you only want to redefine -\cs{glstreenamefmt} without affecting the other two commands, then -you now can. - -The separator between groups (if not \pkgopt{nogroupskip}) is now -given by: -\begin{definition}[\DescribeMacro\glstreegroupskip] -\cs{glstreegroupskip} +and +\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularFooter] +\cs{glslongextraNameDescSymTabularFooter} \end{definition} -This defaults to \cs{indexspace} with penalties to deter page -breaks. -This command isn't used if \pkgopt{nogroupskip} is set (except for -the styles that display the group titles). -The styles that display the group titles now use: -\begin{definition}[\DescribeMacro\glstreePreHeader] -\cs{glstreePreHeader}\marg{label}\marg{title} -\end{definition} -where \meta{label} is the group label and \meta{title} is the group -title. This does nothing by default -and is inserted before the group title. You can redefine it to add -the group title to the PDF bookmarks. For example, if the -glossary title uses \cs{chapter} then: -\begin{verbatim} -\renewcommand{\glstreePreHeader}[2]{% - \pdfbookmark[1]{#2}{\currentglossary.#1}% -} -\end{verbatim} -will insert section-level bookmarks. The use of \cs{currentglossary} -helps to provide unique bookmark labels in the event of multiple -glossaries. +\item{\glostyle{long-name-desc-sym-loc}} This is has four columns, with +the name in the first, the description in the second, the symbol +in the third and the location list in the fourth. -The \glostyle{index}-like and \glostyle{tree}-like styles -insert the pre-\gls{numberlist} space with -\begin{definition}[\DescribeMacro\glstreeprelocation] -\cs{glstreeprelocation} +The \env{longtable} header row is produced with: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationHeader] +\cs{glslongextraNameDescSymLocationHeader} \end{definition} -(which defaults to \cs{glsxtrprelocation}) for top-level items and -\begin{definition}[\DescribeMacro\glstreechildprelocation] -\cs{glstreechildprelocation} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularHeader] +\cs{glslongextraNameDescSymLocationTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularFooter] +\cs{glslongextraNameDescSymLocationTabularFooter} \end{definition} -(which defaults to \cs{glstreeprelocation}) for child items. -As from version 1.31, the \styfmt{glossaries-extra-stylemods} -package also provides: -\begin{definition}[\DescribeMacro\glstreenonamedesc] -\cs{glstreenonamedesc}\marg{label} +\item{\glostyle{long-name-sym-desc}} This is like the +\glostyle{long-name-desc-sym} but the second and third column are +swapped. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescHeader] +\cs{glslongextraNameSymDescHeader} \end{definition} -which is used by the \glostyle{treenoname} styles to display the -pre-description separator, the description and the post-description -hook. Similarly for the symbol: -\begin{definition}[\DescribeMacro\glstreenonamesymbol] -\cs{glstreenonamesymbol}\marg{label} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularHeader] +\cs{glslongextraNameSymDescTabularHeader} \end{definition} -The above are just used for top-level entries. Child entries don't -have the name or symbol displayed for the \glostyle{treenoname} -styles, so there's only a command for the child description: -\begin{definition}[\DescribeMacro\glstreenonamechilddesc] -\cs{glstreenonamechilddesc}\marg{label} +and +\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularFooter] +\cs{glslongextraNameSymDescTabularFooter} \end{definition} -For the \glostyle{tree} styles (but not the \glostyle{treenoname} or -\glostyle{alttree} styles), the description is displayed using: -\begin{definition}[\DescribeMacro\glstreedesc] -\cs{glstreedesc}\marg{label} -\end{definition} -and the symbol with: -\begin{definition}[\DescribeMacro\glstreesymbol] -\cs{glstreesymbol}\marg{label} +\item{\glostyle{long-name-sym-desc-loc}} This is like the +\glostyle{long-name-desc-sym-loc} but the second and third column are +swapped. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationHeader] +\cs{glslongextraNameSymDescLocationHeader} \end{definition} -Again the above two commands are just for top-level entries. The -child entries use: -\begin{definition}[\DescribeMacro\glstreechilddesc] -\cs{glstreechilddesc}\marg{label} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularHeader] +\cs{glslongextraNameSymDescLocationTabularHeader} \end{definition} -for the description and -\begin{definition}[\DescribeMacro\glstreechildsymbol] -\cs{glstreechildsymbol}\marg{label} +and +\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularFooter] +\cs{glslongextraNameSymDescLocationTabularFooter} \end{definition} -for the symbol. -As from version 1.41, there are now wrapper commands for -\cs{glstreedesc} and \cs{glstreechilddesc} that check for -the description and symbol to determine whether or not to insert a -space (\cs{glstreeprelocation} or \cs{glstreechildprelocation}) -before the page list. These are: -\begin{definition}[\DescribeMacro\glstreeDescLoc] -\cs{glstreeDescLoc}\marg{label}\marg{location} +\item{\glostyle{long-sym-desc-name}} This has the symbol in the +first column, the description in the second and the name in the +third. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraSymDescNameHeader] +\cs{glslongextraSymDescNameHeader} \end{definition} -for top-level entries and -\begin{definition}[\DescribeMacro\glstreeChildDescLoc] -\cs{glstreeChildDescLoc}\marg{label}\marg{location} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularHeader] +\cs{glslongextraSymDescNameTabularHeader} \end{definition} -for sub-entries. This prevents a spurious space for terms that don't -have a symbol or description but do have a location list (for -example, aliases). - -As from version 1.05, the \styfmt{glossaries-extra-stylemods} -package provides some additional commands for use with the -\glostyle{alttree} style to make it easier to modify. -These commands are only defined if the -\sty{glossary-tree} package has already been loaded, which is -typically the case unless the \pkgopt{notree} option has been used -when loading \styfmt{glossaries}. - -\begin{definition}[\DescribeMacro\gglssetwidest] -\cs{gglssetwidest}\oarg{level}\marg{name} +and +\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularFooter] +\cs{glslongextraSymDescNameTabularFooter} \end{definition} -(New to version 1.21.) -This is like \cs{glssetwidest} (provided by \sty{glossary-tree}) -but performs a global assignment. -\begin{definition}[\DescribeMacro\eglssetwidest] -\cs{eglssetwidest}\oarg{level}\marg{name} +\item{\glostyle{long-loc-sym-desc-name}} This has the location list +in the first column, symbol in the +second column, the description in the third and the name in the +fourth. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameHeader] +\cs{glslongextraLocationSymDescNameHeader} \end{definition} -This is like \cs{glssetwidest} -but performs a protected expansion on \meta{name}. This has -a localised effect. For a global setting, use -\begin{definition}[\DescribeMacro\xglssetwidest] -\cs{xglssetwidest}\oarg{level}\marg{name} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularHeader] +\cs{glslongextraLocationSymDescNameTabularHeader} \end{definition} -The following only set the value if \meta{name} is wider than the -current value (new to version 1.23). Local update: -\begin{definition}[\DescribeMacro\glsupdatewidest] -\cs{glsupdatewidest}\oarg{level}\marg{name} +and +\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularFooter] +\cs{glslongextraLocationSymDescNameTabularFooter} \end{definition} -Global update: -\begin{definition}[\DescribeMacro\gglsupdatewidest] -\cs{gglsupdatewidest}\oarg{level}\marg{name} + +\item{\glostyle{long-desc-sym-name}} This has the description in the +first column, the symbol in the second and the name in the +third. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraDescSymNameHeader] +\cs{glslongextraDescSymNameHeader} \end{definition} -Locale update (expands \meta{name}): -\begin{definition}[\DescribeMacro\eglsupdatewidest] -\cs{eglsupdatewidest}\oarg{level}\marg{name} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularHeader] +\cs{glslongextraDescSymNameTabularHeader} \end{definition} -Global update (expands \meta{name}): -\begin{definition}[\DescribeMacro\xglsupdatewidest] -\cs{xglsupdatewidest}\oarg{level}\marg{name} +and +\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularFooter] +\cs{glslongextraDescSymNameTabularFooter} \end{definition} - -The widest entry value can later be retrieved using -\begin{definition}[\DescribeMacro\glsgetwidestname] -\cs{glsgetwidestname} +\item{\glostyle{long-loc-desc-sym-name}} This has the location list +in the first column, the description in the +second column, the symbol in the third and the name in the +fourth. The \env{longtable} header row is given by: +\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameHeader] +\cs{glslongextraLocationDescSymNameHeader} \end{definition} -for the top-level entries and -\begin{definition}[\DescribeMacro\glsgetwidestsubname] -\cs{glsgetwidestsubname}\marg{level} +which similarly defined in terms of the commands used for the +\env{tabular} version: +\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularHeader] +\cs{glslongextraLocationDescSymNameTabularHeader} +\end{definition} +and +\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularFooter] +\cs{glslongextraLocationDescSymNameTabularFooter} \end{definition} -for sub-entries, where \meta{level} is the level number. -Note that if you are using \gls{bib2gls}, you can use the -resource option \texttt{set-widest} which will try to determine the -widest name of all the selected entries. This isn't guaranteed -to work as it may depend on fonts or commands that \gls{bib2gls} -can't replicate, but it should be suitable for names that just -consist of text, and can be more efficient than iterating over all -the defined entries using \TeX. +\end{description} -The command \cs{glsfindwidesttoplevelname} provided by -\sty{glossary-tree} has a CamelCase synonym: -\begin{definition}[\DescribeMacro\glsFindWidestTopLevelName] -\cs{glsFindWidestTopLevelName}\oarg{glossary list} +\section{\styfmt{glossary-topic} package} +\label{sec:topic} + +As from version 1.40, the \styfmt{glossaries-extra} package comes +with the supplementary package \sty{glossary-topic} that +provides glossary styles designed for hierarchical glossaries +where the top-level entries are topic titles. This package +automatically loads the \sty{multicols} package. If the +\sty{glossary-tree} package is also loaded then commands like +\cs{glssetwidest} can be used on these styles in much the same way +as for the \glostyle{alttree} style. If a widest value isn't set +then these styles behave more like the \glostyle{tree} style. +\begin{description} +\item[\glostyle{topic}] This style is similar to the \glostyle{tree} +style but the indentation doesn't start until the second +sub-item level. The top-level entries have the name displayed +in a larger font with the description following in a new paragraph. +This style doesn't support the \pkgopt{nogroupskip} setting. + +\item[\glostyle{topicmcols}] This style is like the \glostyle{topic} +style but the sub-entries are placed inside a \env{multicols} +environment. The environment name is supplied in the value of +the command: +\begin{definition}[\DescribeMacro\glstopicColsEnv] +\cs{glstopicColsEnv} \end{definition} -Similar commands are also provided: -\begin{definition}[\DescribeMacro\glsFindWidestUsedTopLevelName] -\cs{glsFindWidestUsedTopLevelName}\oarg{glossary list} +You can change this to the starred form. For example: +\begin{verbatim} +\renewcommand{\glstopicColsEnv}{multicols*} +\end{verbatim} +The number of columns is given by the command: +\begin{definition}[\DescribeMacro\glstopicCols] +\cs{glstopicCols} \end{definition} -This has an additional check that the entry has been used. -Naturally this is only useful if the glossaries that use -the \glostyle{alttree} style occur at the end of the document. -This command should be placed just before the start of the glossary. -(Alternatively, place it at the end of the document and save -the value in the auxiliary file for the next run.) +The default value is 2. +\end{description} +Both styles use the following commands. +\begin{definition}[\DescribeMacro\glstopicParIndent] +\cs{glstopicParIndent} +\end{definition} +This command is a length that's used for the paragraph indentation +in any multi-paragraph description for top-level entries, but not +for the first paragraph (at the start of the description) which +isn't indented. -\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyName] -\cs{glsFindWidestUsedAnyName}\oarg{glossary list} +\begin{definition}[\DescribeMacro\glstopicSubIndent] +\cs{glstopicSubIndent} \end{definition} -This is like the previous command but if doesn't check the -\gloskey{parent} key. This is useful if all levels should have the -same width for the name. +This command is a length that's used to calculate the hanging +indentation for sub-entries. The level~1 sub-entries don't indent +the name. Level~$n$ sub-entries have the name indented by +$(n-1)\times$\cs{glstopicSubIndent}. The hanging indent depends +on whether or not a widest name has been set for the level. -\begin{definition}[\DescribeMacro\glsFindWidestAnyName] -\cs{glsFindWidestAnyName}\oarg{glossary list} +\begin{definition}[\DescribeMacro\glstopicInit] +\cs{glstopicInit} \end{definition} -This is like the previous command but doesn't check if the entry -has been used. +Hook used at the start of the glossary. Does nothing by default. -\begin{definition}[\DescribeMacro\glsFindWidestUsedLevelTwo] -\cs{glsFindWidestUsedLevelTwo}\oarg{glossary list} +Although the styles don't support letter groups by default, if you +have many topics (top-level entries) and you feel that it would help +the reader to divide them up into headed letter groups, you can +redefine: +\begin{definition}[\DescribeMacro\glstopicGroupHeading] +\cs{glstopicGroupHeading}\marg{group label} \end{definition} -This is like \cs{glsFindWidestUsedTopLevelName} but also sets -the first two sub-levels as well. Any entry that has a -great-grandparent is ignored. +This does nothing by default. If you want to redefine it, you can +fetch the title corresponding to the group label with +\cs{glsxtrgetgrouptitle}. For example: +\begin{verbatim} +\renewcommand*{\glstopicGroupHeading}[1]{% + \glsxtrgetgrouptitle{#1}{\thisgrptitle}% + \section*{\thisgrptitle}% +} +\end{verbatim} +Remember that if you use \gls{bib2gls}, you will need the +\verb|--group| (or \verb|-g|) switch to support this. -\begin{definition}[\DescribeMacro\glsFindWidestLevelTwo] -\cs{glsFindWidestLevelTwo}\oarg{glossary list} +\begin{definition}[\DescribeMacro\glstopicItem] +\cs{glstopicItem}\marg{label}\marg{location list} \end{definition} -This is like the previous command but doesn't check if the entry has -been used. +Used to format the name, symbol, description and location list +for the top-level entries. This starts with a paragraph break +followed by: +\begin{definition}[\DescribeMacro\glstopicPreSkip] +\cs{glstopicPreSkip} +\end{definition} +which defaults to \cs{medskip}. There is then a hook: +\begin{definition}[\DescribeMacro\glstopicMarker] +\cs{glstopicMarker}\marg{label} +\end{definition} +which does nothing by default, but may be redefined. For example, +to add a line to the table of contents. +The name and symbol are set in the +form of a title using: +\begin{definition}[\DescribeMacro\glstopicTitle] +\cs{glstopicTitle}\marg{label} +\end{definition} +This uses \cs{Glossentryname} which converts the first letter to +upper case. If there's a symbol, this is added in parentheses. +Both name and symbol (if present) are encapsulated by +\begin{definition}[\DescribeMacro\glstopicTitleFont] +\cs{glstopicTitleFont}\marg{text} +\end{definition} +This uses a bold, large font by default. -\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbol] -\cs{glsFindWidestUsedAnyNameSymbol}\oarg{glossary -list}\marg{register} +If the entry has the description key set (tested with +\cs{ifglshasdesc}) then a paragraph break is inserted followed by: +\begin{definition}[\DescribeMacro\glstopicMidSkip] +\cs{glstopicMidSkip} +\end{definition} +which defaults to \cs{smallskip}. This is followed by the +description which is formatted according to: +\begin{definition}[\DescribeMacro\glstopicDesc] +\cs{glstopicDesc}\marg{label} \end{definition} -This is like \cs{glsFindWidestUsedAnyName} but also measures the -symbol. The length of the widest symbol is stored in -\meta{register}. +This just does \cs{Glossentrydesc}\marg{label} followed +by the post-description hook. -\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbol] -\cs{glsFindWidestAnyNameSymbol}\oarg{glossary list}\marg{register} +A paragraph break followed by: +\begin{definition}[\DescribeMacro\glstopicPostSkip] +\cs{glstopicPostSkip} \end{definition} -This is like the previous command but it doesn't check if the entry -has been used. - -\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbolLocation] -\cs{glsFindWidestUsedAnyNameSymbolLocation}\oarg{glossary -list}\marg{symbol register}\marg{location register} +comes next regardless of whether or not the description was +displayed. This defaults to \cs{smallskip}. This is then followed +by: +\begin{definition}[\DescribeMacro\glstopicLoc] +\cs{glstopicLoc}\marg{label}\marg{location list} \end{definition} -This is like \cs{glsFindWidestUsedAnyNameSymbol} but also -measures the \gls{numberlist}. This requires -\ics{glsentrynumberlist} (see the \styfmt{glossaries} user manual). -The length of the widest symbol is stored in \meta{symbol register} -and the length of the widest \gls*{numberlist} is stored in -\meta{location register}. +which may be used to display the location list, but does nothing by +default. -\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbolLocation] -\cs{glsFindWidestAnyNameSymbolLocation}\oarg{glossary -list}\marg{symbol register}\marg{location register} +The sub-entries first set up the paragraph and hanging indentations +using: +\begin{definition}[\DescribeMacro\glstopicAssignSubIndent] +\cs{glstopicAssignSubIndent}\marg{level} \end{definition} -This is like the previous command but it doesn't check if the entry -has been used. - -\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameLocation] -\cs{glsFindWidestUsedAnyNameLocation}\oarg{glossary -list}\marg{register} +This uses: +\begin{definition}[\DescribeMacro\glstopicAssignWidest] +\cs{glstopicAssignWidest}\marg{level} \end{definition} -This is like \cs{glsFindWidestUsedAnyNameSymbolLocation} but doesn't -measure the symbol. The length of the widest \gls{numberlist} -is stored in \meta{register}. +to determine if a widest name has been set for the given level. -\begin{definition}[\DescribeMacro\glsFindWidestAnyNameLocation] -\cs{glsFindWidestAnyNameLocation}\oarg{glossary -list}\marg{register} +The sub-entry has its information displayed using: +\begin{definition}[\DescribeMacro\glstopicSubItem] +\cs{glstopicSubItem}\marg{level}\marg{label}\marg{location} \end{definition} -This is like the previous command but doesn't check if the entry has -been used. - -The layout of the symbol, description and \gls{numberlist} -is governed by -\begin{definition}[\DescribeMacro\glsxtralttreeSymbolDescLocation] -\cs{glsxtralttreeSymbolDescLocation}\marg{label}\marg{number list} +This encapsulates the name with: +\begin{definition}[\DescribeMacro\glstopicSubNameFont] +\cs{glstopicSubNameFont}\marg{text} \end{definition} -for top-level entries and -\begin{definition}[\DescribeMacro\glsxtralttreeSubSymbolDescLocation] -\cs{glsxtralttreeSubSymbolDescLocation}\marg{label}\marg{number list} +By default this just uses \cs{textbf}. This is followed by: +\begin{definition}[\DescribeMacro\glstopicSubItemSep] +\cs{glstopicSubItemSep} \end{definition} -for sub-entries. - -There is now a user level command that performs the initialisation -for the \glostyle{alttree} style: -\begin{definition}[\DescribeMacro\glsxtralttreeInit] -\cs{glsxtralttreeInit} +which defaults to \cs{quad}. The name and separator are +passed in the \meta{text} argument of: +\begin{definition}[\DescribeMacro\glstopicSubItemBox] +\cs{glstopicSubItemBox}\marg{level}\marg{text} \end{definition} +If a widest name was set for the given level, this will +put \meta{text} inside a box of that width otherwise it just does +\meta{text}. -The paragraph indent for subsequent paragraphs in multi-paragraph -descriptions is provided by the length -\begin{definition}[\DescribeMacro\glsxtrAltTreeIndent] -\cs{glsxtrAltTreeIndent} +This is followed by the symbol in parentheses if set. Then, if the +description is set, the description and post-description hook are +displayed followed by: +\begin{definition}[\DescribeMacro\glstopicSubPreLocSep] +\cs{glstopicSubPreLocSep} \end{definition} +(This command isn't used if the description isn't set.) -For additional commands that are available with the -\glostyle{alttree} style, see the documented code -(\texttt{glossaries-extra-code.pdf}). For examples, see -the accompanying sample files \texttt{sample-alttree.tex}, -\texttt{sample-alttree-sym.tex} and -\texttt{sample-alttree-marginpar.tex}. +Finally the location list is displayed using: +\begin{definition}[\DescribeMacro\glstopicSubLoc] +\cs{glstopicSubLoc}\marg{label}\marg{location} +\end{definition} +which just does \meta{location} by default. \chapter{Abbreviations} \label{sec:abbreviations} @@ -4722,17 +4852,50 @@ package modifies the underlying formatting used by abbreviations can have their formatting dealt with by the style. You therefore need to select an abbreviation style that ensures that \cs{gls} (and its variants) displays the desired output. +See the file +\href{http://mirrors.ctan.org/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf}{sample-abbr-styles.pdf} +for samples of all provided abbreviation styles. \begin{important} -Don't use commands like \cs{glstext} or \cs{glsfirst} with +Don't use \ics{glsfirst}, \ics{Glsfirst} or \ics{GLSfirst} with abbreviations as they aren't flexible enough to handle some -abbreviation styles and unexpected results may occur. Use commands -like \cs{glsfmtshort} or \cs{glsfmtlong} in section headings or +abbreviation styles and unexpected results may occur. (To a lesser +degree, this also applies to \ics{glstext} etc.) Use commands +like \cs{glsfmttext}, \cs{glsfmtshort} or \cs{glsfmtlong} in section headings or captions instead of \cs{gls}. If you don't want the full form to show on first use of \cs{gls} use one of the \qt{nolong} or \qt{noshort} styles. \end{important} +This lack of flexibility in \cs{glsfirst} can be demonstrated with +the following document: +\begin{verbatim} +\documentclass{article} + +\usepackage{glossaries-extra} +\setabbreviationstyle{footnote} +\newabbreviation{ex}{EX}{Example} + +\begin{document} +Compare \gls{ex}['s] with \glsfirst{ex}['s]. +\end{document} +\end{verbatim} +The \gls{firstuse} \cs{gls} has the footnote marker after the +inserted material \qt{EX's\textsuperscript{1}} but \cs{glsfirst} has +it before the inserted material \qt{EX\textsuperscript{1}'s} which +is inappropriate. Note that if the style is changed to +\abbrstyle{postfootnote}, the footnote marker appears after the +inserted material as \ics{footnote} is in the post-link hook. + +There are some instances where \cs{glstext} can be useful. It's used +internally by \ics{glsfmttext}, which in turn is used by +\ics{glsseelistformat} if the entry has a short form. If +\cs{glsfmtshort} is used, this enforces the short form, but if +\cs{glsfmttext} is used, then the long form will be used for the +\qt{noshort} styles, which is more appropriate. In this particular +situation, there's no need to worry about inserted material as the +final optional argument isn't supported by \cs{glsfmttext}. + Abbreviations include acronyms (words formed from initial letters, such as \qt{laser}), initialisms (initial letters of a phrase, such as \qt{html}, that @@ -4826,6 +4989,17 @@ use by the long form: \cs{glsuselongfont}\marg{text}\marg{category} \end{definition} +You can't use the acronym commands provided by the base package with +the new abbreviations provided by the \styfmt{glossaries-extra} +package. The style commands that replace \cs{setacronymstyle}, +\cs{acrshort} etc are described in \sectionref{sec:abbrstyle}. +The \pkgopt{acronymlists} package option and associated commands +aren't supported. The \ics{forallacronyms} command, which iterates +over all acronym lists, should be replaced with: +\begin{definition}[\DescribeMacro\forallabbreviationlists] +\cs{forallabbreviationlists}\marg{cs}\marg{body} +\end{definition} + \section{Tagging Initials} \label{sec:tagging} @@ -4866,7 +5040,7 @@ You can later set this attribute for other categories (see \sectionref{sec:categories}) but this must be done before the glossary is displayed. -The accompanying sample file \texttt{sample-mixtures.tex} +The accompanying sample file \nolinkurl{sample-mixtures.tex} uses initial tagging for both the \category{acronym} and \category{abbreviation} categories: \begin{verbatim} @@ -5047,7 +5221,7 @@ entry was defined. If you have mixed styles, you'll need to use \label{sec:abbrshortcuts} The abbreviation shortcut commands can be enabled using -the package option \pkgopt[abbreviation]{shortcuts} +the \pkgopt[abbreviations]{shortcuts} package option (or \pkgopt[abbr]{shortcuts}) or \pkgopt[ac]{shortcuts}. (You can use both settings at the same time.) The provided shortcut commands listed in @@ -5120,7 +5294,7 @@ In both cases, the \gls{firstuse} of \ics{gls} may not match the text produced by \ics{glsfirst} (and likewise for the plural and case-changing versions). -The sample file \texttt{sample-abbr-styles.tex} demonstrates all +The sample file \nolinkurl{sample-abbr-styles.tex} demonstrates all predefined styles described here. \begin{important} @@ -5131,6 +5305,15 @@ recommend that you at least use the \sty{fontenc} package with the \pkgoptfmt{T1} option or something similar. \end{important} +Many of the styles have helper commands in the form +\cs{glsxtr...name} and \cs{glsxtr...sort} that are expanded within the +\gloskey{name} and \gloskey{sort} fields when the abbreviation is defined. +These commands may use the helper token registers available within +\cs{newabbreviation}, such as \ics{glsshorttok}. The contents of a +register can be accessed with \ics{the}\meta{register}. It's essential that +these expand when the abbreviation is defined so don't hide them behind no-expandable content if you +redefine these helper commands. + The parenthetical styles, such as \abbrstyle{long-short}, use \begin{definition}[\DescribeMacro\glsxtrparen] @@ -6059,7 +6242,7 @@ marker may be, if the \sty{hyperref} package is used). The inline full form uses the \meta{short} (\meta{long}) style. The \gloskey{name} is set to the short form. The \gloskey{description} is set to the long form. The -\gloskey{name} key is obtained by expanding +\gloskey{name} key is obtained by expanding: \begin{definition}[\DescribeMacro\glsxtrfootnotename] \cs{glsxtrfootnotename} \end{definition} @@ -6126,6 +6309,44 @@ use \ics{glsabbrvemfont}. 1.04, but original name retained as a deprecated synonym for backward-compatibility.) +\item[\abbrstyledef{short-footnote-desc}] +(New to v1.42.) +This is similar to \abbrstyle{short-footnote}, but the +\gloskey{description} must be supplied by the user. +The \gloskey{name} field is obtained from: +\begin{definition}[\DescribeMacro\glsxtrfootnotedescname] +\cs{glsxtrfootnotedescname} +\end{definition} +which defaults to \meta{short} followed by \meta{long} in +parentheses, and the \gloskey{sort} field is obtained from: +\begin{definition}[\DescribeMacro\glsxtrfootnotedescsort] +\cs{glsxtrfootnotedescsort} +\end{definition} +which defaults to just the short form. (Similarly for other +\texttt{short}\meta{modifier}\texttt{-[post]footnote}\texttt{-desc} +styles, unless indicated otherwise.) + +Any redefinition of these commands must come before the abbreviations +are defined as it expands on definition. Make sure you protect +any commands that shouldn't be expanded. The long form can be +referenced with \cs{the}\cs{glslongtok} and the short form +can be referenced with \cs{the}\cs{glsshorttok}. + +\item[\abbrstyledef{footnote-desc}] +A synonym for \abbrstyle{short-footnote-desc}. + +\item[\abbrstyledef{short-sc-footnote-desc}] +Like \abbrstyle{short-footnote-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. + +\item[\abbrstyledef{short-sm-footnote-desc}] +Like \abbrstyle{short-footnote-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. + +\item[\abbrstyledef{short-em-footnote-desc}] +Like \abbrstyle{short-footnote-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + \item[\abbrstyledef{short-postfootnote}] This is similar to the \abbrstyle{short-footnote} style but doesn't modify the category attribute. Instead it changes \postlinkcat\ to @@ -6165,6 +6386,28 @@ use \ics{glsabbrvemfont}. 1.04, but original name retained as a deprecated synonym for backward-compatibility.) +\item[\abbrstyledef{short-postfootnote-desc}] +(New to v1.42.) +This is similar to \abbrstyle{short-postfootnote}, but the +\gloskey{description} must be supplied by the user. The +\gloskey{name} and \gloskey{sort} are set as for +\abbrstyle{short-footnote-desc}. + +\item[\abbrstyledef{postfootnote-desc}] +A synonym for \abbrstyle{short-postfootnote-desc}. + +\item[\abbrstyledef{short-sc-postfootnote-desc}] +Like \abbrstyle{short-postfootnote-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvscfont}. + +\item[\abbrstyledef{short-sm-postfootnote-desc}] +Like \abbrstyle{short-postfootnote-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvsmfont}. + +\item[\abbrstyledef{short-em-postfootnote-desc}] +Like \abbrstyle{short-postfootnote-desc} but redefines \cs{glsabbrvfont} to +use \ics{glsabbrvemfont}. + \item[\abbrstyledef{short-postlong-user}] This style was introduced in version 1.12. It's like the \abbrstyle{short-long-user} style but defers the parenthetical @@ -6771,7 +7014,7 @@ use the more generic \cs{glsabbrvfont} etc which makes them easier to adapt than the modified styles. For further details, see the \qt{Abbreviations} section in the documented code -(\texttt{glossaries-extra-code.pdf}). +(\nolinkurl{glossaries-extra-code.pdf}). \chapter{Entries in Sectioning Titles, Headers, Captions and Contents} \label{sec:headtitle} @@ -6800,6 +7043,8 @@ in the table of contents. Similar problems can also occur with captions (except for the page header and bookmark issues). +\section{Simplistic Approach} + To get around all these problems, the \styfmt{glossaries} user manual recommends using the expandable non-hyperlink commands, such as \ics{glsentrytext} (for regular entries) or \ics{glsentryshort} @@ -6859,14 +7104,22 @@ the argument of sectioning commands. You can still use them even if the mark commands have been reverted, but only where they don't conflict with the page style. -The commands listed below all use \ics{texorpdfstring} if -\sty{hyperref} has been loaded so that the expandable non-formatted -version is added to the PDF bookmarks. Note that since the commands -that convert the first letter to upper case aren't expandable, the -non-case-changing version is used for the bookmarks. +\section{New Commands Designed for Chapter/Section Headings} + +The commands listed below are designed for use in chapter or section +headings. There are still limitations, but they provide a better +solution. They all use \ics{texorpdfstring} if \sty{hyperref} has +been loaded so that the expandable non-formatted version is added to +the PDF bookmarks. Note that since the commands that convert the +first letter to upper case aren't expandable, the non-case-changing +version is used for the bookmarks. If the required field contains +non-expandable (robust or fragile) commands that cause a problem for +the bookmarks then \ics{texorpdfstring} will be needed as +appropriate in that field. (Take care if the field has its value +expanded before being assigned.) These commands essentially behave as though you have used -\cs{glsxtrshort} (or equivalent) with the options +\cs{glsxtrshort}, \cs{glstext} etc with the options \gloskey[glslink]{noindex} and \gloskey[glslink]{hyper\eq false}. The text produced won't be converted to upper case in the page headings by default. If you want the text converted to upper case @@ -6908,6 +7161,18 @@ First letter upper case plural short form: \end{definition} (No case-change applied to PDF bookmarks.) +All caps singular short form: +\begin{definition}[\DescribeMacro\GLSfmtshort] +\cs{GLSfmtshort}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +All caps plural short form: +\begin{definition}[\DescribeMacro\Glsfmtshortpl] +\cs{Glsfmtshortpl}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + Display the long form: \begin{definition}[\DescribeMacro\glsfmtlong] \cs{glsfmtlong}\marg{label} @@ -6930,9 +7195,32 @@ First letter upper case plural long form: \end{definition} (No case-change applied to PDF bookmarks.) +All caps singular long form: +\begin{definition}[\DescribeMacro\GLSfmtlong] +\cs{GLSfmtlong}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +All caps plural long form: +\begin{definition}[\DescribeMacro\GLSfmtlongpl] +\cs{GLSfmtlongpl}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + There are similar commands for the full form, but note that these use the \emph{inline} full form, which may be different from the -full form used by \cs{gls}. +full form used by \cs{gls}. The PDF version has to be a simple +fully expandable command, so one of two commands that are unrelated to the style +is used instead: +\begin{definition}[\DescribeMacro\glspdffmtfull] +\cs{glspdffmtfull}\marg{label} +\end{definition} +for the singular form or: +\begin{definition}[\DescribeMacro\glspdffmtfullpl] +\cs{glspdffmtfullpl}\marg{label} +\end{definition} +for the full form. These simply do the long form followed by the +short form in parentheses. Display the full form: \begin{definition}[\DescribeMacro\glsfmtfull] @@ -6956,6 +7244,18 @@ First letter upper case plural full form: \end{definition} (No case-change applied to PDF bookmarks.) +All caps singular full form: +\begin{definition}[\DescribeMacro\GLSfmtfull] +\cs{GLSfmtfull}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + +All caps plural full form: +\begin{definition}[\DescribeMacro\GLSfmtfullpl] +\cs{GLSfmtfullpl}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + There are also equivalent commands for the value of the \gloskey{text} field: \begin{definition}[\DescribeMacro\glsfmttext] @@ -6968,14 +7268,24 @@ First letter converted to upper case: \end{definition} (No case-change applied to PDF bookmarks.) +All caps: +\begin{definition}[\DescribeMacro\GLSfmttext] +\cs{GLSfmttext}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + The plural equivalents: \begin{definition}[\DescribeMacro\glsfmtplural] \cs{glsfmtplural}\marg{label} \end{definition} -and +First letter upper case: \begin{definition}[\DescribeMacro\Glsfmtplural] \cs{Glsfmtplural}\marg{label} \end{definition} +and all caps: +\begin{definition}[\DescribeMacro\GLSfmtplural] +\cs{GLSfmtplural}\marg{label} +\end{definition} Likewise for the value of the \gloskey{name} field: @@ -6989,6 +7299,12 @@ First letter converted to upper case: \end{definition} (No case-change applied to PDF bookmarks.) +All caps: +\begin{definition}[\DescribeMacro\GLSfmtname] +\cs{GLSfmtname}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + Similarly for the value of the \gloskey{first} field: \begin{definition}[\DescribeMacro\glsfmtfirst] @@ -7001,14 +7317,24 @@ First letter converted to upper case: \end{definition} (No case-change applied to PDF bookmarks.) +All caps: +\begin{definition}[\DescribeMacro\GLSfmtfirst] +\cs{GLSfmtfirst}\marg{label} +\end{definition} +(No case-change applied to PDF bookmarks.) + The plural equivalents: \begin{definition}[\DescribeMacro\glsfmtfirstpl] \cs{glsfmtfirstpl}\marg{label} \end{definition} -and +First letter upper case: \begin{definition}[\DescribeMacro\Glsfmtfirstpl] \cs{Glsfmtfirstpl}\marg{label} \end{definition} +and all caps: +\begin{definition}[\DescribeMacro\GLSfmtfirstpl] +\cs{GLSfmtfirstpl}\marg{label} +\end{definition} \chapter{Categories} \label{sec:categories} @@ -7254,61 +7580,6 @@ overridden. \emph{This setting is incompatible with \catattr{aposplural}.} This defined using \cs{newabbreviation} (or \cs{newacronym} if it's using \cs{newabbreviation}.) -\item[\catattrdef{accessinsertdots}] If this attribute is set to -\qt{true} and the \sty{glossaries-accsupp} package has been loaded -(with the \pkgopt{accsupp} option), then this behaves like -\catattr{insertdots} but for the \gloskey{shortaccess} field instead -of the \gloskey{short} field. This can be used to assist the -screen reader for initialisms that should be read out letter by -letter rather than as a word. For example: -\begin{verbatim} -\glssetcategoryattribute{initialism}{accessinsertdots}{true} - -\newabbreviation[category=initialism]{pi}{PI}{Private Investigator} -\end{verbatim} -This setting will be overridden by an explicit use of -the \gloskey{shortaccess} key in the optional argument -of \cs{newabbreviation} (or \cs{newacronym}). This attribute is only applicable to entries -defined using \cs{newabbreviation} (or \cs{newacronym} if it's using -\cs{newabbreviation}.) - -\item[\catattrdef{nameshortaccess}] If this attribute is set to -\qt{true}, the \gloskey{access} field (used for the \gloskey{name} -field's accessibility support) is set to the \gloskey{shortaccess} -value. This attribute has no effect if there's no accessibility -support or if the \gloskey{shortaccess} field hasn't been assigned -or if the \gloskey{access} field is used explicitly. This attribute is only applicable to entries -defined using \cs{newabbreviation} (or \cs{newacronym} if it's using -\cs{newabbreviation}.) - -\item[\catattrdef{textshortaccess}] Like \gloskey{nameshortaccess} -but applies to the \gloskey{textaccess} field (for use with -regular abbreviations). - -\item[\catattrdef{firstshortaccess}] Like \gloskey{nameshortaccess} -but applies to the \gloskey{firstaccess} field (for use with -regular abbreviations). - -\item[\catattrdef{accessaposplural}] This boolean attribute overrides -\catattr{aposplural} for the \gloskey{shortpluralaccess} key. -Has no effect if there's no accessibility support or if -the \gloskey{shortaccess} key hasn't been set or if the -\gloskey{shortpluralaccess} key is explicitly set. If -the \catattr{aposplural} is set and this attribute isn't set -and the \gloskey{shortaccess} key is set, then the -\catattr{aposplural} setting governs the default -\gloskey{shortpluralaccess} setting. If you want -\catattr{aposplural} but don't want it applied to the accessibility -support, set the \catattr{accessaposplural} attribute to \qt{false}. This attribute is only applicable to entries -defined using \cs{newabbreviation} (or \cs{newacronym} if it's using -\cs{newabbreviation}.) - -\item[\catattrdef{accessnoshortplural}] This boolean attribute overrides -\catattr{noshortplural} for the \gloskey{shortpluralaccess} key. -The same conditions apply as for \catattr{accessaposplural}. This attribute is only applicable to entries -defined using \cs{newabbreviation} (or \cs{newacronym} if it's using -\cs{newabbreviation}.) - \item[\catattrdef{headuc}] If this attribute is set to \qt{true}, commands like \ics{glsfmtshort} will use the upper case version in the page headers. @@ -7408,6 +7679,10 @@ Remember that glossary styles may additionally apply a font change, such as the list styles which put the name in the optional argument of \cs{item}. +\item[\catattrdef{glosssymbolfont}] (New to version 1.42.) +This is similar to \catattr{glossnamefont} and +\catattr{glossdescfont} but is used by \ics{glossentrysymbol}. + \item[\catattrdef{textformat}] (New to version 1.21.) Commands like \cs{gls} and \cs{glstext} have the link text encapsulated in the argument of \cs{glstextformat} by default. If @@ -7490,11 +7765,75 @@ for the external list. For example: description={external example}} \end{verbatim} -\item[\catattrdef{externallocation}] The value should be the -file name of the target document when manually indexing an -external location (see \sectionref{sec:wrglossary}). In general, -it's better to use \gls{bib2gls} v1.7+ which can handle multiple -external sources and doesn't require this attribute. +\item[\catattrdef{externallocation}] The value should be the +file name of the target document when manually indexing an +external location (see \sectionref{sec:wrglossary}). In general, +it's better to use \gls{bib2gls} v1.7+ which can handle multiple +external sources and doesn't require this attribute. + +\end{description} + +If a term is defined using \ics{newabbreviation} and accessibility +support has been supplied via the \pkgopt{accsupp} package option +then the following attributes are also available. If +\gloskey{shortaccess} isn't set its value will be obtained from: +\begin{definition}[\DescribeMacro\glsdefaultshortaccess] +\cs{glsdefaultshortaccess}\marg{short}\marg{long} +\end{definition} +This is defined by \sty{glossaries-accsupp} to just do \meta{long} +but \sty{glossaries-extra} redefines it to do \meta{long} +(\meta{short}). The \catattr{accessinsertdots}, +\catattr{accessaposplural} and \catattr{accessnoshortplural} +attributes below refer to the \meta{short} form that's passed to +this command. + +The following attributes are only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}). They have no effect if the \pkgopt{accsupp} +package option hasn't been used. + +\begin{description} +\item[\catattrdef{accessinsertdots}] If this attribute is set to +\qt{true} and the \sty{glossaries-accsupp} package has been loaded +(with the \pkgopt{accsupp} option), then this behaves like +\catattr{insertdots} but for the \meta{short} part used in the \gloskey{shortaccess} field instead +of the \gloskey{short} field. +This setting will be overridden by an explicit use of +the \gloskey{shortaccess} key in the optional argument +of \cs{newabbreviation} (or \cs{newacronym}). + +\item[\catattrdef{accessaposplural}] This boolean attribute overrides +\catattr{aposplural} for the \gloskey{shortpluralaccess} key. +Has no effect if there's no accessibility support or if +the \gloskey{shortaccess} key hasn't been set or if the +\gloskey{shortpluralaccess} key is explicitly set. If +the \catattr{aposplural} is set and this attribute isn't set +and the \gloskey{shortaccess} key is set, then the +\catattr{aposplural} setting governs the default +\gloskey{shortpluralaccess} setting. If you want +\catattr{aposplural} but don't want it applied to the accessibility +support, set the \catattr{accessaposplural} attribute to \qt{false}. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{accessnoshortplural}] This boolean attribute overrides +\catattr{noshortplural} for the \gloskey{shortpluralaccess} key. +The same conditions apply as for \catattr{accessaposplural}. This attribute is only applicable to entries +defined using \cs{newabbreviation} (or \cs{newacronym} if it's using +\cs{newabbreviation}.) + +\item[\catattrdef{nameshortaccess}] If this attribute is set to +\qt{true}, the \gloskey{access} field (used for the \gloskey{name} +field's accessibility support) automatically assigned if it's not +provided. + +\item[\catattrdef{textshortaccess}] Like \gloskey{nameshortaccess} +but applies to the \gloskey{textaccess} field automatically assigned if it's not +provided. + +\item[\catattrdef{firstshortaccess}] Like \gloskey{nameshortaccess} +but applies to the \gloskey{firstaccess} field automatically assigned if it's not +provided. \end{description} @@ -8374,120 +8713,6 @@ Set the escape (quote) character to \meta{char}. \end{definition} Set the encap character to \meta{char}. -\chapter{On-the-Fly Document Definitions} -\label{sec:onthefly} - -\begin{important} -The commands described here may superficially look like -\meta{word}\cs{index}\marg{word}, but they behave rather -differently. If you want to use \cs{index} then just use -\cs{index}. -\end{important} - -The \styfmt{glossaries} package advises against defining entries -in the \env{document} environment. As mentioned in -\sectionref{sec:pkgopts} above, this ability is disabled by -default with \styfmt{glossaries-extra} but can be enabled using -the \pkgopt{docdefs} package options. - -Although this can be problematic, the \styfmt{glossaries-extra} -package provides a way of defining and using entries within -the \env{document} environment without the tricks used with the -\pkgopt{docdefs} option. \emph{There are limitations with this -approach, so take care with it.} This function is disabled by -default, but can be enabled using the preamble-only command: -\begin{definition}[\DescribeMacro\GlsXtrEnableOnTheFly] -\cs{GlsXtrEnableOnTheFly} -\end{definition} -When used, this defines the commands described below. - -\begin{important} -The commands \cs{glsxtr}, \cs{glsxtrpl}, \cs{Glsxtr} -and \cs{Glsxtrpl} can't be used after the glossaries have been -displayed (through \ics{printglossary} etc). It's best not to mix -these commands with the standard glossary commands, such -as \cs{gls} or there may be unexpected results. -\end{important} - -\begin{definition}[\DescribeMacro\glsxtr] -\cs{glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label} -\end{definition} -If an entry with the label \meta{label} has already been defined, -this just does \cs{gls}\oarg{gls-options}\marg{label}. If -\meta{label} hasn't been defined, this will define the entry -using: -\begin{alltt} -\cs{newglossaryentry}\marg{label}\{name=\marg{label}, - category=\cs{glsxtrcat}, - description=\{\cs{nopostdesc}\}, - \meta{dfn-options}\} -\end{alltt} - -\begin{important} -The \meta{label} must contain any non-expandable commands, such as -formatting commands or problematic characters. -If the term requires any of these, they must be omitted from the -\meta{label} and placed in the \gloskey{name} key must be provided -in the optional argument \meta{dfn-options}. -\end{important} - -The second optional argument \meta{dfn-options} should be empty -if the entry has already been defined, since it's too late for -them. If it's not empty, a~warning will be generated with -\begin{definition}[\DescribeMacro\GlsXtrWarning] -\cs{GlsXtrWarning}\marg{dfn-options}\marg{label} -\end{definition} - -For example, this warning will be generated on the second instance -of \cs{glsxtr} below: -\begin{verbatim} -\glsxtr[][plural=geese]{goose} -% ... later -\glsxtr[][plural=geese]{goose} -\end{verbatim} - -If you are considering doing something like: -\begin{verbatim} -\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}} -\renewcommand*{\GlsXtrWarning}[2]{} -% ... later -\goose\ some more text here -\end{verbatim} -then don't bother. It's simpler and less problematic to just -define the entries in the preamble with \ics{newglossaryentry} -and then use \cs{gls} in the document. - -There are plural and case-changing alternatives to \cs{glsxtr}: -\begin{definition}[\DescribeMacro\glsxtrpl] -\cs{glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label} -\end{definition} -This is like \cs{glsxtr} but uses \cs{glspl} instead of \cs{gls}. - -\begin{definition}[\DescribeMacro\Glsxtr] -\cs{Glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label} -\end{definition} -This is like \cs{glsxtr} but uses \cs{Gls} instead of \cs{gls}. - -\begin{definition}[\DescribeMacro\Glsxtrpl] -\cs{Glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label} -\end{definition} -This is like \cs{glsxtr} but uses \cs{Glspl} instead of \cs{gls}. - -If you use UTF-8 and don't want the inconvenient of needing -to use an ASCII-only label, then it's better to use -\XeLaTeX\ or \LuaLaTeX\ instead of \LaTeX\ (or \pdfLaTeX). -If you really desperately want to use UTF-8 entry labels without -switching to \XeLaTeX\ or \LuaLaTeX\ then there is a starred -version of \cs{GlsXtrEnableOnTheFly} that allows you to -use UTF-8 characters in \meta{label}, but it's experimental and -may not work in some cases. - -\begin{important} -If you use the starred version of \cs{GlsXtrEnableOnTheFly} -don't use any commands in the \meta{label}, even if they expand -to just text. -\end{important} - \chapter{\appfmt{bib2gls}: Managing Reference Databases} \label{sec:bib2gls} @@ -8922,6 +9147,11 @@ the associated glossary: \ics{printunsrtabbreviations}, \ics{printunsrtacronyms}, \ics{printunsrtsymbols}, \ics{printunsrtnumbers} and \ics{printunsrtindex}. +The \pkgopt{savenumberlist} package option doesn't have any effect +with \gls{bib2gls}. The location lists are saved by default, so +\sty{glossaries-extra-bib2gls} patches \ics{glsentrynumberlist} and +\ics{glsdisplaynumberlist} to work with the \gloskey{location} field + \begin{definition}[\DescribeMacro\glsxtrprovidecommand] \cs{glsxtrprovidecommand}\marg{cs}\oarg{n}\oarg{default}\marg{definition} \end{definition} @@ -10612,10 +10842,15 @@ you can use \begin{definition}[\DescribeMacro\glsxtrentryfmt] \cs{glsxtrentryfmt}\marg{label}\marg{text} \end{definition} -This uses \cs{texorpdfstring} and will simply expand to \meta{text} +If \sty{hyperref} is used, this uses \cs{texorpdfstring} and will expand to +\begin{definition}[\DescribeMacro\glsxtrpdfentryfmt] +\cs{glsxtrpdfentryfmt}\marg{label}\marg{text} +\end{definition} within the PDF bookmarks, but in the document it will do \meta{cs}\marg{text} if a control sequence name has been provided -or just \meta{text} otherwise. +or just \meta{text} otherwise. The PDF bookmark version simply does +\meta{text}. It may be redefined, but remember that it needs to +expand fully. The \styfmt{glossaries} package provides \cs{glsaddstoragekey} to add new keys. This command will cause an error if the key has @@ -10801,6 +11036,30 @@ use: Again, version 1.39 introduced a starred form of these commands, which use the starred form of \cs{glsxtrifhasfield}. +As from v1.42, you can test if the field value is contained in a +comma-separated list with: +\begin{definition}[\DescribeMacro\GlsXtrIfFieldValueInCsvList] +\cs{GlsXtrIfFieldValueInCsvList}\marg{label}\marg{field}\marg{list}\marg{true}\marg{false} +\end{definition} +The unstarred version uses the unstarred form of +\cs{glsxtrifhasfield} (which adds grouping so \meta{true} and +\meta{false} will be localised). The starred version uses +\cs{glsxtrifhasfield*}. If the field value (without expansion) is +contained in \meta{list} then \meta{true} is done otherwise +\meta{false} is done. If the field hasn't been set \meta{false} is +done. This internally uses \cs{DTLifinlist} provided by +\sty{datatool-base} which performs a one level expansion on +\meta{list}. See the \sty{datatool} documentation for further +details. + +This command is intended for fields that contain a label. For +example, to test if the category is one of a set of labels: +\begin{verbatim} +\GlsXtrIfFieldValueInCsvList{examplelabel}{category}% + {abbreviation,acronym}% set of labels + {true part}{false part} +\end{verbatim} + As from v1.31, if a field represents a numeric (integer) value, you can use the following two numeric tests. If the field is set, it must expand to an integer. You may use \cs{glscurrentfieldvalue} @@ -10883,7 +11142,36 @@ or \cs{glsxtrfieldforlistloop}\marg{label}\marg{field}\marg{handler} \end{definition} that internally use \cs{dolistcsloop} and \cs{forlistloop}, -respectively. +respectively. You can use \ics{listbreak} to break out of the loop +(see the \sty{etoolbox} manual for further details). + +For fields that contain comma-separated lists use +\cs{glsxtrforcsvfield} instead. + +New to v1.42: +\begin{definition}[\DescribeMacro\glsxtrfieldformatlist] +\cs{glsxtrfieldformatlist}\marg{label}\marg{field} +\end{definition} +Like \sty{datatool-base}'s \ics{DTLformatlist}, this iterates over +an (\sty{etoolbox}) internal list and formats each item. Uses all +the same helper commands as \cs{DTLformatlist} (the same list handler +macro is used). Unlike the \sty{datatool-base} command, this command +has no starred version. Grouping is automatically applied. + +For example, with \gls{bib2gls}['s] \texttt{save-child-count} +resource option: +\begin{verbatim} +\newcommand*{\listchildren}[1]{% + \GlsXtrIfFieldNonZero{childcount}{#1}% + {child count: \glscurrentfieldvalue; children: + \let\DTLlistformatitem\glsfmtname + \glsxtrfieldformatlist{#1}{childlist}% + }% + {no children}% +} +\end{verbatim} +For fields that contain a comma-separated list use \cs{glsxtrfieldformatcsvlist} +instead. There are also commands that use \cs{ifinlistcs}: \begin{definition}[\DescribeMacro\glsxtrfieldifinlist] @@ -10920,6 +11208,13 @@ which is just a synonym for \cs{@endfortrue}. The loop is performed within the true part of \cs{glsxtrifhasfield} so scoping is automatically applied. +New to v1.42: +\begin{definition}[\DescribeMacro\glsxtrfieldformatcsvlist] +\cs{glsxtrfieldformatcsvlist}\marg{label}\marg{field} +\end{definition} +Like \cs{glsxtrfieldformatcsvlist} but for fields that contain +comma-separated lists. + As from version 1.32, if the field given by \begin{definition}[\DescribeMacro\GlsXtrForeignTextField] \cs{GlsXtrForeignTextField} @@ -11572,6 +11867,120 @@ The value of the \gloskey{alias} field can be accessed using \cs{glsxtralias}\marg{label} \end{definition} +\chapter{On-the-Fly Document Definitions} +\label{sec:onthefly} + +\begin{important} +The commands described here may superficially look like +\meta{word}\cs{index}\marg{word}, but they behave rather +differently. If you want to use \cs{index} then just use +\cs{index}. +\end{important} + +The \styfmt{glossaries} package advises against defining entries +in the \env{document} environment. As mentioned in +\sectionref{sec:pkgopts} above, this ability is disabled by +default with \styfmt{glossaries-extra} but can be enabled using +the \pkgopt{docdefs} package options. + +Although this can be problematic, the \styfmt{glossaries-extra} +package provides a way of defining and using entries within +the \env{document} environment without the tricks used with the +\pkgopt{docdefs} option. \emph{There are limitations with this +approach, so take care with it.} This function is disabled by +default, but can be enabled using the preamble-only command: +\begin{definition}[\DescribeMacro\GlsXtrEnableOnTheFly] +\cs{GlsXtrEnableOnTheFly} +\end{definition} +When used, this defines the commands described below. + +\begin{important} +The commands \cs{glsxtr}, \cs{glsxtrpl}, \cs{Glsxtr} +and \cs{Glsxtrpl} can't be used after the glossaries have been +displayed (through \ics{printglossary} etc). It's best not to mix +these commands with the standard glossary commands, such +as \cs{gls} or there may be unexpected results. +\end{important} + +\begin{definition}[\DescribeMacro\glsxtr] +\cs{glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +If an entry with the label \meta{label} has already been defined, +this just does \cs{gls}\oarg{gls-options}\marg{label}. If +\meta{label} hasn't been defined, this will define the entry +using: +\begin{alltt} +\cs{newglossaryentry}\marg{label}\{name=\marg{label}, + category=\cs{glsxtrcat}, + description=\{\cs{nopostdesc}\}, + \meta{dfn-options}\} +\end{alltt} + +\begin{important} +The \meta{label} must contain any non-expandable commands, such as +formatting commands or problematic characters. +If the term requires any of these, they must be omitted from the +\meta{label} and placed in the \gloskey{name} key must be provided +in the optional argument \meta{dfn-options}. +\end{important} + +The second optional argument \meta{dfn-options} should be empty +if the entry has already been defined, since it's too late for +them. If it's not empty, a~warning will be generated with +\begin{definition}[\DescribeMacro\GlsXtrWarning] +\cs{GlsXtrWarning}\marg{dfn-options}\marg{label} +\end{definition} + +For example, this warning will be generated on the second instance +of \cs{glsxtr} below: +\begin{verbatim} +\glsxtr[][plural=geese]{goose} +% ... later +\glsxtr[][plural=geese]{goose} +\end{verbatim} + +If you are considering doing something like: +\begin{verbatim} +\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}} +\renewcommand*{\GlsXtrWarning}[2]{} +% ... later +\goose\ some more text here +\end{verbatim} +then don't bother. It's simpler and less problematic to just +define the entries in the preamble with \ics{newglossaryentry} +and then use \cs{gls} in the document. + +There are plural and case-changing alternatives to \cs{glsxtr}: +\begin{definition}[\DescribeMacro\glsxtrpl] +\cs{glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +This is like \cs{glsxtr} but uses \cs{glspl} instead of \cs{gls}. + +\begin{definition}[\DescribeMacro\Glsxtr] +\cs{Glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +This is like \cs{glsxtr} but uses \cs{Gls} instead of \cs{gls}. + +\begin{definition}[\DescribeMacro\Glsxtrpl] +\cs{Glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label} +\end{definition} +This is like \cs{glsxtr} but uses \cs{Glspl} instead of \cs{gls}. + +If you use UTF-8 and don't want the inconvenient of needing +to use an ASCII-only label, then it's better to use +\XeLaTeX\ or \LuaLaTeX\ instead of \LaTeX\ (or \pdfLaTeX). +If you really desperately want to use UTF-8 entry labels without +switching to \XeLaTeX\ or \LuaLaTeX\ then there is a starred +version of \cs{GlsXtrEnableOnTheFly} that allows you to +use UTF-8 characters in \meta{label}, but it's experimental and +may not work in some cases. + +\begin{important} +If you use the starred version of \cs{GlsXtrEnableOnTheFly} +don't use any commands in the \meta{label}, even if they expand +to just text. +\end{important} + \chapter{Supplemental Packages} \label{sec:supplemental} @@ -11611,6 +12020,11 @@ Next use: \pgls{svm}. \section{Accessibility Support} \label{sec:accsupp} +\begin{important} +The \sty{glossaries-accsupp} package is still experimental and so +accessibility features are liable to change. +\end{important} + The \sty{glossaries-accsupp} package needs to be loaded before \styfmt{glossaries-extra} or through the \pkgopt{accsupp} package option: @@ -11621,7 +12035,9 @@ If you don't load \sty{glossaries-accsupp} or you load \sty{glossaries-accsupp} after \styfmt{glossaries-extra} the new \cs{glsaccess}\meta{xxx} commands described below will simply be equivalent to the corresponding \cs{glsentry}\meta{xxx} -commands. +commands. Other accessibility features, such as the attributes used +by \ics{newabbreviation} also won't work if \sty{glossaries-accsupp} +is loaded too late. The following \cs{glsaccess}\meta{xxx} commands add accessibility information wrapped around the corresponding \cs{glsentry}\meta{xxx} commands. There is @@ -11978,7 +12394,7 @@ shouldn't appear in the final draft of your document. The \styfmt{glossaries-extra} package has the facility to load language modules (whose filename is in the form -\texttt{glossariesxtr-}\meta{language}\texttt{.ldf}) if they exist, +\texttt{glossariesxtr\dhyphen}\meta{language}\texttt{.ldf}) if they exist, but won't warn if they don't. If \sty{glossaries-extra-bib2gls} is loaded via the \pkgopt{record} package option then the check for language resource files will additionally search for an associated @@ -11991,9 +12407,9 @@ dialect file. If you want to write your own language module, you just need to create a file called -\texttt{glossariesxtr-}\meta{lang}\texttt{.ldf}, where \meta{lang} +\texttt{glossariesxtr\dhyphen}\meta{lang}\texttt{.ldf}, where \meta{lang} identifies the language or dialect (see the \sty{tracklang} -package). For example, \texttt{glossariesxtr-french.ldf}. +package). For example, \nolinkurl{glossariesxtr-french.ldf}. The simplest code for this file is: \begin{verbatim} @@ -12107,8 +12523,6 @@ This produces the following text in English: \cs{GlsXtrNoGlsWarningBuildInfo} \end{definition} This is advice on how to generate the glossary files. -See the documented code (\texttt{glossaries-extra-code.pdf}) -for further details. \begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningAutoMake] \cs{GlsXtrNoGlsWarningAutoMake}\marg{label} @@ -12117,7 +12531,9 @@ This is the message produced when the \pkgopt{automake} option is used, but the document needs a rerun or the shell escape setting doesn't permit the execution of the external application. This command also generates a warning in the transcript file. -See the documented code for further details. + +See the documented code (\nolinkurl{glossaries-extra-code.pdf}) +for further details. \printglossaries \PrintIndex diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.pdf index 7d04e01e7a9..46ac6633fb8 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.tex b/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.tex index e123813d212..a5caad77b61 100644 --- a/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.tex +++ b/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbr-styles.tex @@ -141,6 +141,10 @@ \testdescstyle{long-short-desc} \testdescstyle{short-long-desc} +%\teststyle{footnote-desc}% synonym: short-footnote-desc +\testdescstyle{short-footnote-desc} +%\teststyle{postfootnote-desc}% synonym: short-postfootnote-desc +\testdescstyle{short-postfootnote-desc} %\testdescstyle{short-desc}% synonym: short-nolong-desc \testdescstyle{short-nolong-desc} \testdescstyle{short-nolong-desc-noreg} @@ -154,12 +158,16 @@ \testdescstyle{short-sc-nolong-desc} \testdescstyle{long-noshort-sc-desc} %\testdescstyle{long-desc-sc}% deprecated synonym of long-noshort-sc-desc +\testdescstyle{short-sc-footnote-desc} +\testdescstyle{short-sc-postfootnote-desc} \testdescstyle{long-short-sm-desc} \testdescstyle{short-sm-long-desc} %\testdescstyle{short-sm-desc}% synonym: short-sm-nolong-desc \testdescstyle{short-sm-nolong-desc} \testdescstyle{long-noshort-sm-desc} %\testdescstyle{long-desc-sm}% deprecated synonym of long-noshort-sm-desc +\testdescstyle{short-sm-footnote-desc} +\testdescstyle{short-sm-postfootnote-desc} \testdescstyle{long-short-em-desc} \testdescstyle{long-em-short-em-desc} \testdescstyle{short-em-long-desc} @@ -168,6 +176,8 @@ \testdescstyle{short-em-nolong-desc} \testdescstyle{long-noshort-em-desc} %\testdescstyle{long-desc-em}% deprecated synonym of long-noshort-em-desc +\testdescstyle{short-em-footnote-desc} +\testdescstyle{short-em-postfootnote-desc} \testdescstyle{long-em-noshort-em-desc} \testdescstyle{long-em-noshort-em-desc-noreg} \testdescstyle{long-short-user-desc} diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbrv.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbrv.pdf index e85508041da..105622c5b3a 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbrv.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-abbrv.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-accsupp.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-accsupp.pdf index 51d427f7ca4..59d56201f16 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-accsupp.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-accsupp.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym-desc.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym-desc.pdf index a792bef02ba..fde058b22a0 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym-desc.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym-desc.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym.pdf index 748c73c9cb1..834fd8a21cd 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-acronym.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alias.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alias.pdf index 7254b52a706..0e67a7e6564 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alias.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alias.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-altmodifier.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-altmodifier.pdf index e0776db2de9..6af97621c15 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-altmodifier.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-altmodifier.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-marginpar.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-marginpar.pdf index ab853285b42..05e98dd8fd7 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-marginpar.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-marginpar.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-sym.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-sym.pdf index 56d3b3e27d0..78721598336 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-sym.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree-sym.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree.pdf index 36df4991ddd..2886317c201 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-alttree.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex-hyp.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex-hyp.pdf index 59a5978d4ff..a9a5d2ef072 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex-hyp.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex-hyp.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex.pdf index 93a8d36a551..fe70ab034e7 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-autoindex.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref.pdf index 8429430c250..101f2177b99 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref2.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref2.pdf index be4f0703ab5..8d3b8946771 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref2.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-crossref2.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-docdef.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-docdef.pdf index 418419a652e..f347c9d1ac4 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-docdef.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-docdef.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-entrycount.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-entrycount.pdf index 0b032a464c1..b98a44c348c 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-entrycount.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-entrycount.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-external.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-external.pdf index b598bbe6728..111ffbd4258 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-external.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-external.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-fmt.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-fmt.pdf index 44b0b88aba5..6a80f795295 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-fmt.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-fmt.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-footnote.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-footnote.pdf index ddd2da63765..635649c794e 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-footnote.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-footnote.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-header.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-header.pdf index d14b7ac990e..989f2abff37 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-header.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-header.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-indexhook.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-indexhook.pdf index 6862cdf5af7..661eb976982 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-indexhook.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-indexhook.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-initialisms.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-initialisms.pdf index 70a828f297c..529b736db58 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-initialisms.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-initialisms.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-linkcount.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-linkcount.pdf index 6ecfa45889f..97f55c724a8 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-linkcount.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-linkcount.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixed-abbrv-styles.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixed-abbrv-styles.pdf index ed38e87d42c..2bb22efbc47 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixed-abbrv-styles.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixed-abbrv-styles.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixedsort.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixedsort.pdf index 47a2626b991..38618c77ff6 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixedsort.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixedsort.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixture.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixture.pdf index 3c9208ba088..dc9949c10f4 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixture.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-mixture.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-name-font.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-name-font.pdf index 83b5b168d87..58b22ff3ec0 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-name-font.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-name-font.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-nested.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-nested.pdf index da7a9f2d445..129318d42f5 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-nested.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-nested.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-noidx-restricteddocdefs.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-noidx-restricteddocdefs.pdf index d2a571a2331..66fef87fc11 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-noidx-restricteddocdefs.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-noidx-restricteddocdefs.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onelink.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onelink.pdf index 80898cefa1e..dc371114581 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onelink.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onelink.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-utf8.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-utf8.pdf index 1daeb9987c6..2f84f3cfacd 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-utf8.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-utf8.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-xetex.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-xetex.pdf index 98df08cb26b..42de4b8284c 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-xetex.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly-xetex.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly.pdf index 1d60fe81750..69edc38f557 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-onthefly.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-pages.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-pages.pdf index 97cb8910036..f58924d327f 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-pages.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-pages.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-postdot.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-postdot.pdf index 5193bfe0bd7..eb72d3c9ca3 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-postdot.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-postdot.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-postlink.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-postlink.pdf index 7e7448c3616..37e3373e60d 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-postlink.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-postlink.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-prefix.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-prefix.pdf index 196eeb389bd..ccd41032a1c 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-prefix.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-prefix.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-record-nameref.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-record-nameref.pdf index 23daf02f3cf..06c09821670 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-record-nameref.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-record-nameref.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-record.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-record.pdf index 338bc55bb11..0aa072d73a4 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-record.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-record.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-restricteddocdefs.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-restricteddocdefs.pdf index 0662789138c..f2eee1be1df 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-restricteddocdefs.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-restricteddocdefs.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-hyp.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-hyp.pdf index 67862dfd865..118ce6594c5 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-hyp.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-hyp.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main-hyp.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main-hyp.pdf index fd234df18be..95a34c9e536 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main-hyp.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main-hyp.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main.pdf index 5ca8b571c0f..5aa05dbffd7 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl-main.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl.pdf index a78c307b62b..c5fba248110 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-suppl.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-trans.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-trans.pdf index c7a5afbce69..4a92c2ab8cd 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-trans.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-trans.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-undef.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-undef.pdf index f5ce99c373b..2bf1f97dd8a 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-undef.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-undef.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample-unitentrycount.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample-unitentrycount.pdf index 4c397377f09..0c0dda6159a 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample-unitentrycount.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample-unitentrycount.pdf differ diff --git a/Master/texmf-dist/doc/latex/glossaries-extra/sample.pdf b/Master/texmf-dist/doc/latex/glossaries-extra/sample.pdf index c5fb78f8f99..4ac0e58c850 100644 Binary files a/Master/texmf-dist/doc/latex/glossaries-extra/sample.pdf and b/Master/texmf-dist/doc/latex/glossaries-extra/sample.pdf differ diff --git a/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.dtx b/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.dtx index 3d37899d9b0..d16bcf9bae4 100644 --- a/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.dtx +++ b/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.dtx @@ -1,6 +1,14 @@ %\iffalse % glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: +% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" +% -section "chapter" +% -macrocode ".*\.tex" +% -macrocode ".*\.bib" +% -setambles ".*\.bib=>\nopreamble\nopostamble" +% -comment ".*\.tex" +% -comment ".*\.bib" +% -author "Nicola Talbot" % -src "glossaries-extra.sty\Z=>glossaries-extra.sty" % -src "glossaries-extra-bib2gls.sty\Z=>glossaries-extra-bib2gls.sty" % -src "glossaries-extra-stylemods.sty\Z=>glossaries-extra-stylemods.sty" @@ -9,17 +17,9 @@ % -src "glossary-topic.sty\Z=>glossary-topic.sty" % -src "(example-glossaries-.+\.tex)\Z=>\1" % -src "(example-glossaries-.+\.bib)\Z=>\1" -% -author "Nicola Talbot" % -doc "glossaries-extra-codedoc.tex" -% -macrocode ".*\.tex" -% -macrocode ".*\.bib" -% -section "chapter" -% -setambles ".*\.bib=>\nopreamble\nopostamble" -% -comment ".*\.tex" -% -comment ".*\.bib" -% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})" % glossaries-extra -% Created on 2019/4/9 21:59 +% Created on 2020/2/13 22:19 %\fi %\iffalse %<*package> @@ -42,7 +42,7 @@ %\fi % \iffalse % Doc-Source file to use with LaTeX2e -% Copyright (C) 2019 Nicola Talbot, all rights reserved. +% Copyright (C) 2020 Nicola Talbot, all rights reserved. % \fi % \iffalse %<*driver> @@ -142,7 +142,7 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of \setcounter{IndexColumns}{2} -\CheckSum{25503} +\CheckSum{26913} \newcommand*{\ifirstuse}{\iterm{first use}} \newcommand*{\firstuse}{\gls{firstuse}} @@ -152,9 +152,9 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of \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*{\istkey}[1]{\appfmt{#1}\index{makeindex=\appfmt{makeindex}>#1=\texttt{#1}}} \newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}} -\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters|hyperpage}} +\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters}} \newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}} \newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}} @@ -182,13 +182,13 @@ governed by the \gloskey{first} and \gloskey{firstplural} keys of \raggedright } -\title{glossaries-extra.sty v1.41: +\title{glossaries-extra.sty v1.42: documented code} \author{Nicola L.C. Talbot\\[10pt] Dickimaw Books\\ \url{http://www.dickimaw-books.com/}} -\date{2019-04-09} +\date{2020-02-13} \begin{document} \DocInput{glossaries-extra.dtx} @@ -233,7 +233,7 @@ Dickimaw Books\\ %\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossaries-extra}[2020/02/13 v1.42 (NLCT)] % \end{macrocode} % Requires \sty{xkeyval} to define package options. % \begin{macrocode} @@ -511,15 +511,17 @@ Dickimaw Books\\ %(\texttt{glslink} in most cases, \texttt{glossadd} for \cs{glsadd}). % \begin{macrocode} \newcommand*{\@@glsxtr@record}[3]{% +% \end{macrocode} +%Save the label in case it's needed. This needs to be outside the +%existence check to allow the post-link hook to reference it. +%\changes{1.42}{2020-02-03}{moved label definition outside of conditional} +% \begin{macrocode} + \edef\@gls@label{\glsdetoklabel{#2}}% + \let\glslabel\@gls@label \ifglsentryexists{#2}{}% {% \@@glsxtrwrglossmark \begingroup -% \end{macrocode} -%Save the label in case it's needed. -% \begin{macrocode} - \edef\@gls@label{\glsdetoklabel{#2}}% - \let\glslabel\@gls@label \let\@glsnumberformat\@glsxtr@defaultnumberformat \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% @@ -1577,6 +1579,10 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\sty{glossaries-accsupp} can't be loaded after +%\styfmt{glossaries-extra}. \sty{glossaries-accsupp} v4.29+ checks +%\cs{@glsxtr@doaccsupp} to determine if it's been loaded too late. +% %\begin{option}{accsupp} % If \pkgopt{accsupp}, load \sty{glossaries-accsupp} package. % \begin{macrocode} @@ -1585,6 +1591,22 @@ Dickimaw Books\\ % \end{macrocode} %\end{option} % +%\begin{macro}{\@glsxtr@doloadprefix} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@doloadprefix}{} +% \end{macrocode} +%\end{macro} +% +%\begin{option}{prefix} +%\changes{1.42}{2020-02-03}{new} +% If \pkgopt{prefix}, load \sty{glossaries-prefix} package. +% \begin{macrocode} +\@glsxtr@declareoption{prefix}{% + \renewcommand*{\@glsxtr@doloadprefix}{\RequirePackage{glossaries-prefix}}} +% \end{macrocode} +%\end{option} +% %\begin{macro}{\glsxtrNoGlossaryWarning} %\changes{0.3}{2015-12-02}{new} %\changes{1.34}{2018-07-29}{added package warning} @@ -1805,10 +1827,11 @@ Dickimaw Books\\ %\begin{option}{debug} %\changes{1.21}{2017-11-03}{new} % Provide extra debug options. +%\changes{1.42}{2020-02-03}{add support for debug=showaccsupp} % \begin{macrocode} \define@choicekey{glossaries-extra.sty}{debug} [\@glsxtr@debugval\@glsxtr@debugnr]% - {true,false,showtargets,showwrgloss,all}[true]{% + {true,false,showtargets,showwrgloss,all,showaccsupp}[true]{% \ifcase\@glsxtr@debugnr\relax % true \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{}% @@ -1821,8 +1844,10 @@ Dickimaw Books\\ \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% \or % all - \glsxtr@dooption{debug=showtargets}% + \glsxtr@dooption{debug=showtargets,debug=showaccsupp}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \or % showaccsupp + \glsxtr@dooption{debug=showaccsupp}% \fi } % \end{macrocode} @@ -1845,6 +1870,10 @@ Dickimaw Books\\ % \begin{macrocode} \@glsxtr@doaccsupp % \end{macrocode} +% Load the \sty{glossaries-prefix} package if required. +% \begin{macrocode} +\@glsxtr@doloadprefix +% \end{macrocode} % Redefine \cs{glspostdescription} if required. % \begin{macrocode} \@glsxtr@defpostpunc @@ -1853,23 +1882,50 @@ Dickimaw Books\\ %\begin{macro}{\glsshowtarget} %This command was introduced to \sty{glossaries} v4.32 so it may not %be defined. Therefore it's defined here using \cs{def}. +%\cs{glsshowtargetouter} was introduced in \sty{glossaries} v4.45, +%so that also may not be defined. %\changes{1.21}{2017-11-03}{new} +%\changes{1.42}{2020-02-03}{added check for \cs{glsshowtargetouter}} % \begin{macrocode} -\def\glsshowtarget#1{% - \glsxtrtitleorpdforheading - {% - \ifmmode - \texttt{\small [#1]}% - \else - \ifinner +\ifdef\glsshowtargetouter +{ + \renewcommand*{\glsshowtarget}[1]{% + \glsxtrtitleorpdforheading + {% + \ifmmode + \nfss@text{\glsshowtargetfont [#1]}% + \else + \ifinner + {\glsshowtargetfont [#1]}% + \else + \glsshowtargetouter{#1}% + \fi + \fi + }% + {[#1]}% + {{\protect\glsshowtargetfont [#1]}}% + } +} +{ +% \end{macrocode} +%Old definition. +% \begin{macrocode} + \def\glsshowtarget#1{% + \glsxtrtitleorpdforheading + {% + \ifmmode \texttt{\small [#1]}% \else - \marginpar{\texttt{\small #1}}% + \ifinner + \texttt{\small [#1]}% + \else + \marginpar{\texttt{\small #1}}% + \fi \fi - \fi - }% - {[#1]}% - {\texttt{\small [#1]}}% + }% + {[#1]}% + {\texttt{\small [#1]}}% + } } % \end{macrocode} %\end{macro} @@ -1977,18 +2033,24 @@ Dickimaw Books\\ % \begin{macrocode} \renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% % \end{macrocode} +% Disable options that can only be used when the package is loaded: +% \begin{macrocode} +\disable@keys{glossaries-extra.sty}{accsupp} +% \end{macrocode} % Now define the user command: % \begin{macrocode} \newcommand*{\glossariesextrasetup}[1]{% \let\glsxtr@setup@record\relax \let\@glsxtr@setupshortcuts\relax \let\@glsxtr@redef@forglsentries\relax + \let\@glsxtr@doloadprefix\relax \setkeys{glossaries-extra.sty}{#1}% \@glsxtr@abbreviationsdef \let\@glsxtr@abbreviationsdef\relax \@glsxtr@setupshortcuts \glsxtr@setup@record \@glsxtr@redef@forglsentries + \@glsxtr@doloadprefix } % \end{macrocode} %\end{macro} @@ -2335,7 +2397,7 @@ Dickimaw Books\\ \ifdef\texorpdfstring { \newcommand*{\glsxtrentryfmt}[2]{% - \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{#2}% + \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}% } } { @@ -2344,20 +2406,36 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrpdfentryfmt} +%\changes{1.42}{2020-02-03}{new} +%Use for the PDF bookmarks. +% \begin{macrocode} +\newcommand*{\glsxtrpdfentryfmt}[2]{#2} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\@glsxtrentryfmt} %\changes{1.12}{2017-02-03}{new} %\changes{1.23}{2017-11-12}{fixed missing label argument} % \begin{macrocode} \newrobustcmd*{\@glsxtrentryfmt}[2]{% - \glsdoifexistsordo{#1}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{added \cs{glslabel} and scope} +%Locally define \cs{glslabel} in case the helper command needs to access the +%label. +% \begin{macrocode} {% - \ifglshasfield{\GlsXtrFmtField}{#1}% + \def\glslabel{#1}% + \glsdoifexistsordo{#1}% {% - \csuse{\glscurrentfieldvalue}{#2}% + \ifglshasfield{\GlsXtrFmtField}{#1}% + {% + \csuse{\glscurrentfieldvalue}{#2}% + }% + {#2}% }% {#2}% }% - {#2}% } % \end{macrocode} %\end{macro} @@ -2426,6 +2504,22 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrfieldformatlist} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrfieldformatlist}[2]{% + \begingroup + \def\@dtl@formatlist@itemsep{}% + \def\@dtl@formatlist@lastitem{}% + \def\@dtl@formatlist@prelastitem{}% + \def\@dtl@formatlist@prelastitemsep{}% + \forlistcsloop{\@dtl@formatlist@handler}{glo@\glsdetoklabel{#1}@#2}% + \@dtl@formatlist@prelastitem\@dtl@formatlist@lastitem + \endgroup +} +% \end{macrocode} +%\end{macro} +% %List element tests: %\begin{macro}{\glsxtrfieldifinlist} %\changes{1.12}{2017-02-03}{new} @@ -2465,6 +2559,62 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrfieldformatcsvlist} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\glsxtrfieldformatcsvlist}[2]{% + \@glsxtrifhasfield{#2}{#1}% + {\@dtlformatlist\glscurrentfieldvalue}% + {}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\GlsXtrIfFieldValueInCsvList} +%\changes{1.42}{2020-02-03}{new} +%\begin{definition} +%\cs{GlsXtrIfFieldValueInCsvList}\marg{label}\marg{field}\marg{list}\marg{true}\marg{false} +%\end{definition} +% \begin{macrocode} +\newcommand*{\GlsXtrIfFieldValueInCsvList}{% + \@ifstar\s@GlsXtrIfFieldValueInCsvList\@GlsXtrIfFieldValueInCsvList +} +% \end{macrocode} +%\end{macro} +% +%Note \cs{DTLifinlist} performs one level on the list but not the +%element. +%\begin{macro}{\@GlsXtrIfFieldValueInCsvList} +%\changes{1.42}{2020-02-03}{new} +%Unstarred version. +% \begin{macrocode} +\newcommand*{\@GlsXtrIfFieldValueInCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% + {#3}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\s@GlsXtrIfFieldValueInCsvList} +%\changes{1.42}{2020-02-03}{new} +%Starred version. +% \begin{macrocode} +\newcommand*{\s@GlsXtrIfFieldValueInCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% + {#3}{#4}{#5}% + }% + {#5}% +} +% \end{macrocode} +%\end{macro} +% +% %\begin{macro}{\glsxtrifhasfield} %\changes{1.19}{2017-09-09}{new} %A simpler alternative to \cs{ifglshasfield} that doesn't complain @@ -3119,6 +3269,30 @@ Dickimaw Books\\ % Some of the commands provided by \styfmt{glossaries} are modified % to take into account new options or to change default behaviour. % +% The original \cs{@gls@entry@field} causes a problem for undefined +% entries when used in section headings or captions. Since entries +% must be defined with just the base package this isn't a +% significant issue, but it will cause a problem with \gls{bib2gls} +% where no entries are defined on the first \LaTeX\ call, so +% redefine \cs{@gls@entry@field} to use \cs{csuse} instead of +% \cs{csname}. +%\begin{macro}{\@gls@entry@field} +%\changes{1.42}{2020-02-03}{redefined} +%\begin{definition} +%\cs{@gls@entry@field}\marg{label}\marg{field} +%\end{definition} +%This command was introduced to \sty{glossaries} version 4.03 but +%older versions are likely to be incompatible with +%\sty{glossaries-extra}. +% \begin{macrocode} +\ifdef\@gls@entry@field +{ + \renewcommand*{\@gls@entry@field}[2]{\csuse{glo@\glsdetoklabel{#1}@#2}} +} +{} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\ifglsused} %\begin{definition} %\cs{ifglsused}\marg{label}\marg{true part}\marg{false part} @@ -3581,29 +3755,38 @@ Dickimaw Books\\ %\changes{1.21}{2017-11-03}{new} %\changes{1.22}{2017-11-08}{switched check from regular to short} %\changes{1.37}{2018-11-30}{removed reference to \cs{glslabel}} +%\changes{1.42}{2020-02-03}{switched to using \cs{glsfmttext} and +%\cs{glsfmtname}} %\styfmt{glossaries} originally defined \cs{glsseeitemformat} %to use \cs{glsentryname} but in v3.0 this was switched to %use \cs{glsentrytext} due to problems occurring with the %\gloskey{name} field being sanitized. Since this is no longer a -%problem, \styfmt{glossaries-extra} restores the original +%problem, \styfmt{glossaries-extra} restored the original %definition as it makes more sense to use the \gloskey{name} -%in the cross-reference list. This still uses \cs{glsaccesstext} -%for abbreviations. +%in the cross-reference list. Unfortunately this doesn't take style +%changes into account, so as from v1.42, this now uses +%\cs{glsfmttext} and \cs{glsfmtname} instead. (The \gloskey{text} +%field is chosen rather than the \gloskey{short} field to allow for +%the \qt{noshort} styles.) % \begin{macrocode} \renewcommand*{\glsseeitemformat}[1]{% - \ifglshasshort{#1}{\glsaccesstext{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% } % \end{macrocode} %\end{macro} % %\begin{macro}{\glsxtrhiername} %\changes{1.37}{2018-11-30}{new} +%\changes{1.42}{2020-02-03}{switched to using \cs{glsfmttext} and +%\cs{glsfmtname}} %\begin{definition} %\cs{glsxtrhiername}\marg{label} %\end{definition} %Displays the hierarchical name for the given entry. The %cross-reference format \cs{glsseeitemformat} may be redefined to -%use this command to show the hierarchy, if required. +%use this command to show the hierarchy, if required. This now uses +%\cs{glsfmttext} and \cs{glsfmtname} instead of \cs{glsaccessshort} +%and \cs{glsaccessname} to allow for style formatting. % \begin{macrocode} \newcommand*{\glsxtrhiername}[1]{% \glsdoifexists{#1}% @@ -3611,7 +3794,7 @@ Dickimaw Books\\ \glsxtrifhasfield{parent}{#1}% {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% - \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% } % \end{macrocode} @@ -3619,6 +3802,8 @@ Dickimaw Books\\ % %\begin{macro}{\Glsxtrhiername} %\changes{1.37}{2018-11-30}{new} +%\changes{1.42}{2020-02-03}{switched to using \cs{glsfmttext} and +%\cs{glsfmtname}} %\begin{definition} %\cs{Glsxtrhiername}\marg{label} %\end{definition} @@ -3630,9 +3815,9 @@ Dickimaw Books\\ \glsxtrifhasfield{parent}{#1}% {% \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep - \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% - {\ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}}% + {\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}% }% } % \end{macrocode} @@ -3640,10 +3825,14 @@ Dickimaw Books\\ % %\begin{macro}{\GlsXtrhiername} %\changes{1.37}{2018-11-30}{new} +%\changes{1.42}{2020-02-03}{switched to using \cs{Glsfmttext} and +%\cs{Glsfmtname}} %\begin{definition} %\cs{GlsXtrhiername}\marg{label} %\end{definition} %As above but converts the first letter of each name to a capital. +%(Note that this isn't applying title case, just capitalising the +%start of each hierarchical element.) % \begin{macrocode} \newcommand*{\GlsXtrhiername}[1]{% \glsdoifexists{#1}% @@ -3651,7 +3840,7 @@ Dickimaw Books\\ \glsxtrifhasfield{parent}{#1}% {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% - \ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}% + \ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}% }% } % \end{macrocode} @@ -3659,6 +3848,8 @@ Dickimaw Books\\ % %\begin{macro}{\GLSxtrhiername} %\changes{1.37}{2018-11-30}{new} +%\changes{1.42}{2020-02-03}{switched to using \cs{glsfmttext}, +%\cs{glsfmtname}, \cs{GLSfmttext} and \cs{GLSfmtname}} %\begin{definition} %\cs{GLSxtrhiername}\marg{label} %\end{definition} @@ -3670,9 +3861,9 @@ Dickimaw Books\\ \glsxtrifhasfield{parent}{#1}% {% \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep - \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% - {\ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}}% + {\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}% }% } % \end{macrocode} @@ -3680,6 +3871,8 @@ Dickimaw Books\\ % %\begin{macro}{\GLSXTRhiername} %\changes{1.37}{2018-11-30}{new} +%\changes{1.42}{2020-02-03}{switched to using \cs{GLSfmttext} and +%\cs{GLSfmtname}} %\begin{definition} %\cs{GLSXTRhiername}\marg{label} %\end{definition} @@ -3691,7 +3884,7 @@ Dickimaw Books\\ \glsxtrifhasfield{parent}{#1}% {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {} - \ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}% + \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}% }% } % \end{macrocode} @@ -3724,6 +3917,30 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrusealias} +%\changes{1.42}{2020-02-03}{new} +%Apply \cs{glsseeformat} to the \gloskey{alias} key if not empty. +%There's no optional tag to worry about here. The value also isn't a +%comma-separated list, but use the same interface. +% \begin{macrocode} +\newcommand*{\glsxtrusealias}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}% + \ifdefempty\@glo@see + {}% + {% +% \end{macrocode} +%Expansion isn't necessary because the value is a single label not a +%list. +% \begin{macrocode} + \glsxtruseseeformat{\seename}{\@glo@see}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtruseseealsoformat} %\changes{1.16}{2017-06-15}{new} %The format used by \cs{glsxtruseseealso}. The argument is the comma-separated @@ -3749,10 +3966,13 @@ Dickimaw Books\\ % %\begin{macro}{\seealsoname} %\changes{1.16}{2017-06-15}{new} -%In case this command hasn't been defined. (Should be provided by -%language packages.) +%\changes{1.42}{2020-02-03}{add check for \cs{alsoname}} +%In case this command hasn't been defined. Languages packages +%actually provide \ics{alsoname} so use that if it's defined. % \begin{macrocode} -\providecommand{\seealsoname}{see also} +\ifdef\alsoname +{\providecommand{\seealsoname}{\alsoname}} +{\providecommand{\seealsoname}{see also}} % \end{macrocode} %\end{macro} % @@ -4102,9 +4322,12 @@ Dickimaw Books\\ %sets \pkgopt[false]{docdef} (unless the restricted setting is on) %and disables the \pkgopt{docdef} key. %This command isn't allowed with the \pkgopt{record} option. +%\changes{1.42}{2020-02-03}{added \cs{@domakeglossaries}} % \begin{macrocode} \let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries \renewcommand{\makenoidxglossaries}{% + \@domakeglossaries + {% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off {% \glsxtr@orgmakenoidxglossaries @@ -4157,6 +4380,7 @@ Dickimaw Books\\ {You may only use \string\makenoidxglossaries\ space with the record=off option}% }% + }% } % \end{macrocode} %\end{macro} @@ -6028,13 +6252,36 @@ Dickimaw Books\\ %\end{macro} % %Commands like \cs{acrshort} already set \cs{glsifplural}, but they -%don't set \cs{glsxtrifwasfirstuse} so they need adjusting. +%don't set \cs{glsxtrifwasfirstuse} so they need adjusting. These +%commands shouldn't be used with \cs{newabbreviation}, but the +%redefinitions below allow for users reverting \cs{newacronym} back +%to its base definition. +% +%\begin{macro}{\@@glsxtr@base@acrcmd@warn} +% Warn user that they need to use to new abbreviation commands. +% \begin{macrocode} +\newcommand*{\@@glsxtr@base@acrcmd@warn}[2]{% + \GlossariesExtraWarning{Base acronym command \string#1\space + should not be used with new abbreviation definitions. Use + \string#2\space instead}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@base@acrcmd} +%\changes{1.42}{2020-02-03}{new} +% Warn user that they need to use to new abbreviation commands. +% \begin{macrocode} +\let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn +% \end{macrocode} +%\end{macro} % %\begin{macro}{\@acrshort} %\changes{0.3}{2015-12-02}{added redefinition} % No case change. % \begin{macrocode} \def\@acrshort#1#2[#3]{% + \@glsxtr@base@acrcmd\acrshort\glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6057,6 +6304,7 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrshort#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrshort\Glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6079,6 +6327,7 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRshort#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRshort\GLSxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6101,6 +6350,7 @@ Dickimaw Books\\ % No case change. % \begin{macrocode} \def\@acrshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6123,6 +6373,7 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6145,6 +6396,7 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6167,6 +6419,7 @@ Dickimaw Books\\ % No case change. % \begin{macrocode} \def\@acrlong#1#2[#3]{% + \@glsxtr@base@acrcmd\acrlong\glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6189,6 +6442,7 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrlong#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrlong\Glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6211,6 +6465,7 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRlong#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRlong\GLSxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6233,6 +6488,7 @@ Dickimaw Books\\ % No case change. % \begin{macrocode} \def\@acrlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6255,6 +6511,7 @@ Dickimaw Books\\ % First letter uppercase. % \begin{macrocode} \def\@Acrlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6277,6 +6534,7 @@ Dickimaw Books\\ % All uppercase. % \begin{macrocode} \def\@ACRlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -6294,6 +6552,73 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%The full formats use the internal long and short commands (such as +%\cs{@acrshort} and \cs{@acrlong}). Therefore they don't need +%adjustments, but they do need clearer warnings. This means three +%warnings per use (once for the full command and once each for the +%short and long commands), but at least this way the most important +%warning (replace \cs{acrfull} with \cs{glsxtrfull} etc) is present. +% +%\begin{macro}{\@acrfull} +%\changes{1.42}{2020-02-03}{added redefinition} +% \begin{macrocode} +\def\@acrfull#1#2[#3]{% + \@glsxtr@base@acrcmd\acrfull\glsxtrfull + \acrfullfmt{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Acrfull} +%\changes{1.42}{2020-02-03}{added redefinition} +% \begin{macrocode} +\def\@Acrfull#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrfull\Glsxtrfull + \Acrfullfmt{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ACRfull} +%\changes{1.42}{2020-02-03}{added redefinition} +% \begin{macrocode} +\def\@ACRfull#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRfull\GLSxtrfull + \ACRfullfmt{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@acrfullpl} +%\changes{1.42}{2020-02-03}{added redefinition} +% \begin{macrocode} +\def\@acrfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl + \acrfullplfmt{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@Acrfullpl} +%\changes{1.42}{2020-02-03}{added redefinition} +% \begin{macrocode} +\def\@Acrfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl + \Acrfullplfmt{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@ACRfullpl} +%\changes{1.42}{2020-02-03}{added redefinition} +% \begin{macrocode} +\def\@ACRfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl + \ACRfullplfmt{#1}{#2}{#3}% +} +% \end{macrocode} +%\end{macro} +% %Modify \cs{@glsaddkey} so additional keys provided by the user can %be treated in a similar way. %\begin{macro}{\@glsaddkey} @@ -6691,6 +7016,19 @@ Dickimaw Books\\ % \begin{macrocode} \newcommand*{\GlsXtrSetAltModifier}[2]{% \let\@gls@hyp@opt\@gls@alt@hyp@opt +% \end{macrocode} +%\changes{1.42}{2020-02-03}{added check} +%Check that the supplied character isn't "+" or "*" +% \begin{macrocode} + \ifstrequal{#1}{+}% + {\PackageError{glossaries-extra}% + {Can't use '#1' as modifier (it's already in use)}{}}% + {% + \ifstrequal{#1}{*}% + {\PackageError{glossaries-extra}% + {Can't use '#1' as modifier (it's already in use)}{}}% + {}% + }% \def\@gls@alt@hyp@opt@char{#1}% \def\@gls@alt@hyp@opt@keys{#2}% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off @@ -6716,11 +7054,10 @@ Dickimaw Books\\ % %\begin{macro}{\glsnavhyperlink} %\changes{1.21}{2017-11-03}{patched} -%Now that \cs{glsdohyperlink} (used by \cs{@glslink}) references -%\cs{glslabel} it's necessary to patch \cs{glsnavhyperlink} to -%avoid using it (since \cs{glslabel} won't be defined). This means -%temporarily redefining \cs{glsdohyperlink} to its original -%definition. +%Since \ics{glsnavhyperlink} uses \cs{@glslink}, it's necessary to +%patch it uses \cs{glsdohyperlink} instead of \cs{glsxtrdohyperlink}. +%The simplest way to achieve this is to locally let +%\cs{glsxtrdohyperlink} to \cs{glsdohyperlink}. % %This command is provided by \sty{glossary-hypernav} so it may not %exist. @@ -6733,7 +7070,7 @@ Dickimaw Books\\ %Scope: % \begin{macrocode} {% - \let\glsdohyperlink\glsxtr@org@dohyperlink + \let\glsxtrdohyperlink\glsxtr@org@dohyperlink \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}% }% }% @@ -6742,7 +7079,11 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % -%\begin{macro}{\glsdohyperlink} +% +%The redefinition of \cs{glsdohyperlink} has been causing problems +%so introduce a new command instead. +% +%\begin{macro}{\glsxtrdohyperlink} % Unpleasant complications can occur if the \gloskey{text} or % \gloskey{first} key etc contains \cs{gls}, particularly if there % are hyperlinks. To get around this problem, patch @@ -6755,8 +7096,10 @@ Dickimaw Books\\ % long form commands like \cs{acrlong} and \cs{glsxtrlong} to use % \cs{glsentrylong}. Added attribute check. %\changes{0.5.4}{2015-12-15}{added} +%\changes{1.42}{2020-02-03}{new (was former redefinition of +%\cs{glsdohyperlink})} % \begin{macrocode} -\renewcommand*{\glsdohyperlink}[2]{% +\newcommand*{\glsxtrdohyperlink}[2]{% \glshasattribute{\glslabel}{targeturl}% {% \glshasattribute{\glslabel}{targetname}% @@ -6860,10 +7203,12 @@ Dickimaw Books\\ %\changes{1.21}{2017-11-03}{changed to use \cs{def} rather than \cs{let}} %This now uses \cs{def} rather than \cs{let} to allow for %redefinitions of \cs{glsdohypertarget} and \cs{glsdohyperlink}. +%\changes{1.42}{2020-02-03}{switched from \cs{glsdohyperlink} to +%\cs{glsxtrdohyperlink}} % \begin{macrocode} \renewcommand{\glsenablehyper}{% \KV@glslink@hypertrue - \def\@glslink{\glsdohyperlink}% + \def\@glslink{\glsxtrdohyperlink}% \def\@glstarget{\glsdohypertarget}% } % \end{macrocode} @@ -6885,13 +7230,15 @@ Dickimaw Books\\ %\begin{macro}{\@glslink} % Reset \cs{@glslink} with patched versions: %\changes{1.21}{2017-11-03}{changed \cs{let} to \cs{def}} +%\changes{1.42}{2020-02-03}{switched from \cs{glsdohyperlink} to +%\cs{glsxtrdohyperlink}} % \begin{macrocode} \ifcsundef{hyperlink}% {% \def\@glslink{\glsdonohyperlink} }% {% - \def\@glslink{\glsdohyperlink} + \def\@glslink{\glsxtrdohyperlink} } % \end{macrocode} %\end{macro} @@ -7636,6 +7983,17 @@ Dickimaw Books\\ % \end{macrocode} %\end{macro} % +%\begin{macro}{\GlsXtrDiscardUnsetBuffering} +%\changes{1.42}{2020-02-03}{new} +%Discards pending buffer and restores \cs{glsunset}. +% \begin{macrocode} +\newcommand*{\GlsXtrDiscardUnsetBuffering}{% + \let\@glsunset\@glsxtr@unset + \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\GlsXtrForUnsetBufferedList} %\changes{1.31}{2018-05-09}{new} %Iterate over labels stored in the current buffer. @@ -8548,7 +8906,20 @@ Dickimaw Books\\ %\begin{macro}{\SetGenericNewAcronym} % \begin{macrocode} \renewcommand*{\SetGenericNewAcronym}{% +% \end{macrocode} +% Make sure \cs{RestoreAcronyms} has been used. +% \begin{macrocode} + \ifdefequal\@addtoacronymlists\@glsxtr@org@addtoacronynlists + {}% + {% + \GlossariesWarning{\string\SetGenericNewAcronym\space used + without restoring base acronym functions with + \string\RestoreAcronyms}% + }% \let\@Gls@entryname\@Gls@acrentryname +% \end{macrocode} +%Redefine \cs{newacronym}: +% \begin{macrocode} \renewcommand{\newacronym}[4][]{% \ifdefempty{\@glsacronymlists}% {% @@ -8612,6 +8983,75 @@ Dickimaw Books\\ \let\@glsxtr@org@newacronymstyle\newacronymstyle % \end{macrocode} % +%Save the list of acronyms in case they are required. +%\begin{macro}{\@glsxtr@acronymlists} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\let\@glsxtr@acronymlists\@glsacronymlists +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@org@addtoacronynlists} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\let\@glsxtr@org@addtoacronynlists\@addtoacronymlists +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@glsxtr@org@setacronymlists} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\let\@glsxtr@org@setacronymlists\SetAcronymLists +% \end{macrocode} +%\end{macro} +% +%Need to provide a replacement for \ics{forallacronyms} since +%\cs{@glsacronymlists} isn't available. +% +%\begin{macro}{\@glsxtr@abbrlists} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand{\@glsxtr@abbrlists}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\forallabbreviationlists} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\forallabbreviationlists}[2]{% + \@for#1:=\@glsxtr@abbrlists\do{\ifdefempty{#1}{}{#2}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glsxtr@addabbreviationlist} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\@glsxtr@addabbreviationlist}[1]{% + \edef\@glo@type{#1}% + \ifdefempty\@glsxtr@abbrlists + {\let\@glsxtr@abbrlists\@glo@type}% + {% + \ifdefequal\@glsxtr@abbrlists\@glo@type + {}% + {% + \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@abbrlists}{}% + {\eappto\@glsxtr@abbrlists{,\@glo@type}}% + }% + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\forallacronyms} +%\changes{1.42}{2020-02-03}{new} +%Modify to add warning. +% \begin{macrocode} +\renewcommand*{\forallacronyms}[2]{% + \@glsxtr@base@acrcmd\forallacronyms\forallabbreviationlists + \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\MakeAcronymsAbbreviations} % Make acronyms use the same interface as abbreviations. % Note that \cs{newacronymstyle} has a different implementation to @@ -8621,6 +9061,27 @@ Dickimaw Books\\ %\changes{0.5.4}{2015-12-15}{now disables \cs{setacronymstyle}} % \begin{macrocode} \newcommand*{\MakeAcronymsAbbreviations}{% +% \end{macrocode} +%Undo acronym display style: +% \begin{macrocode} + \@for\@gls@type:=\@glsacronymlists\do{% + \csgdef{gls@\@gls@type @entryfmt}{\glsentryfmt}% + }% +% \end{macrocode} +% Save and clear acronym list. +% \begin{macrocode} + \let\@glsxtr@acronymlists\@glsacronymlists + \let\@glsacronymlists\@empty + \let\@addtoacronymlists\@gobble + \let\SetAcronymLists\@gobble +% \end{macrocode} +% Warn if \cs{acrshort} etc are used. +% \begin{macrocode} + \let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn +% \end{macrocode} +% Redefine \cs{newacronym} to use same interface as +% \cs{newabbreviation}. +% \begin{macrocode} \renewcommand*{\newacronym}[4][]{% \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}% }% @@ -8629,7 +9090,7 @@ Dickimaw Books\\ \renewcommand*{\setacronymstyle}[1]{% \PackageError{glossaries-extra}{\string\setacronymstyle{##1} unavailable. - Use \string\setabbreviationstyle\space instead. + Use \string\setabbreviationstyle[acronym]\space instead. The original acronym interface can be restored with \string\RestoreAcronyms}{}% }% @@ -8652,6 +9113,26 @@ Dickimaw Books\\ % Restore acronyms to \styfmt{glossaries} interface. % \begin{macrocode} \newcommand*{\RestoreAcronyms}{% +% \end{macrocode} +% Restore acronym list. +% \begin{macrocode} + \let\@glsacronymlists\@glsxtr@acronymlists + \let\@addtoacronymlists\@glsxtr@org@addtoacronynlists + \let\SetAcronymLists\@glsxtr@org@setacronymlists +% \end{macrocode} +% Suppress warnings if \cs{acrshort} etc are used. +% \begin{macrocode} + \let\@glsxtr@base@acrcmd\@gobbletwo +% \end{macrocode} +%Restore acronym display style: +%\changes{1.42}{2020-02-03}{added display style} +% \begin{macrocode} + \@for\@gls@type:=\@glsacronymlists\do{% + \SetDefaultAcronymDisplayStyle{\@gls@type}% + }% +% \end{macrocode} +%Switch to the generic acronym mechanism. +% \begin{macrocode} \SetGenericNewAcronym \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}% \renewcommand{\acronymfont}[1]{##1}% @@ -8713,6 +9194,16 @@ Dickimaw Books\\ \let\@glsxtr@org@makeglossaries\makeglossaries % \end{macrocode} % +%\begin{macro}{\@domakeglossaries} +%\changes{1.42}{2020-02-03}{provided definition for \cs{@domakeglossaries}} +% \sty{glossaries} v4.45 introduced \cs{@domakeglossaries} to +% provide a way of disabling \cs{makeglossaries}. If it hasn't been +% defined, define here to do its argument: +% \begin{macrocode} +\providecommand{\@domakeglossaries}[1]{#1} +% \end{macrocode} +%\end{macro} +% % Redefine \cs{makeglossaries} to take an optional argument. % This should be empty for the usual behaviour (all glossaries % need processing with an indexing application) or a comma-separated @@ -8721,211 +9212,221 @@ Dickimaw Books\\ % version shouldn't be used with \pkgopt{record}. %\begin{macro}{\makeglossaries} %\changes{1.0}{2016-01-24}{new} +%\changes{1.42}{2020-02-03}{added \cs{@domakeglossaries}} % \begin{macrocode} \renewcommand*{\makeglossaries}[1][]{% - \@glsxtr@if@record@only - {% - \PackageError{glossaries-extra}{\string\makeglossaries\space - not permitted\MessageBreak with record=\@glsxtr@record@setting\space - package option}% - {You may only use \string\makeglossaries\space with - record=off or record=alsoindex options}% - }% + \@domakeglossaries {% - \ifblank{#1}% - {\@glsxtr@org@makeglossaries}% + \@glsxtr@if@record@only {% - \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex - \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space - not permitted\MessageBreak with record=alsoindex package option}% - {You may only use the hybrid \string\makeglossaries[...]\space with - record=off option}% - \else -% \end{macrocode} -%\cs{@gls@@automake@immediate} was introduced to \sty{glossaries} -%v4.42 so it may not be defined. + \PackageError{glossaries-extra}{\string\makeglossaries\space + not permitted\MessageBreak with record=\@glsxtr@record@setting\space + package option}% + {You may only use \string\makeglossaries\space with + record=off or record=alsoindex options}% + }% + {% + \ifblank{#1}% + {\@glsxtr@org@makeglossaries}% + {% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space + not permitted\MessageBreak with record=alsoindex package option}% + {You may only use the hybrid \string\makeglossaries[...]\space with + record=off option}% + \else +% \end{macrocode} +%\cs{@gls@@automake@immediate} was introduced to \sty{glossaries} +%v4.42 so it may not be defined. % \begin{macrocode} - \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% - \edef\@glsxtr@reg@glosslist{#1}% - \ifundef{\glswrite}{\newwrite\glswrite}{}% - \protected@write\@auxout{}{\string\providecommand - \string\@glsorder[1]{}} - \protected@write\@auxout{}{\string\providecommand - \string\@istfilename[1]{}} - \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% - \protected@write\@auxout{}{\string\@glsorder{\glsorder}} - \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} - \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% + \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% + \edef\@glsxtr@reg@glosslist{#1}% + \ifundef{\glswrite}{\newwrite\glswrite}{}% + \protected@write\@auxout{}{\string\providecommand + \string\@glsorder[1]{}} + \protected@write\@auxout{}{\string\providecommand + \string\@istfilename[1]{}} + \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% + \protected@write\@auxout{}{\string\@glsorder{\glsorder}} + \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} + \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% % \end{macrocode} % Iterate through each supplied glossary type and activate it. % \begin{macrocode} - \@for\@glo@type:=#1\do{% - \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% - }% + \@for\@glo@type:=#1\do{% + \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% + }% % \end{macrocode} % New glossaries must be created before \cs{makeglossaries}: % \begin{macrocode} - \renewcommand*\newglossary[4][]{% - \PackageError{glossaries}{New glossaries - must be created before \string\makeglossaries}{You need - to move \string\makeglossaries\space after all your - \string\newglossary\space commands}}% + \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. +%\changes{1.42}{2020-02-03}{let \cs{@makeglossary} to \cs{@gobble} +%instead of \cs{relax}} +% \begin{macrocode} + \let\@makeglossary\@gobble % \end{macrocode} -% Any subsequence instances of this command should have no effect +%\changes{1.42}{2020-02-03}{removed redefinition of \cs{makeglossary}} +%Version 1.42 removed letting \cs{makeglossary} to \cs{relax} +%(no kernel redefs may be in effect). % \begin{macrocode} - \let\@makeglossary\relax - \let\makeglossary\relax - \renewcommand\makeglossaries[1][]{}% + \renewcommand\makeglossaries[1][]{}% % \end{macrocode} % Disable all commands that have no effect after \cs{makeglossaries} % \begin{macrocode} - \@disable@onlypremakeg + \@disable@onlypremakeg % \end{macrocode} % Allow \gloskey{see} key: % \begin{macrocode} - \let\gls@checkseeallowed\relax + \let\gls@checkseeallowed\relax % \end{macrocode} %Adjust \cs{@do@seeglossary}. This needs to check for the entry's %existence but don't increment associated counter. % \begin{macrocode} - \renewcommand*{\@do@seeglossary}[2]{% - \glsdoifexists{##1}% - {% - \edef\@gls@label{\glsdetoklabel{##1}}% - \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {\@glsxtr@org@doseeglossary{##1}{##2}}% + \renewcommand*{\@do@seeglossary}[2]{% + \glsdoifexists{##1}% {% - \@@glsxtrwrglossmark - \protected@write\@auxout{}{% - \string\@gls@reference - {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + \edef\@gls@label{\glsdetoklabel{##1}}% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@org@doseeglossary{##1}{##2}}% + {% + \@@glsxtrwrglossmark + \protected@write\@auxout{}{% + \string\@gls@reference + {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + }% }% }% }% - }% % \end{macrocode} % Adjust \cs{@@do@@wrglossary} % \begin{macrocode} - \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary - \def\@@do@@wrglossary{% - \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {\@glsxtr@@do@@wrglossary}% - {\gls@noidxglossary}% - }% + \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary + \def\@@do@@wrglossary{% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@@do@@wrglossary}% + {\gls@noidxglossary}% + }% % \end{macrocode} % Suppress warning about no \cs{makeglossaries} % \begin{macrocode} - \let\warn@nomakeglossaries\relax - \def\warn@noprintglossary{% - \GlossariesWarningNoLine{No \string\printglossary\space - or \string\printglossaries\space - found.^^J(Remove \string\makeglossaries\space if you don't want - any glossaries.)^^JThis document will not have a glossary}% - }% + \let\warn@nomakeglossaries\relax + \def\warn@noprintglossary{% + \GlossariesWarningNoLine{No \string\printglossary\space + or \string\printglossaries\space + found.^^J(Remove \string\makeglossaries\space if you don't want + any glossaries.)^^JThis document will not have a glossary}% + }% % \end{macrocode} % Only warn for glossaries not listed. % \begin{macrocode} - \renewcommand{\@gls@noref@warn}[1]{% - \edef\@gls@type{##1}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {% - \GlossariesExtraWarning{Can't use - \string\printnoidxglossary[type={\@gls@type}] - when `\@gls@type' is listed in the optional argument of - \string\makeglossaries}% - }% - {% - \GlossariesWarning{Empty glossary for - \string\printnoidxglossary[type={##1}]. - Rerun may be required (or you may have forgotten to use - commands like \string\gls)}% + \renewcommand{\@gls@noref@warn}[1]{% + \edef\@gls@type{##1}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {% + \GlossariesExtraWarning{Can't use + \string\printnoidxglossary[type={\@gls@type}] + when `\@gls@type' is listed in the optional argument of + \string\makeglossaries}% + }% + {% + \GlossariesWarning{Empty glossary for + \string\printnoidxglossary[type={##1}]. + Rerun may be required (or you may have forgotten to use + commands like \string\gls)}% + }% }% - }% % \end{macrocode} % Adjust display number list to check for type: % \begin{macrocode} - \renewcommand*{\glsdisplaynumberlist}[1]{% - \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% - {\@glsxtr@idx@displaynumberlist{##1}}% - {\@glsxtr@noidx@displaynumberlist{##1}}% - }% + \renewcommand*{\glsdisplaynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@displaynumberlist{##1}}% + {\@glsxtr@noidx@displaynumberlist{##1}}% + }% % \end{macrocode} % Adjust entry list: % \begin{macrocode} - \renewcommand*{\glsentrynumberlist}[1]{% - \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% - {\@glsxtr@idx@entrynumberlist{##1}}% - {\@glsxtr@noidx@entrynumberlist{##1}}% - }% + \renewcommand*{\glsentrynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@entrynumberlist{##1}}% + {\@glsxtr@noidx@entrynumberlist{##1}}% + }% % \end{macrocode} % Adjust number list loop % \begin{macrocode} - \renewcommand*{\glsnumberlistloop}[2]{% - \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% - {% - \PackageError{glossaries-extra}{\string\glsnumberlistloop\space - not available for glossary `##1'}{}% + \renewcommand*{\glsnumberlistloop}[2]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {% + \PackageError{glossaries-extra}{\string\glsnumberlistloop\space + not available for glossary `##1'}{}% + }% + {\@glsxtr@noidx@numberlistloop{##1}{##2}}% }% - {\@glsxtr@noidx@numberlistloop{##1}{##2}}% - }% % \end{macrocode} % Only sanitize sort for normal indexing glossaries. % \begin{macrocode} - \renewcommand*{\glsprestandardsort}[3]{% - \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% - {% - \glsdosanitizesort - }% - {% - \ifglssanitizesort - \@gls@noidx@sanitizesort - \else - \@gls@noidx@nosanitizesort - \fi + \renewcommand*{\glsprestandardsort}[3]{% + \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% + {% + \glsdosanitizesort + }% + {% + \ifglssanitizesort + \@gls@noidx@sanitizesort + \else + \@gls@noidx@nosanitizesort + \fi + }% }% - }% % \end{macrocode} % Unlike \cs{makenoidxglossaries} we can't automatically set % sanitizesort=false. All entries must be defined in the preamble. % \begin{macrocode} - \renewcommand*\new@glossaryentry[2]{% - \PackageError{glossaries-extra}{Glossary entries must be defined - in the preamble\MessageBreak when you use the optional argument - of \string\makeglossaries}{Either move your definitions to the - preamble or don't use the optional argument of - \string\makeglossaries}% - }% + \renewcommand*\new@glossaryentry[2]{% + \PackageError{glossaries-extra}{Glossary entries must be defined + in the preamble\MessageBreak when you use the optional argument + of \string\makeglossaries}{Either move your definitions to the + preamble or don't use the optional argument of + \string\makeglossaries}% + }% % \end{macrocode} % Only activate sort key for glossaries that aren't listed in % \verb|#1| (glossary label is stored in \cs{@glo@type} but this % defaults to \cs{glsdefaulttype} so some expansion is required). % \begin{macrocode} - \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey - \renewcommand*{\@printgloss@setsort}{% + \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey + \renewcommand*{\@printgloss@setsort}{% % \end{macrocode} % Need to extract just the \gloskey[printglossary]{type} value. % \begin{macrocode} - \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% - type=\glsdefaulttype,\@end@glsxtr@gettype - \def\@glo@sorttype{\@glo@default@sorttype}% - }% + \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% + type=\glsdefaulttype,\@end@glsxtr@gettype + \def\@glo@sorttype{\@glo@default@sorttype}% + }% % \end{macrocode} % Check \pkgopt{automake} setting: % \begin{macrocode} - \ifglsautomake - \renewcommand*{\@gls@doautomake}{% - \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% - \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% + \ifglsautomake + \renewcommand*{\@gls@doautomake}{% + \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% + \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% + }% }% - }% - \fi + \fi % \end{macrocode} % Check the sort setting (\sty{glossaries} v4.30 onwards): % \begin{macrocode} - \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% - \fi + \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% + \fi + }% }% }% } @@ -10198,6 +10699,19 @@ Dickimaw Books\\ \let\@gls@doautomake\relax \fi \fi +% \end{macrocode} +% Check if \pkgopt[letter]{order} has been used by mistake (but not +% if \pkgopt[alsoindex]{record} has been used). +%\changes{1.42}{2020-02-03}{added check for order\protect\dequals letter} +% \begin{macrocode} + \@glsxtr@if@record@only + {\ifdefstring{\glsorder}{letter}% + {\GlossariesExtraWarningNoLine{Package option `order=letter' isn't + supported with `record=\@glsxtr@record@setting'. Use `break-at=none' + resource option instead}}% + {}% + }% + {}% } % \end{macrocode} %\end{macro} @@ -12079,12 +12593,24 @@ defined}{}% } % \end{macrocode} % +% \begin{macrocode} + \define@key{glsxtrabbrv}{pluralaccess}{% + \def\@gls@pluralaccess{#1}% + } +% \end{macrocode} +% % \begin{macrocode} \define@key{glsxtrabbrv}{firstaccess}{% \def\@gls@firstaccess{#1}% } % \end{macrocode} % +% \begin{macrocode} + \define@key{glsxtrabbrv}{firstpluralaccess}{% + \def\@gls@firstpluralaccess{#1}% + } +% \end{macrocode} +% % \begin{macrocode} \define@key{glsxtrabbrv}{shortaccess}{% \def\@gls@shortaccess{#1}% @@ -12096,15 +12622,31 @@ defined}{}% \def\@gls@shortaccesspl{#1}% } % \end{macrocode} +% +% \begin{macrocode} + \define@key{glsxtrabbrv}{longaccess}{% + \def\@gls@longaccess{#1}% + } +% \end{macrocode} +% +% \begin{macrocode} + \define@key{glsxtrabbrv}{shortlonglaccess}{% + \def\@gls@longaccesspl{#1}% + } +% \end{macrocode} %\begin{macro}{\@gls@initaccesskeys} %\changes{1.31}{2018-05-09}{new} % \begin{macrocode} \newcommand*{\@gls@initaccesskeys}{% \def\@gls@nameaccess{}% \def\@gls@textaccess{}% + \def\@gls@pluralaccess{}% \def\@gls@firstaccess{}% + \def\@gls@firstpluralaccess{}% \def\@gls@shortaccess{}% \def\@gls@shortaccesspl{}% + \def\@gls@longaccess{}% + \def\@gls@longaccesspl{}% } % \end{macrocode} %\end{macro} @@ -12131,40 +12673,124 @@ defined}{}% % \end{macrocode} %\end{macro} % +%As from \sty{glossaries} v4.45, the replacement text support has +%been corrected so that the accessibility support for abbreviations +%use the \qt{E} (expanded value) element. This should actually +%contain the long form since it's supposed to explain the +%abbreviation. This is a bit redundant on first use for styles like +%\abbrstyle{long-short}. +% +%\begin{macro}{\glsdefaultshortaccess} +%\changes{1.42}{2020-02-03}{new} +%\begin{definition} +%\cs{glsdefaultshortaccess}\marg{long}\marg{short} +%\end{definition} +%This command was only introduced to \sty{glossaries-accsupp} 1.42 +%so it may not be defined. +% \begin{macrocode} + \def\glsdefaultshortaccess#1#2{#1 (#2)} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrassignactualsetup} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} + \newcommand{\glsxtrassignactualsetup}{% + \let\@\empty + \let\emph\@firstofone + \let\textbf\@firstofone + \let\textmd\@firstofone + \let\textit\@firstofone + \let\textsl\@firstofone + \let\textsc\@firstofone + \let\textrm\@firstofone + \let\textsf\@firstofone + \let\texttt\@firstofone + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@gls@assign@actual} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} + \ifdef\pdfstringdef + { + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \pdfstringdef\@gls@actualshort{\glsxtrorgshort}% + \pdfstringdef\@gls@actuallong{\glsxtrorglong}% + \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}% + \pdfstringdef\@gls@actuallongpl{\@gls@longpl}% + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}% + \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}% + \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}% + \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}% + }% + \@gls@tmp + } + } + { + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\glsxtrorgshort}% + \def\noexpand\@gls@actuallong{\glsxtrorglong}% + \def\noexpand\@gls@actualshortpl{\@gls@shortpl}% + \def\noexpand\@gls@actuallongpl{\@gls@longpl}% + }% + \@gls@tmp + } + } +% \end{macrocode} +%\end{macro} %\begin{macro}{\@gls@setup@default@short@access} %\changes{1.31}{2018-05-09}{new} +%\changes{1.42}{2020-02-03}{renamed to \cs{@gls@setup@default@access}} +%Renamed \cs{@gls@setup@default@access} and removed argument since +%it can be obtained from \cs{glsxtrorgshort}. +%\end{macro} +%\begin{macro}{\@gls@setup@default@access} +%\changes{1.42}{2020-02-03}{added \cs{glsdefaultshortaccess}} %Assign the default value of the \gloskey{shortaccess} key. The %argument is the short value passed to \cs{newabbreviation}. +%The \gloskey{shortaccess} value should explain the abbreviation. % \begin{macrocode} - \newcommand{\@gls@setup@default@short@access}[1]{% + \newcommand{\@gls@setup@default@access}{% + \@gls@assign@actual + \ifdefempty\@gls@shortaccess + {% % \end{macrocode} %Check if the \catattr{accessinsertdots} attribute has been set but %only if \gloskey{shortaccess} hasn't been set. % \begin{macrocode} - \ifdefempty\@gls@shortaccess - {% - \glsifcategoryattribute{\glscategorylabel}{accessinsertdots}{true}% + \@gls@ifaccessattribute@set{insertdots}% {% - \@glsxtr@insertdots\@gls@shortaccess{#1}% - \eappto\ExtraCustomAbbreviationFields{% - shortaccess={\expandonce\@gls@shortaccess},}% + \expandafter\@glsxtr@insertdots\expandafter\@gls@actualshort\expandafter + {\@gls@actualshort}% }% {}% - }% - {}% + \ifdefempty\@gls@longaccess + {% + \edef\@gls@shortaccess{\glsdefaultshortaccess + {\expandonce\@gls@actuallong}{\expandonce\@gls@actualshort}}% + }% + {% + \edef\@gls@shortaccess{\glsdefaultshortaccess + {\expandonce\@gls@longaccess}{\expandonce\@gls@actualshort}}% + }% + \eappto\ExtraCustomAbbreviationFields{shortaccess={\@gls@shortaccess},}% % \end{macrocode} -%If the \gloskey{shortaccess} field has been set but -%\gloskey{shortaccessplural} hasn't been set, assign plural form. +%If \gloskey{shortaccessplural} hasn't been set, assign plural form. % \begin{macrocode} - \ifdefempty\@gls@shortaccess - {}% - {% \ifdefempty\@gls@shortaccesspl {% \@gls@ifaccessattribute@set{aposplural}% {% \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% - \@gls@shortaccess'\abbrvpluralsuffix}% + \@gls@actualshort'\glsxtrabbrvpluralsuffix}% }% {% \@gls@ifaccessattribute@set{noshortplural}% @@ -12172,13 +12798,25 @@ defined}{}% \let\@gls@shortaccesspl\@gls@shortaccess }% {% - \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% - \@gls@shortaccess\abbrvpluralsuffix}% + \let\@gls@shortaccesspl\@gls@actualshortpl }% }% - \eappto\ExtraCustomAbbreviationFields{% - shortpluralaccess={\expandonce\@gls@shortaccesspl},}% + \ifdefempty\@gls@longaccesspl + {% + \edef\@gls@shortaccesspl{\glsdefaultshortaccess + {\expandonce\@gls@actuallongpl}{\expandonce\@gls@actualshortpl}}% }% + {% + \edef\@gls@shortaccesspl{\glsdefaultshortaccess + {\expandonce\@gls@longaccesspl}{\expandonce\@gls@actualshort}}% + }% + \eappto\ExtraCustomAbbreviationFields{shortpluralaccess={\@gls@shortaccesspl},}% + }% + {}% + }% + {% + \ifdefempty\@gls@shortaccesspl + {\let\@gls@shortaccesspl\@gls@shortaccess}% {}% }% % \end{macrocode} @@ -12189,16 +12827,7 @@ defined}{}% {% \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}% {% -% \end{macrocode} -%Do nothing if the \gloskey{shortaccess} key hasn't been set. -% \begin{macrocode} - \ifdefempty\@gls@shortaccess - {}% - {% - \eappto\ExtraCustomAbbreviationFields{% - access={\expandonce\@gls@shortaccess},% - }% - }% + \eappto\ExtraCustomAbbreviationFields{access={\@gls@shortaccess},}% }% {}% }% @@ -12211,15 +12840,17 @@ defined}{}% {% \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% {% -% \end{macrocode} -%Do nothing if the \gloskey{shortaccess} key hasn't been set. -% \begin{macrocode} - \ifdefempty\@gls@shortaccess - {}% - {% - \eappto\ExtraCustomAbbreviationFields{% - textaccess={\expandonce\@gls@shortaccess},% - }% + \eappto\ExtraCustomAbbreviationFields{textaccess={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@pluralaccess + {% + \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{% + pluralaccess={\@gls@shortaccesspl},% }% }% {}% @@ -12233,15 +12864,17 @@ defined}{}% {% \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% {% -% \end{macrocode} -%Do nothing if the \gloskey{shortaccess} key hasn't been set. -% \begin{macrocode} - \ifdefempty\@gls@shortaccess - {}% - {% - \eappto\ExtraCustomAbbreviationFields{% - firstaccess={\expandonce\@gls@shortaccess},% - }% + \eappto\ExtraCustomAbbreviationFields{firstaccess={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@firstpluralaccess + {% + \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{% + firstpluralaccess={\@gls@shortaccesspl},% }% }% {}% @@ -12250,6 +12883,100 @@ defined}{}% } % \end{macrocode} %\end{macro} +% +% Provide hooks for \cs{setabbreviationstyle} that automatically set +% the attributes appropriate for the style. +% If the name is just the short form and the +% description contains the long form, then it may not be necessary +% to set \catattr{nameshortaccess} but it would depend on the glossary style. +% +% Need to provide \cs{glsxtr\meta{category}\meta{field}accsupp} if +% not already defined. +%\begin{macro}{\glsxtrprovideaccsuppcmd} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} + \newcommand*{\glsxtrprovideaccsuppcmd}[2]{% + \ifcsundef{glsxtr#1#2accsupp}% + {\csdef{glsxtr#1#2accsupp}{\glsshortaccsupp}}% + {}% + } +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrAccSuppAbbrSetNoLongAttrs} +%\changes{1.42}{2020-02-03}{new} +%For styles where the name, first and text are just the +%abbreviation. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glssetcategoryattribute{#1}{firstshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + \glsxtrprovideaccsuppcmd{#1}{first}% + \glsxtrprovideaccsuppcmd{#1}{firstpl}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetFirstLongAttrs} +%\changes{1.42}{2020-02-03}{new} +%For styles where the name and text are just the +%abbreviation. The first form may just be long or may be short and +%long. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetTextShortAttrs} +%\changes{1.42}{2020-02-03}{new} +%For styles where only the text is just the abbreviation. The name +%and first form may just be long or may be short and +%long. The name may also be short but followed by the long form in +%the description. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetNameShortAttrs} +%\changes{1.42}{2020-02-03}{new} +%For styles where only the name is just the abbreviation. The +%first and subsequent form may just be long or may be short and +%long. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + } +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetNameLongAttrs} +%\changes{1.42}{2020-02-03}{new} +%For styles where the first and text are just the +%abbreviation. The name may just be long or may be short and +%long or the name may be short. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{% + \glssetcategoryattribute{#1}{firstshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{first}% + \glsxtrprovideaccsuppcmd{#1}{firstpl}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } +% \end{macrocode} +%\end{macro} % End of if accsupp part % \begin{macrocode} } @@ -12588,11 +13315,45 @@ defined}{}% % \end{macrocode} %\end{macro} % -%\begin{macro}{\@gls@setup@default@short@access} -%\changes{1.31}{2018-05-09}{new} +%\begin{macro}{\@gls@setup@default@access} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand{\@gls@setup@default@access}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetNoLongAttrs} +%\changes{1.42}{2020-02-03}{new} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetFirstLongAttrs} +%\changes{1.42}{2020-02-03}{new} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetTextShortAttrs} +%\changes{1.42}{2020-02-03}{new} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetNameShortAttrs} +%\changes{1.42}{2020-02-03}{new} +%This does nothing if there's no accessibility support. +% \begin{macrocode} + \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrAccSuppAbbrSetNameLongAttrs} +%\changes{1.42}{2020-02-03}{new} %This does nothing if there's no accessibility support. % \begin{macrocode} - \newcommand{\@gls@setup@default@short@access}[1]{}% + \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{} % \end{macrocode} % End of else part % \begin{macrocode} @@ -13810,14 +14571,59 @@ defined}{}% %\end{macro} % %\begin{macro}{\glossentrysymbol} -% Redefine to set the abbreviation format and accessibility support. +% Redefine to set the format and accessibility support. Allow for +% the possibility of being used in a section heading for standalone +% entry definitions. %\changes{0.5.2}{2015-12-08}{added} % \begin{macrocode} -\renewcommand*{\glossentrysymbol}[1]{% +\ifdef\texorpdfstring +{ + \renewcommand*{\glossentrysymbol}[1]{% + \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}% + } +} +{ + \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsentrypdfsymbol} +%\changes{1.4.2}{??}{new} +%May be redefined to a field that expands to a value that's more +%suitable for PDF bookmarks. +% \begin{macrocode} +\newcommand{\glsentrypdfsymbol}[1]{\glsentrysymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@glossentrysymbol} +%\changes{1.4.2}{??}{new} +%There are no case-changing attributes as it's less usual for +%symbols. +% \begin{macrocode} +\newrobustcmd*{\@glossentrysymbol}[1]{% \glsdoifexistsorwarn{#1}% {% - \glssetabbrvfmt{\glscategory{#1}}% - \glsaccesssymbol{#1}% + \begingroup + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glosssymbolfont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glosssymbolfont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glosssymbolfont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glosssymbolfont attribute + for entry `#1'. Ignoring}% + \let\@glsxtr@glosssymbolfont\@firstofone + }% + }% + {\let\@glsxtr@glosssymbolfont\@firstofone}% + \@glsxtr@glosssymbolfont{\glsaccesssymbol{#1}}% + \endgroup }% } % \end{macrocode} @@ -14384,21 +15190,11 @@ defined}{}% % commands for abbreviations that have a similar, but not identical, % underlying mechanism to acronyms. % -% If there's a style for the given category, apply it. +% If there's a style for the given category, it needs to be applied +% by \cs{newabbreviation}. % \begin{macrocode} \define@key{glsxtrabbrv}{category}{% \edef\glscategorylabel{#1}% - \ifcsdef{@glsabbrv@current@#1}% - {% -% \end{macrocode} -% Warning should already have been issued. -% \begin{macrocode} - \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle - \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo - \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@#1\endcsname}% - \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep - }% - {}% } % \end{macrocode} % Save the short plural form. This may be needed before the entry is @@ -14547,14 +15343,35 @@ defined}{}% % \end{macrocode} % Get the category. %\changes{0.3}{2015-12-02}{fixed family name in \cs{setkeys}} +%\changes{1.42}{2020-02-03}{moved apply abbreviation style to after category +%key has been obtained} % \begin{macrocode} \def\glscategorylabel{abbreviation}% - \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% % \end{macrocode} % Ignore the shortplural and longplural keys. % \begin{macrocode} \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}% % \end{macrocode} +% Set the abbreviation style. +% \begin{macrocode} + \ifcsdef{@glsabbrv@current@\glscategorylabel}% + {% +% \end{macrocode} +% Warning should already have been issued. +% \begin{macrocode} + \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle + \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo + \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@\glscategorylabel\endcsname}% + \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep + }% + {% +% \end{macrocode} +%If no style has been associated with this category, fallback on the style +%for the \category{abbreviation} category. +% \begin{macrocode} + \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% + }% +% \end{macrocode} % Set the default long plural % \begin{macrocode} \def\@gls@longpl{#4\glspluralsuffix}% @@ -14589,7 +15406,12 @@ defined}{}% \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}% {% \@glsxtr@insertdots\@gls@short{#3}% - \expandafter\glsshorttok\expandafter{\@gls@short\spacefactor1000 \relax}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{relax} and updated \cs{@gls@short} +%instead of \cs{glsshorttok}} +%\changes{1.42}{2020-02-03}{replaced explicit \cs{spacefactor} with \cs{@}} +% \begin{macrocode} + \appto\@gls@short{\@}% }% {\def\@gls@short{#3}}% }% @@ -14630,6 +15452,11 @@ defined}{}% % \begin{macrocode} \setkeys*{glsxtrabbrv}[category]{#1}% % \end{macrocode} +% Save in case required. +% \begin{macrocode} + \let\@gls@org@longpl\@gls@longpl + \let\@gls@org@shortpl\@gls@shortpl +% \end{macrocode} % Has the plural been explicitly set? % \begin{macrocode} \ifx\@gls@default@longpl\@gls@longpl @@ -14654,7 +15481,7 @@ defined}{}% % Hook for accessibility support (does nothing if % \sty{glossaries-accsupp} hasn't been loaded). % \begin{macrocode} - \@gls@setup@default@short@access{#3}% + \@gls@setup@default@access % \end{macrocode} % Do any extra setup provided by hook: % \begin{macrocode} @@ -14686,6 +15513,10 @@ defined}{}% }% }% \@do@newglossaryentry +% \end{macrocode} +% Obtain the type and add it to the list of abbreviations. +% \begin{macrocode} + \@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}% \GlsXtrPostNewAbbreviation } % \end{macrocode} @@ -14855,6 +15686,7 @@ defined}{}% % %\begin{macro}{\glsabbrvfont} % Font changing command used for the abbreviation on subsequent use. +% This is redefined by the abbreviation styles, as appropriate. % \begin{macrocode} \newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}} % \end{macrocode} @@ -15881,6 +16713,7 @@ defined}{}% % Set up the style for the given category. % \begin{macrocode} \csdef{@glsabbrv@current@#1}{#2}% + \edef\glscategorylabel{#1}% \glsxtr@applyabbrvstyle{#2}% }% }% @@ -16086,6 +16919,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-short}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -16097,8 +16937,10 @@ defined}{}% \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% description={\the\glslongtok}}% % \end{macrocode} %\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} @@ -16181,6 +17023,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-short-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -16232,6 +17081,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-long}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -16244,7 +17100,9 @@ defined}{}% \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} + text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% % \end{macrocode} %\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} @@ -16321,6 +17179,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-long-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -16403,6 +17268,15 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{footnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. (Add +% \catattr{firstshortaccess} since long form is hidden in a +% footnote on first use.) +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -16419,7 +17293,9 @@ defined}{}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} + text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, @@ -16507,8 +17383,77 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{macro}{\glsxtrfootnotedescname} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfootnotedescname}{% + \protect\glsabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsxtrfootnotedescsort} +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newcommand*{\glsxtrfootnotedescsort}{\the\glsshorttok} +% \end{macrocode} +%\end{macro} +% +%\begin{abbrvstyle}{short-footnote-desc} +% Like \abbrstyle{short-footnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newabbreviationstyle{short-footnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{footnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{footnote-desc} +%\changes{1.42}{2020-02-03}{new} +%Synonym. +% \begin{macrocode} +\letabbreviationstyle{footnote-desc}{short-footnote-desc} +% \end{macrocode} +%\end{abbrvstyle} +% %\begin{abbrvstyle}{postfootnote} -% Similar to the above but the footnote is placed afterwards, +% Similar to \abbrstyle{footnote} but the footnote is placed afterwards, % outside the link. This avoids nested links and can also move the % footnote marker after any following punctuation mark. % Pre v1.07 included \cs{footnote} in the first keys, which was @@ -16517,6 +17462,15 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{postfootnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. (Add +% \catattr{firstshortaccess} since long form is hidden in a +% footnote on first use.) +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -16525,7 +17479,9 @@ defined}{}% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} + text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% % \end{macrocode} % Make this category insert a footnote after the link if this was @@ -16628,6 +17584,77 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-postfootnote-desc} +%\changes{1.42}{2020-02-03}{new} +% Like \abbrstyle{short-postfootnote} but with user supplied description. +% \begin{macrocode} +\newabbreviationstyle{short-postfootnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% +% \end{macrocode} +%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} +%\changes{1.42}{2020-02-03}{added missing text key} +% \begin{macrocode} + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{postfootnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\begin{abbrvstyle}{postfootnote-desc} +%\changes{1.42}{?}{new} +% \begin{macrocode} +\letabbreviationstyle{postfootnote-desc}{short-postfootnote-desc} +% \end{macrocode} +%\end{abbrvstyle} +% %\begin{macro}{\glsxtrshortnolongname} %\changes{1.25}{2017-11-24}{new} % \begin{macrocode} @@ -16647,6 +17674,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -16781,6 +17815,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -16960,7 +18001,7 @@ defined}{}% % but the long and short form can be displayed with the \qt{full} % commands that use the inline format. The predefined glossary styles % won't show the short form. The user must supply a description for -% this style. +% this style. The accessibility attributes don't need setting here. % \begin{macrocode} \newabbreviationstyle{long-desc}% {% @@ -17102,6 +18143,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -17185,15 +18233,26 @@ defined}{}% % and for the default short form suffix: %\begin{macro}{\glsxtrscsuffix} %\changes{0.5}{2015-12-07}{new} +%\changes{1.42}{2020-02-03}{added \cs{protect}} +%\cs{protect} needs to come inside \cs{\glsxtrscsuffix} to avoid +%interfering with all caps. % \begin{macrocode} -\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}} +\newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}} % \end{macrocode} %\end{macro} % %\begin{abbrvstyle}{long-short-sc} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{long-short-sc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -17203,6 +18262,7 @@ defined}{}% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -17216,8 +18276,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% % \end{macrocode} @@ -17252,11 +18313,19 @@ defined}{}% }% } % \end{macrocode} +%\end{abbrvstyle} % %\begin{abbrvstyle}{long-short-sc-desc} % \begin{macrocode} \newabbreviationstyle{long-short-sc-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -17288,11 +18357,21 @@ defined}{}% \GlsXtrUseAbbrStyleFmts{long-short-sc}% } % \end{macrocode} +%\end{abbrvstyle} % +%\begin{abbrvstyle}{short-sc-long} % Now the short (long) version +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-sc-long}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -17303,6 +18382,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -17318,8 +18398,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -17354,10 +18435,18 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-sc-long-desc} % As before but user provides description % \begin{macrocode} \newabbreviationstyle{short-sc-long-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -17394,6 +18483,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-sc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -17408,8 +18504,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -17482,6 +18579,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-sc-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -17495,8 +18599,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -17600,7 +18705,7 @@ defined}{}% %\changes{1.04}{2016-05-02}{renamed from \qt{long-sc}} % The smallcaps font will only be used if % the short form is explicitly invoked through commands like -% \cs{glsxtrshort}. +% \cs{glsxtrshort}. No accessibility attributes needed here. % \begin{macrocode} \newabbreviationstyle{long-noshort-sc}% {% @@ -17619,8 +18724,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -17712,8 +18818,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -17795,9 +18902,17 @@ defined}{}% %\begin{abbrvstyle}{short-sc-footnote} %\changes{0.5}{2015-12-07}{new} %\changes{1.04}{2016-05-02}{renamed from \qt{footnote-sc}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-sc-footnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -17808,6 +18923,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, @@ -17826,8 +18942,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -17894,18 +19011,71 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-sc-footnote-desc} +% Like \abbrstyle{short-sc-footnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newabbreviationstyle{short-sc-footnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-footnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% %\begin{abbrvstyle}{short-sc-postfootnote} %\changes{0.5}{2015-12-07}{new} %\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-sc}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-sc-postfootnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% % \end{macrocode} % Make this category insert a footnote after the link if this was @@ -17942,8 +19112,9 @@ defined}{}% {% % \end{macrocode} % Use smallcaps and adjust the plural suffix to revert to upright. +%\changes{1.42}{2020-02-03}{moved \cs{protect} inside \cs{glsxtrscsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -18002,35 +19173,93 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % -%\subsection{Predefined Styles (Fake Small Capitals)} -% These styles require the \sty{relsize} package, which must be -% loaded by the user. These styles all use: -%\begin{macro}{\glsxtrsmfont} -%\changes{0.5}{2015-12-07}{new} -%Maintained for backward compatibility. +%\begin{abbrvstyle}{short-sc-postfootnote-desc} +% Like \abbrstyle{short-sc-footnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} % \begin{macrocode} -\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}} +\newabbreviationstyle{short-sc-postfootnote-desc}% +{% % \end{macrocode} -%\end{macro} -%\begin{macro}{\glsabbrvsmfont} -%\changes{1.17}{2017-08-09}{new} -%Added for consistent naming. +% Set accessibility attributes if enabled. % \begin{macrocode} -\newcommand*{\glsabbrvsmfont}{\glsxtrsmfont} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel % \end{macrocode} -%\end{macro} -%\begin{macro}{\glsxtrfirstsmfont} -%\changes{1.04}{2016-05-02}{new} -%Maintained for backward compatibility. +% Setup the default fields. % \begin{macrocode} -\newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% % \end{macrocode} -%\end{macro} -%\begin{macro}{\glsfirstabbrvsmfont} -%\changes{1.17}{2017-08-09}{new} -%Added for consistent naming. +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. % \begin{macrocode} -\newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% +%\subsection{Predefined Styles (Fake Small Capitals)} +% These styles require the \sty{relsize} package, which must be +% loaded by the user. These styles all use: +%\begin{macro}{\glsxtrsmfont} +%\changes{0.5}{2015-12-07}{new} +%Maintained for backward compatibility. +% \begin{macrocode} +\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsabbrvsmfont} +%\changes{1.17}{2017-08-09}{new} +%Added for consistent naming. +% \begin{macrocode} +\newcommand*{\glsabbrvsmfont}{\glsxtrsmfont} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsxtrfirstsmfont} +%\changes{1.04}{2016-05-02}{new} +%Maintained for backward compatibility. +% \begin{macrocode} +\newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glsfirstabbrvsmfont} +%\changes{1.17}{2017-08-09}{new} +%Added for consistent naming. +% \begin{macrocode} +\newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont} % \end{macrocode} %\end{macro} % and for the default short form suffix: @@ -18043,9 +19272,17 @@ defined}{}% % %\begin{abbrvstyle}{long-short-sm} %\changes{0.5}{2015-12-07}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{long-short-sm}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -18055,6 +19292,7 @@ defined}{}% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -18066,9 +19304,12 @@ defined}{}% }% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% % \end{macrocode} % Use the default long fonts. % \begin{macrocode} @@ -18108,6 +19349,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-short-sm-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -18143,9 +19391,17 @@ defined}{}% %\begin{abbrvstyle}{short-sm-long} % Now the short (long) version %\changes{0.5}{2015-12-07}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-sm-long}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -18156,6 +19412,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -18169,9 +19426,12 @@ defined}{}% }% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -18210,6 +19470,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-sm-long-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -18247,6 +19514,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-sm}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -18259,9 +19533,12 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -18333,6 +19610,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-sm-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -18344,9 +19628,12 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -18453,6 +19740,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-noshort-sm}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -18466,9 +19760,12 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -18557,9 +19854,12 @@ defined}{}% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% % \end{macrocode} @@ -18639,9 +19939,17 @@ defined}{}% %\begin{abbrvstyle}{short-sm-footnote} %\changes{0.5}{2015-12-07}{new} %\changes{1.04}{2016-05-02}{renamed from \qt{footnote-sm}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-sm-footnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -18652,6 +19960,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, @@ -18668,9 +19977,12 @@ defined}{}% }% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% % \end{macrocode} @@ -18735,18 +20047,71 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-sm-footnote-desc} +% Like \abbrstyle{short-footnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newabbreviationstyle{short-sm-footnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-footnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% %\begin{abbrvstyle}{short-sm-postfootnote} %\changes{0.5}{2015-12-07}{new} %\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-sm}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-sm-postfootnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% % \end{macrocode} % Make this category insert a footnote after the link if this was @@ -18781,9 +20146,12 @@ defined}{}% }% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtrsmsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% % \end{macrocode} @@ -18840,6 +20208,64 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-sm-postfootnote-desc} +% Like \abbrstyle{short-sm-postfootnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newabbreviationstyle{short-sm-postfootnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% %\subsection{Predefined Styles (Emphasized)} % These styles use \ics{emph} for the short form. %\begin{macro}{\glsabbrvemfont} @@ -18880,9 +20306,17 @@ defined}{}% %\begin{abbrvstyle}{long-short-em} %\changes{0.5}{2015-12-07}{new} % The long form is just set in the default long font. +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{long-short-em}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -18892,6 +20326,7 @@ defined}{}% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -18903,9 +20338,12 @@ defined}{}% }% }% {% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% % \end{macrocode} % Use the default long fonts. % \begin{macrocode} @@ -18945,6 +20383,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-short-em-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -18979,10 +20424,16 @@ defined}{}% % %\begin{abbrvstyle}{long-em-short-em} %\changes{1.04}{2016-05-02}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{long-em-short-em}% {% % \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. %\cs{glslongemfont} is used in the description since \cs{glsdesc} %doesn't set the style. % \begin{macrocode} @@ -18998,6 +20449,7 @@ defined}{}% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% description={\protect\glslongemfont{\the\glslongtok}}}% % \end{macrocode} @@ -19012,7 +20464,10 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -19051,6 +20506,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-em-short-em-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -19083,9 +20545,17 @@ defined}{}% %\begin{abbrvstyle}{short-em-long} % Now the short (long) version %\changes{0.5}{2015-12-07}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-em-long}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -19096,6 +20566,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -19112,8 +20583,9 @@ defined}{}% % \end{macrocode} % Mostly as short-long style: %\changes{1.05}{2016-06-10}{fixed incorrect font used by long form} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} % \begin{macrocode} - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -19154,6 +20626,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-em-long-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -19185,10 +20664,16 @@ defined}{}% % %\begin{abbrvstyle}{short-em-long-em} %\changes{1.04}{2016-05-02}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-em-long-em}% {% % \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. %\cs{glslongemfont} is used in the description since \cs{glsdesc} %doesn't set the style. % \begin{macrocode} @@ -19205,6 +20690,7 @@ defined}{}% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -19218,7 +20704,10 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -19258,6 +20747,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-em-long-em-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname},% sort={\glsxtrshortlongdescsort},% @@ -19292,6 +20788,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-em}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -19304,7 +20807,10 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -19378,6 +20884,16 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-em-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. The default name includes +% the long form but \cs{glsxtrshortdescname} could be modified to +% omit the long form, so include the \category{nameshortaccess} +% attribute. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -19389,7 +20905,10 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -19497,6 +21016,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-noshort-em}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -19510,7 +21036,10 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -19596,6 +21125,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-em-noshort-em}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -19609,7 +21145,10 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -19688,6 +21227,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-em-noshort-em-noreg}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -19718,7 +21264,10 @@ defined}{}% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -19800,7 +21349,8 @@ defined}{}% %\begin{abbrvstyle}{long-em-noshort-em-desc} %\changes{1.04}{2016-05-02}{new} % The short form is explicitly invoked through commands like -% \cs{glsxtrshort}. The long form is emphasized. +% \cs{glsxtrshort}. The long form is emphasized. No accessibility +% attributes need to be set. % \begin{macrocode} \newabbreviationstyle{long-em-noshort-em-desc}% {% @@ -19816,7 +21366,10 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -19916,9 +21469,17 @@ defined}{}% %\begin{abbrvstyle}{short-em-footnote} %\changes{0.5}{2015-12-07}{new} %\changes{1.04}{2015-04-30}{renamed from \qt{footnote-em}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-em-footnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -19929,6 +21490,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% % \end{macrocode} % Switch off hyperlinks on first use to prevent nested hyperlinks, @@ -19945,7 +21507,10 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -20012,18 +21577,71 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-em-footnote-desc} +% Like \abbrstyle{short-em-footnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em-footnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Switch off hyperlinks on first use to prevent nested hyperlinks, +% and unset the \catattr{regular} attribute if it has been set. +%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set} +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-footnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% %\begin{abbrvstyle}{short-em-postfootnote} %\changes{0.5}{2015-12-07}{new} %\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-em}} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-em-postfootnote}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% % \end{macrocode} % Make this category insert a footnote after the link if this was @@ -20058,7 +21676,10 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtremsuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -20117,6 +21738,64 @@ defined}{}% % \end{macrocode} %\end{abbrvstyle} % +%\begin{abbrvstyle}{short-em-postfootnote-desc} +% Like \abbrstyle{short-em-postfootnote} but with user supplied description. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newabbreviationstyle{short-em-postfootnote-desc}% +{% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% +% \end{macrocode} +% Make this category insert a footnote after the link if this was +% the first use, and +% unset the \catattr{regular} attribute if it has been set. +% \begin{macrocode} + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% +% \end{macrocode} +% Needs the specific font command here as the style may have been +% lost by the time the footnote occurs. +% \begin{macrocode} + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +% \end{macrocode} +% The footnote needs to be suppressed in the inline form, so +% \cs{glsxtrfull} must set the first use switch off. +% \begin{macrocode} + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-postfootnote}% +} +% \end{macrocode} +%\end{abbrvstyle} +% %\subsection{Predefined Styles (User Parentheses Hook)} % These styles allow the user to adjust the parenthetical forms. % These styles all test for the existence of the @@ -20204,9 +21883,17 @@ defined}{}% % %\begin{abbrvstyle}{long-short-user} %\changes{1.04}{2016-05-02}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{long-short-user}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -20219,6 +21906,7 @@ defined}{}% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% @@ -20273,11 +21961,19 @@ defined}{}% % %\begin{abbrvstyle}{long-postshort-user} %\changes{1.12}{2017-02-03}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %Like \abbrstyle{long-short-user} but defers the parenthetical %matter to after the link. % \begin{macrocode} \newabbreviationstyle{long-postshort-user}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -20286,6 +21982,7 @@ defined}{}% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% @@ -20380,6 +22077,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-postshort-user-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortuserdescname}, sort={\the\glslongtok}, @@ -20416,11 +22120,19 @@ defined}{}% % %\begin{abbrvstyle}{short-postlong-user} %\changes{1.12}{2017-02-03}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %Like \abbrstyle{short-long-user} but defers the parenthetical %matter to after the link. % \begin{macrocode} \newabbreviationstyle{short-postlong-user}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -20429,6 +22141,7 @@ defined}{}% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% @@ -20524,6 +22237,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-postlong-user-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlonguserdescname}, sort={\the\glsshorttok}, @@ -20563,6 +22283,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-short-user-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortuserdescname}, sort={\glsxtrlongshortdescsort},% @@ -20597,10 +22324,18 @@ defined}{}% % %\begin{abbrvstyle}{short-long-user} %\changes{1.04}{2016-05-02}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{short-long-user}% {% % \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} +% \end{macrocode} %\cs{glslonguserfont} is used in the description since \cs{glsdesc} %doesn't set the style. (Now in \cs{glsuserdescription}.) % \begin{macrocode} @@ -20618,6 +22353,7 @@ defined}{}% % \end{macrocode} %\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}} % \begin{macrocode} + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}% % \end{macrocode} % Unset the \catattr{regular} attribute if it has been set. @@ -20673,6 +22409,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-long-user-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlonguserdescname}, sort={\glsxtrshortlongdescsort},% @@ -20803,10 +22546,18 @@ defined}{}% % %\begin{abbrvstyle}{long-hyphen-short-hyphen} %\changes{1.17}{2017-08-09}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %Designed for use with the \catattr{markwords} attribute. % \begin{macrocode} \newabbreviationstyle{long-hyphen-short-hyphen}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -20816,6 +22567,7 @@ defined}{}% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% % \end{macrocode} @@ -20864,6 +22616,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-hyphen-short-hyphen-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort}, @@ -20921,11 +22680,13 @@ defined}{}% % %\begin{abbrvstyle}{long-hyphen-noshort-desc-noreg} %\changes{1.17}{2017-08-09}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %This version doesn't show the short form (except %explicitly with \cs{glsxtrshort}). Since \cs{glsxtrshort} doesn't %support the hyphen switch, the short form just uses the default %short-form font command. This style won't work with the %\catattr{regular} as the regular form isn't flexible enough. +%No accessibility attributes need to be set. % \begin{macrocode} \newabbreviationstyle{long-hyphen-noshort-desc-noreg}% {% @@ -20934,6 +22695,7 @@ defined}{}% sort={\expandonce\glsxtrorglong}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glslonghyphenfont{\the\glslongtok}},% plural={\protect\glslonghyphenfont{\the\glslongpltok}}% }% % \end{macrocode} @@ -21027,6 +22789,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-hyphen-noshort-noreg}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -21118,16 +22887,25 @@ defined}{}% % %\begin{abbrvstyle}{long-hyphen-postshort-hyphen} %\changes{1.17}{2017-08-09}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %Like \abbrstyle{long-hyphen-short-hyphen} but shifts the insert %and parenthetical material to the post-link hook. % \begin{macrocode} \newabbreviationstyle{long-hyphen-postshort-hyphen}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -21224,6 +23002,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-hyphen-postshort-hyphen-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -21290,10 +23075,18 @@ defined}{}% % %\begin{abbrvstyle}{short-hyphen-long-hyphen} %\changes{1.17}{2017-08-09}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %Designed for use with the \catattr{markwords} attribute. % \begin{macrocode} \newabbreviationstyle{short-hyphen-long-hyphen}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -21303,6 +23096,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% % \end{macrocode} @@ -21351,6 +23145,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-hyphen-long-hyphen-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -21427,16 +23228,25 @@ defined}{}% % %\begin{abbrvstyle}{short-hyphen-postlong-hyphen} %\changes{1.17}{2017-08-09}{new} +%\changes{1.42}{2020-02-03}{added missing text key} %Like \abbrstyle{short-hyphen-long-hyphen} but shifts the insert %and parenthetical material to the post-link hook. % \begin{macrocode} \newabbreviationstyle{short-hyphen-postlong-hyphen}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -21535,6 +23345,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{short-hyphen-postlong-hyphen-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort},% @@ -21616,14 +23433,23 @@ defined}{}% % %\begin{abbrvstyle}{long-only-short-only} %\changes{1.17}{2017-08-09}{new} +%\changes{1.42}{2020-02-03}{added missing text key} % \begin{macrocode} \newabbreviationstyle{long-only-short-only}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlyname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},% description={\protect\glslongonlyfont{\the\glslongtok}}}% % \end{macrocode} @@ -21638,7 +23464,10 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtronlysuffix}% +% \end{macrocode} +%\changes{1.42}{2020-02-03}{removed \cs{protect} from \cs{glsxtronlysuffix}} +% \begin{macrocode} + \renewcommand*{\abbrvpluralsuffix}{\glsxtronlysuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% @@ -21714,6 +23543,13 @@ defined}{}% % \begin{macrocode} \newabbreviationstyle{long-only-short-only-desc}% {% +% \end{macrocode} +% Set accessibility attributes if enabled. +% \begin{macrocode} + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel +% \end{macrocode} +% Setup the default fields. +% \begin{macrocode} \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlydescname}, sort={\glsxtronlydescsort},% @@ -22087,6 +23923,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitleshort} +%\changes{1.42}{2020-02-03}{new} +% Command to display short form of abbreviation in section title and +% table of contents in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitleshort}[1]{% + \GLSxtrshort[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsxtrheadshortpl} % Command used to display plural short form in the page header with the % first letter converted to upper case. @@ -22117,6 +23964,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitleshortpl} +%\changes{1.42}{2020-02-03}{new} +% Command to display plural short form of abbreviation in section title and +% table of contents in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitleshortpl}[1]{% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadname} % As above but for the \gloskey{name} value. %\changes{1.21}{2017-11-03}{new} @@ -22169,14 +24027,25 @@ defined}{}% %\begin{macro}{\Glsxtrtitlename} % Command to display \gloskey{name} value in section title and % table of contents with the first letter changed to upper case. -% \begin{macrocode} %\changes{1.21}{2017-11-03}{new} +% \begin{macrocode} \newrobustcmd*{\Glsxtrtitlename}[1]{% \Glsname[noindex,hyper=false]{#1}[]% } % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlename} +% Command to display \gloskey{name} value in section title and +% table of contents in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlename}[1]{% + \GLSname[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadtext} % As above but for the \gloskey{text} value. %\changes{0.5.1}{2015-12-07}{now uses headuc attribute} @@ -22236,6 +24105,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitletext} +% Command to display \gloskey{text} value in section title and +% table of contents in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitletext}[1]{% + \GLStext[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadplural} % As above but for the \gloskey{plural} value. %\changes{0.5.1}{2015-12-07}{now uses headuc attribute} @@ -22294,6 +24174,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitleplural} +%\changes{1.42}{2020-02-03}{new} +% Command to display \gloskey{plural} value in section title and +% table of contents in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitleplural}[1]{% + \GLSplural[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadfirst} % As above but for the \gloskey{first} value. %\changes{0.5.1}{2015-12-07}{now uses headuc attribute} @@ -22352,6 +24243,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlefirst} +%\changes{1.42}{2020-02-03}{new} +% Command to display \gloskey{first} value in section title and +% table of contents in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefirst}[1]{% + \GLSfirst[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadfirstplural} % As above but for the \gloskey{firstplural} value. %\changes{0.5.1}{2015-12-07}{now uses headuc attribute} @@ -22410,6 +24312,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlefirstplural} +%\changes{1.42}{2020-02-03}{new} +% Command to display \gloskey{first} value in section title and +% table of contents in all upper case. +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{% + \GLSfirstplural[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadlong} % Command used to display long form in the page header. %\changes{1.02}{2016-04-25}{new} @@ -22506,6 +24419,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlelong} +% Command to display long form of abbreviation in section title and +% table of contents in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlelong}[1]{% + \GLSxtrlong[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsxtrheadlongpl} % Command used to display plural long form in the page header with the % first letter converted to upper case. @@ -22537,6 +24461,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlelongpl} +% Command to display plural long form of abbreviation in section title and +% table of contents in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlelongpl}[1]{% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrheadfull} % Command used to display full form in the page header. %\changes{1.02}{2016-04-25}{new} @@ -22631,6 +24566,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlefull} +% Command to display full form of abbreviation in section title and +% table of contents in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefull}[1]{% + \GLSxtrfull[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\Glsxtrheadfullpl} % Command used to display plural full form in the page header with the % first letter converted to upper case. @@ -22662,6 +24608,17 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSxtrtitlefullpl} +% Command to display plural full form of abbreviation in section title and +% table of contents in all upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\newrobustcmd*{\GLSxtrtitlefullpl}[1]{% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtshort} % Provide a way of using the formatted short form in section % headings. If \sty{hyperref} has been loaded, use @@ -22789,6 +24746,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtname} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtname}[1]{% + \texorpdfstring + {\GLSxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\GLSfmtname}[1]{% + \GLSxtrtitlename{#1}} +} +% \end{macrocode} +%\end{macro} +% % %\begin{macro}{\glsfmttext} %As above but for the \gloskey{text} value. @@ -22828,6 +24804,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmttext} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmttext}[1]{% + \texorpdfstring + {\GLSxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\GLSfmttext}[1]{% + \GLSxtrtitletext{#1}} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtplural} %As above but for the \gloskey{plural} value. %\changes{0.5}{2015-12-07}{new} @@ -22866,6 +24861,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtplural} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtplural}[1]{% + \texorpdfstring + {\GLSxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\GLSfmtplural}[1]{% + \GLSxtrtitleplural{#1}} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtfirst} %As above but for the \gloskey{first} value. %\changes{0.5}{2015-12-07}{new} @@ -22904,6 +24918,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtfirst} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfirst}[1]{% + \texorpdfstring + {\GLSxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\GLSfmtfirst}[1]{% + \Glsxtrtitlefirst{#1}} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtfirstpl} %As above but for the \gloskey{firstplural} value. %\changes{0.5}{2015-12-07}{new} @@ -22942,6 +24975,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtfirstpl} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfirstpl}[1]{% + \texorpdfstring + {\GLSxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\GLSfmtfirstpl}[1]{% + \GLSxtrtitlefirstplural{#1}} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtlong} %As above but for the \gloskey{long} value. %\changes{1.02}{2016-04-25}{new} @@ -22980,6 +25032,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtlong} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtlong}[1]{% + \texorpdfstring + {\GLSxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\GLSfmtlong}[1]{% + \GLSxtrtitlelong{#1}} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtlongpl} %As above but for the \gloskey{longplural} value. %\changes{1.02}{2016-04-25}{new} @@ -23018,16 +25089,52 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtlongpl} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtlongpl}[1]{% + \texorpdfstring + {\GLSxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\GLSfmtlongpl}[1]{% + \GLSxtrtitlelongpl{#1}} +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glspdffmtfull} +%\changes{1.42}{2020-02-03}{new} +%Can't use \cs{glsxtrinlinefullformat} in PDF bookmarks as it's not +%fully expandable. This command is for the PDF part of +%\cs{texorpdfstring} for the full form. +% \begin{macrocode} +\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glspdffmtfullpl} +%\changes{1.42}{2020-02-03}{new} +%Likewise for plural. +% \begin{macrocode} +\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}% +% \end{macrocode} +%\end{macro} %\begin{macro}{\glsfmtfull} %In-line full format. %\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}} % \begin{macrocode} \ifdef\texorpdfstring { \newcommand*{\glsfmtfull}[1]{% \texorpdfstring {\glsxtrtitlefull{#1}}% - {\glsxtrinlinefullformat{#1}{}}% + {\glspdffmtfull{#1}}% } } { @@ -23040,13 +25147,14 @@ defined}{}% %\begin{macro}{\Glsfmtfull} %First letter converted to upper case. %\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfull}} % \begin{macrocode} \ifdef\texorpdfstring { \newcommand*{\Glsfmtfull}[1]{% \texorpdfstring {\Glsxtrtitlefull{#1}}% - {\Glsxtrinlinefullformat{#1}{}}% + {\glspdffmtfull{#1}{}}% } } { @@ -23056,16 +25164,36 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtfull} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfull}[1]{% + \texorpdfstring + {\GLSxtrtitlefull{#1}}% + {\glspdffmtfull{#1}}% + } +} +{ + \newcommand*{\GLSfmtfull}[1]{% + \GLSxtrtitlefull{#1}} +} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsfmtfullpl} %In-line full plural format. %\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}} % \begin{macrocode} \ifdef\texorpdfstring { \newcommand*{\glsfmtfullpl}[1]{% \texorpdfstring {\glsxtrtitlefullpl{#1}}% - {\glsxtrinlinefullplformat{#1}{}}% + {\glspdffmtfullpl{#1}}% } } { @@ -23078,13 +25206,14 @@ defined}{}% %\begin{macro}{\Glsfmtfullpl} %First letter converted to upper case. %\changes{1.02}{2016-04-25}{new} +%\changes{1.42}{2020-02-03}{switched pdf case to use \cs{glspdffmtfullpl}} % \begin{macrocode} \ifdef\texorpdfstring { \newcommand*{\Glsfmtfullpl}[1]{% \texorpdfstring {\Glsxtrtitlefullpl{#1}}% - {\Glsxtrinlinefullplformat{#1}{}}% + {\glspdffmtfullpl{#1}{}}% } } { @@ -23094,6 +25223,25 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\GLSfmtfullpl} +%All upper case. +%\changes{1.42}{2020-02-03}{new} +% \begin{macrocode} +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfullpl}[1]{% + \texorpdfstring + {\GLSxtrtitlefullpl{#1}}% + {\glspdffmtfullpl{#1}{}}% + } +} +{ + \newcommand*{\GLSfmtfullpl}[1]{% + \GLSxtrtitlefullpl{#1}} +} +% \end{macrocode} +%\end{macro} +% %\section{Multi-Lingual Support} % Add the facility to load language modules, if they are installed, % but none are provided with this package. @@ -23180,7 +25328,7 @@ defined}{}% %automatically loaded by the record option. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-bib2gls}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossaries-extra-bib2gls}[2020/02/13 v1.42 (NLCT)] % \end{macrocode} %Provide convenient shortcut commands for predefined glossary types. %\begin{macro}{\printunsrtacronyms} @@ -23237,6 +25385,30 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsdisplaynumberlist} +%\changes{1.42}{2020-02-03}{added} +%Allow \cs{glsdisplaynumberlist} and make it robust. +% \begin{macrocode} +\renewcommand*{\glsdisplaynumberlist}[1]{% + \glsdoifexists{#1}% + {% + {\let\bibglsdelimN\glsnumlistsep + \let\bibglslastDelimN\glsnumlistlastsep + \glsxtrusefield{#1}{location}% + }% + }% +} +\robustify\glsdisplaynumberlist +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\glsentrynumberlist} +%\changes{1.42}{2020-02-03}{added} +% \begin{macrocode} +\renewcommand*{\glsentrynumberlist}[1]{\glsxtrusefield{#1}{location}} +% \end{macrocode} +%\end{macro} +% %These are some convenient macros for use with custom rules. %\begin{macro}{\glshex} %\changes{1.21}{2017-11-03}{new} @@ -23461,11 +25633,14 @@ defined}{}% { % \end{macrocode} % Default action uses \meta{hcounter}. Equations and pages typically don't -% have a title, so check the counter name. +% have a title, so check the counter name (otherwise the title may +% section or chapter title, which may be confusing). As from v1.42, +% this now checks if the control sequence +% \cs{glsxtr\meta{counter}locfmt} is defined. % \begin{macrocode} \newcommand*{\glsxtrdisplaylocnameref}[8]{% - \ifstrequal{#2}{equation}% - {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% + \ifcsdef{glsxtr#2locfmt}% + {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{#2.#7}{#8}}% {% \ifstrempty{#5}% {% @@ -23485,6 +25660,16 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrequationlocfmt} +%\changes{1.42}{2020-02-03}{new} +%\begin{definition} +%\cs{glsxtrequationlocfmt}\marg{location}\marg{title} +%\end{definition} +% \begin{macrocode} +\newcommand*{\glsxtrequationlocfmt}[2]{(#1)} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrnamereflink} %\changes{1.37}{2018-11-30}{new} %\begin{definition} @@ -23571,6 +25756,7 @@ defined}{}% %\begin{definition} %\cs{glsxtrfmtinternalnameloc}\marg{target}\marg{format}\marg{title} %\end{definition} +% % \begin{macrocode} \newcommand*{\glsxtrfmtinternalnameref}[3]{% \csuse{#2}{\glsdohyperlink{#1}{#3}}% @@ -26227,7 +28413,7 @@ defined}{}% % First identify package: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-stylemods}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossaries-extra-stylemods}[2020/02/13 v1.42 (NLCT)] % \end{macrocode} % Provide package options to automatically load required predefined % styles. The simplest method is to just test for the existence of @@ -27017,10 +29203,20 @@ defined}{}% \newcommand*{\glstreechildprelocation}{\glstreeprelocation} % \end{macrocode} %\end{macro} +%Don't prohibit a page break at the start of a new group if there's +%no header. %\begin{macro}{\glstreegroupskip} %\changes{1.41}{2019-04-09}{new} % \begin{macrocode} - \newcommand{\glstreegroupskip}{\nopagebreak\indexspace\nobreak} + \newcommand{\glstreegroupskip}{\indexspace} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\glstreegroupheaderskip} +%\changes{1.42}{2020-02-03}{new} +%This doesn't include \cs{@afterheading} as it can cause +%interference with some styles. +% \begin{macrocode} + \newcommand{\glstreegroupheaderskip}{\nopagebreak\glstreegroupskip\nobreak} % \end{macrocode} %\end{macro} %Modify the \glostyle{index} style. @@ -27074,7 +29270,7 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } } @@ -27091,13 +29287,13 @@ defined}{}% \setglossarystyle{index}% \renewcommand*{\glossaryheader}{% \item\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% }% } {} @@ -27126,17 +29322,27 @@ defined}{}% %\cs{glstreeDescLoc}\marg{label}\marg{location} %\end{definition} %This checks for the description and symbol. If both are missing, -%don't want a space at the start of the location list. (For example, -%the entry may just have a cross-reference.) +%a different separator may be required. For example, a comma and +%space if there's no description or symbol but just a space if +%either of those fields are present. % \begin{macrocode} \newcommand{\glstreeDescLoc}[2]{% \ifglshasdesc{#1}% {\glstreedesc{#1}\glstreeprelocation}% - {\ifglshassymbol{#1}{\glstreeprelocation}{}}% + {\ifglshassymbol{#1}{\glstreeprelocation}{\glstreeNoDescSymbolPreLocation}}% #2% } % \end{macrocode} %\end{macro} +%\begin{macro}{\glstreeNoDescSymbolPreLocation} +%\changes{1.42}{2020-02-03}{new} +%\begin{definition} +%\cs{glstreeNoDescSymbolPreLocation} +%\end{definition} +% \begin{macrocode} + \newcommand{\glstreeNoDescSymbolPreLocation}{\space} +% \end{macrocode} +%\end{macro} %Similarly for the symbol. %\begin{macro}{\glstreesymbol} %\changes{1.31}{2018-05-09}{new} @@ -27157,11 +29363,14 @@ defined}{}% %\end{macro} %\begin{macro}{\glstreeChildDescLoc} %\changes{1.41}{2019-04-09}{new} +%\changes{1.42}{2020-02-03}{added \cs{glstreeNoDescSymbolPreLocation}} % \begin{macrocode} \newcommand{\glstreeChildDescLoc}[2]{% \ifglshasdesc{#1}% {\glstreechilddesc{#1}\glstreechildprelocation}% - {\ifglshassymbol{#1}{\glstreechildprelocation}{}}% + {\ifglshassymbol{#1}{\glstreechildprelocation}% + {\glstreeNoDescSymbolPreLocation}% + }% #2% }% % \end{macrocode} @@ -27219,7 +29428,7 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } } {} @@ -27235,14 +29444,14 @@ defined}{}% \setglossarystyle{tree}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } } {} @@ -27298,7 +29507,7 @@ defined}{}% \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% \glstreenonamesymbol{##1}% \glstreenonamedesc{##1}% - \glstreeprelocation##2\par + \glstreeDescLoc{##1}{##2}\par }% \renewcommand{\subglossentry}[3]{% \hangindent##1\glstreeindent\relax @@ -27329,7 +29538,7 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } } @@ -27346,13 +29555,13 @@ defined}{}% \setglossarystyle{treenoname}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } } {} @@ -27380,10 +29589,10 @@ defined}{}% \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}% % \end{macrocode} %\changes{1.41}{2019-04-09}{added check for description} +%\changes{1.42}{2020-02-03}{switched to using \cs{glstreeDescLoc}} % \begin{macrocode} - \ifglshasdesc{#1}% - {\glossentrydesc{#1}\glspostdescription\glstreeprelocation}{}% - #2\par + \ifglshasdesc{#1}{\glossentrydesc{#1}\glspostdescription}{}% + \glstreeDescLoc{#1}{#2}\par }% } % \end{macrocode} @@ -28102,8 +30311,6 @@ defined}{}% %after group headings. %\changes{1.21}{2017-11-03}{redefined \texttt{alttreegroup} to discourage %breaks after group headings} -%Can't use \cs{@afterheading} here as it messes with the first item -%of the group. % \begin{macrocode} \ifdef{\@glsstyle@alttreegroup} {% @@ -28116,7 +30323,11 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip +% \end{macrocode} +%Can't use \cs{@afterheading} here as it messes with the first item +%of the group. +% \begin{macrocode} + \glstreegroupheaderskip }% }% }% @@ -28137,7 +30348,11 @@ defined}{}% \hangindent0pt\relax \parindent0pt\relax \glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip +% \end{macrocode} +%Can't use \cs{@afterheading} here as it messes with the first item +%of the group. +% \begin{macrocode} + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% @@ -28147,7 +30362,11 @@ defined}{}% \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip +% \end{macrocode} +%Can't use \cs{@afterheading} here as it messes with the first item +%of the group. +% \begin{macrocode} + \glstreegroupheaderskip }% } }% @@ -28169,7 +30388,7 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28186,14 +30405,17 @@ defined}{}% \setglossarystyle{mcolindex}% \renewcommand*{\glossaryheader}{% \item\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip +% \end{macrocode} +%\changes{1.42}{2020-02-03}{added \cs{@afterheading}} +% \begin{macrocode} + \glstreegroupheaderskip\@afterheading }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28220,7 +30442,7 @@ defined}{}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28239,7 +30461,7 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28256,14 +30478,14 @@ defined}{}% \setglossarystyle{mcoltree}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28291,7 +30513,7 @@ defined}{}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28310,7 +30532,7 @@ defined}{}% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -28327,14 +30549,14 @@ defined}{}% \setglossarystyle{mcoltreenoname}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } }% {% @@ -28361,7 +30583,7 @@ defined}{}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } }% {% @@ -28405,7 +30627,7 @@ defined}{}% \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% @@ -28426,7 +30648,7 @@ defined}{}% \hangindent0pt\relax \parindent0pt\relax \glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% @@ -28436,7 +30658,7 @@ defined}{}% \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% @@ -28467,7 +30689,7 @@ defined}{}% \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% @@ -28497,7 +30719,7 @@ defined}{}% %\section{Package Initialisation and Options} % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-bookindex}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossary-bookindex}[2020/02/13 v1.42 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -28681,6 +30903,15 @@ defined}{}% % \end{macrocode} %\end{macro} % +%\begin{macro}{\glsxtrbookindexbookmarkprefix} +%\changes{1.42}{2020-02-03}{new} +%Make the bookmark label prefix used for letter groups depend on the glossary label +%(instead of original hardcoded ``index.''). +% \begin{macrocode} +\newcommand*{\glsxtrbookindexbookmarkprefix}{\currentglossary.} +% \end{macrocode} +%\end{macro} +% %\begin{macro}{\glsxtrbookindexcolspread} %\changes{1.21}{2017-11-03}{new} % \begin{macrocode} @@ -28877,7 +31108,7 @@ defined}{}% % \end{macrocode} % Do the PDF bookmark if supported. % \begin{macrocode} - \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{index.##1}% + \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{\glsxtrbookindexbookmarkprefix##1}% % \end{macrocode} % Format the group title. % \begin{macrocode} @@ -28984,7 +31215,7 @@ defined}{}% %Provides additional long styles. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-longextra}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossary-longextra}[2020/02/13 v1.42 (NLCT)] % \end{macrocode} %Load required packages. % \begin{macrocode} @@ -30413,7 +32644,7 @@ defined}{}% %topic. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-topic}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossary-topic}[2020/02/13 v1.42 (NLCT)] % \end{macrocode} %Load required package. % \begin{macrocode} @@ -30676,6 +32907,7 @@ defined}{}% \newcommand*{\glstopicSubNameFont}[1]{\textbf{#1}} % \end{macrocode} %\end{macro} +%\begin{macro}{\glstopicSubPreLocSep} %\changes{1.41}{2019-04-09}{new} % \begin{macrocode} \newcommand*{\glstopicSubPreLocSep}{\space} diff --git a/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.ins b/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.ins index e8bd0d99dba..15c23359bce 100644 --- a/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.ins +++ b/Master/texmf-dist/source/latex/glossaries-extra/glossaries-extra.ins @@ -1,10 +1,10 @@ -% glossaries-extra.ins generated using makedtx version 1.2 2019/4/9 21:59 +% glossaries-extra.ins generated using makedtx version 1.2 2020/2/13 22:19 \input docstrip \preamble glossaries-extra.dtx - Copyright 2019 Nicola Talbot + Copyright 2020 Nicola Talbot This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex b/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex index 18f24b920de..64b733582da 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex +++ b/Master/texmf-dist/tex/latex/glossaries-extra/example-glossaries-xr.tex @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `example-glossaries-xr.tex,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty index 218686c492a..6f47e1b1c3f 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-bib2gls.sty @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `glossaries-extra-bib2gls.sty,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-bib2gls}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossaries-extra-bib2gls}[2020/02/13 v1.42 (NLCT)] \ifglsacronym \providecommand*{\printunsrtacronyms}[1][]{% \printunsrtglossary[type=\acronymtype,#1]}% @@ -64,6 +64,17 @@ \providecommand*{\printunsrtabbreviations}[1][]{% \printunsrtglossary[type=abbreviations,#1]}% }{} +\renewcommand*{\glsdisplaynumberlist}[1]{% + \glsdoifexists{#1}% + {% + {\let\bibglsdelimN\glsnumlistsep + \let\bibglslastDelimN\glsnumlistlastsep + \glsxtrusefield{#1}{location}% + }% + }% +} +\robustify\glsdisplaynumberlist +\renewcommand*{\glsentrynumberlist}[1]{\glsxtrusefield{#1}{location}} \newcommand*{\glshex}{\string\u} \newcommand*{\glscapturedgroup}{\string\$} \newcommand*{\GlsXtrIfHasNonZeroChildCount}[3]{% @@ -155,8 +166,8 @@ } { \newcommand*{\glsxtrdisplaylocnameref}[8]{% - \ifstrequal{#2}{equation}% - {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}% + \ifcsdef{glsxtr#2locfmt}% + {\glsxtrnamereflink{#3}{\csuse{glsxtr#2locfmt}{#4}{#5}}{#2.#7}{#8}}% {% \ifstrempty{#5}% {% @@ -170,6 +181,7 @@ }% } } +\newcommand*{\glsxtrequationlocfmt}[2]{(#1)} \newcommand*{\glsxtrnamereflink}[4]{% \begingroup \let\glshypernumber\@firstofone diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty index 7d67e17cfd5..4fe9f4b3143 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra-stylemods.sty @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `glossaries-extra-stylemods.sty,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra-stylemods}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossaries-extra-stylemods}[2020/02/13 v1.42 (NLCT)] \newcommand*{\@glsxtr@loadstyles}{} \DeclareOption{all}{% \appto\@glsxtr@loadstyles{% @@ -546,7 +546,8 @@ { \newcommand*{\glstreeprelocation}{\glsxtrprelocation} \newcommand*{\glstreechildprelocation}{\glstreeprelocation} - \newcommand{\glstreegroupskip}{\nopagebreak\indexspace\nobreak} + \newcommand{\glstreegroupskip}{\indexspace} + \newcommand{\glstreegroupheaderskip}{\nopagebreak\glstreegroupskip\nobreak} \renewglossarystyle{index}{% \renewenvironment{theglossary}% {\setlength{\parindent}{0pt}% @@ -589,7 +590,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } } @@ -600,13 +601,13 @@ \setglossarystyle{index}% \renewcommand*{\glossaryheader}{% \item\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% }% } {} @@ -618,9 +619,10 @@ \newcommand{\glstreeDescLoc}[2]{% \ifglshasdesc{#1}% {\glstreedesc{#1}\glstreeprelocation}% - {\ifglshassymbol{#1}{\glstreeprelocation}{}}% + {\ifglshassymbol{#1}{\glstreeprelocation}{\glstreeNoDescSymbolPreLocation}}% #2% } + \newcommand{\glstreeNoDescSymbolPreLocation}{\space} \newcommand{\glstreesymbol}[1]{% \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}% }% @@ -630,7 +632,9 @@ \newcommand{\glstreeChildDescLoc}[2]{% \ifglshasdesc{#1}% {\glstreechilddesc{#1}\glstreechildprelocation}% - {\ifglshassymbol{#1}{\glstreechildprelocation}{}}% + {\ifglshassymbol{#1}{\glstreechildprelocation}% + {\glstreeNoDescSymbolPreLocation}% + }% #2% }% \newcommand{\glstreechildsymbol}[1]{% @@ -672,7 +676,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } } {} @@ -682,14 +686,14 @@ \setglossarystyle{tree}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } } {} @@ -717,7 +721,7 @@ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}% \glstreenonamesymbol{##1}% \glstreenonamedesc{##1}% - \glstreeprelocation##2\par + \glstreeDescLoc{##1}{##2}\par }% \renewcommand{\subglossentry}[3]{% \hangindent##1\glstreeindent\relax @@ -741,7 +745,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } } @@ -752,13 +756,13 @@ \setglossarystyle{treenoname}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } } {} @@ -768,9 +772,8 @@ {% \let\par\glsxtrAltTreePar \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}% - \ifglshasdesc{#1}% - {\glossentrydesc{#1}\glspostdescription\glstreeprelocation}{}% - #2\par + \ifglshasdesc{#1}{\glossentrydesc{#1}\glspostdescription}{}% + \glstreeDescLoc{#1}{#2}\par }% } \newlength\glsxtrAltTreeIndent @@ -1242,7 +1245,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip + \glstreegroupheaderskip }% }% }% @@ -1258,7 +1261,7 @@ \hangindent0pt\relax \parindent0pt\relax \glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% @@ -1268,7 +1271,7 @@ \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% @@ -1282,7 +1285,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1294,14 +1297,14 @@ \setglossarystyle{mcolindex}% \renewcommand*{\glossaryheader}{% \item\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip\@afterheading }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1323,7 +1326,7 @@ \glstreePreHeader{##1}{\glsxtr@grptitle}% \item\glstreegroupheaderfmt {\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1337,7 +1340,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1349,14 +1352,14 @@ \setglossarystyle{mcoltree}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1379,7 +1382,7 @@ \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1393,7 +1396,7 @@ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip\@afterheading + \glstreegroupheaderskip\@afterheading }% } }% @@ -1405,14 +1408,14 @@ \setglossarystyle{mcoltreenoname}% \renewcommand*{\glossaryheader}{% \par\noindent\glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } }% {% @@ -1434,7 +1437,7 @@ \glstreePreHeader{##1}{\glsxtr@grptitle}% \par\noindent \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip\@afterheading}% + \glstreegroupheaderskip\@afterheading}% } }% {% @@ -1466,7 +1469,7 @@ \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsxtr@grptitle}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% @@ -1482,7 +1485,7 @@ \hangindent0pt\relax \parindent0pt\relax \glstreenavigationfmt{\glsnavigation}% - \glstreegroupskip + \glstreegroupheaderskip }% \renewcommand*{\glsgroupheading}[1]{% \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}% @@ -1492,7 +1495,7 @@ \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% @@ -1518,7 +1521,7 @@ \hangindent0pt\relax \parindent0pt\relax \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}% - \glstreegroupskip + \glstreegroupheaderskip }% } }% diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty index 9246f55b5d7..61c52fbbca0 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossaries-extra.sty @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `glossaries-extra.sty,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossaries-extra}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossaries-extra}[2020/02/13 v1.42 (NLCT)] \RequirePackage{xkeyval} \RequirePackage{etoolbox} \@ifpackageloaded{glossaries} @@ -159,12 +159,12 @@ \@glsxtr@do@record@wrglossary{#1}% } \newcommand*{\@@glsxtr@record}[3]{% + \edef\@gls@label{\glsdetoklabel{#2}}% + \let\glslabel\@gls@label \ifglsentryexists{#2}{}% {% \@@glsxtrwrglossmark \begingroup - \edef\@gls@label{\glsdetoklabel{#2}}% - \let\glslabel\@gls@label \let\@glsnumberformat\@glsxtr@defaultnumberformat \def\@glsxtr@thevalue{}% \def\@glsxtr@theHvalue{\@glsxtr@thevalue}% @@ -661,6 +661,9 @@ \newcommand*{\@glsxtr@doaccsupp}{} \@glsxtr@declareoption{accsupp}{% \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}} +\newcommand*{\@glsxtr@doloadprefix}{} +\@glsxtr@declareoption{prefix}{% + \renewcommand*{\@glsxtr@doloadprefix}{\RequirePackage{glossaries-prefix}}} \newcommand{\glsxtrNoGlossaryWarning}[1]{% \GlossariesExtraWarning{Glossary `#1' is missing}% \@glsxtr@defaultnoglossarywarning{#1}% @@ -756,7 +759,7 @@ \newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}} \define@choicekey{glossaries-extra.sty}{debug} [\@glsxtr@debugval\@glsxtr@debugnr]% - {true,false,showtargets,showwrgloss,all}[true]{% + {true,false,showtargets,showwrgloss,all,showaccsupp}[true]{% \ifcase\@glsxtr@debugnr\relax % true \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{}% @@ -769,8 +772,10 @@ \glsxtr@dooption{debug=true}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% \or % all - \glsxtr@dooption{debug=showtargets}% + \glsxtr@dooption{debug=showtargets,debug=showaccsupp}% \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}% + \or % showaccsupp + \glsxtr@dooption{debug=showaccsupp}% \fi } \DeclareOptionX*{% @@ -778,22 +783,44 @@ \ProcessOptionsX \RequirePackage{glossaries} \@glsxtr@doaccsupp +\@glsxtr@doloadprefix \@glsxtr@defpostpunc -\def\glsshowtarget#1{% - \glsxtrtitleorpdforheading - {% - \ifmmode - \texttt{\small [#1]}% - \else - \ifinner +\ifdef\glsshowtargetouter +{ + \renewcommand*{\glsshowtarget}[1]{% + \glsxtrtitleorpdforheading + {% + \ifmmode + \nfss@text{\glsshowtargetfont [#1]}% + \else + \ifinner + {\glsshowtargetfont [#1]}% + \else + \glsshowtargetouter{#1}% + \fi + \fi + }% + {[#1]}% + {{\protect\glsshowtargetfont [#1]}}% + } +} +{ + \def\glsshowtarget#1{% + \glsxtrtitleorpdforheading + {% + \ifmmode \texttt{\small [#1]}% \else - \marginpar{\texttt{\small #1}}% + \ifinner + \texttt{\small [#1]}% + \else + \marginpar{\texttt{\small #1}}% + \fi \fi - \fi - }% - {[#1]}% - {\texttt{\small [#1]}}% + }% + {[#1]}% + {\texttt{\small [#1]}}% + } } \let\@glsxtr@org@doseeglossary\@do@seeglossary \newcommand*{\@glsxtr@doseeglossary}[2]{% @@ -831,16 +858,19 @@ \@glsxtr@setupshortcuts \@glsxtr@redef@forglsentries \renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}% +\disable@keys{glossaries-extra.sty}{accsupp} \newcommand*{\glossariesextrasetup}[1]{% \let\glsxtr@setup@record\relax \let\@glsxtr@setupshortcuts\relax \let\@glsxtr@redef@forglsentries\relax + \let\@glsxtr@doloadprefix\relax \setkeys{glossaries-extra.sty}{#1}% \@glsxtr@abbreviationsdef \let\@glsxtr@abbreviationsdef\relax \@glsxtr@setupshortcuts \glsxtr@setup@record \@glsxtr@redef@forglsentries + \@glsxtr@doloadprefix } \let\glsxtr@org@@do@wrglossary\@@do@wrglossary \newcommand*{\glsxtr@@do@wrglossary}[1]{% @@ -977,22 +1007,26 @@ \ifdef\texorpdfstring { \newcommand*{\glsxtrentryfmt}[2]{% - \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{#2}% + \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{\glsxtrpdfentryfmt{#1}{#2}}% } } { \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt} } +\newcommand*{\glsxtrpdfentryfmt}[2]{#2} \newrobustcmd*{\@glsxtrentryfmt}[2]{% - \glsdoifexistsordo{#1}% {% - \ifglshasfield{\GlsXtrFmtField}{#1}% + \def\glslabel{#1}% + \glsdoifexistsordo{#1}% {% - \csuse{\glscurrentfieldvalue}{#2}% + \ifglshasfield{\GlsXtrFmtField}{#1}% + {% + \csuse{\glscurrentfieldvalue}{#2}% + }% + {#2}% }% {#2}% }% - {#2}% } \newcommand*{\glsxtrfieldlistadd}[3]{% \listcsadd{glo@\glsdetoklabel{#1}@#2}{#3}% @@ -1012,6 +1046,16 @@ \newcommand*{\glsxtrfieldforlistloop}[3]{% \forlistcsloop{#3}{glo@\glsdetoklabel{#1}@#2}% } +\newrobustcmd*{\glsxtrfieldformatlist}[2]{% + \begingroup + \def\@dtl@formatlist@itemsep{}% + \def\@dtl@formatlist@lastitem{}% + \def\@dtl@formatlist@prelastitem{}% + \def\@dtl@formatlist@prelastitemsep{}% + \forlistcsloop{\@dtl@formatlist@handler}{glo@\glsdetoklabel{#1}@#2}% + \@dtl@formatlist@prelastitem\@dtl@formatlist@lastitem + \endgroup +} \newcommand*{\glsxtrfieldifinlist}[5]{% \ifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}% } @@ -1026,6 +1070,30 @@ {\expandafter#3\expandafter{\@glsxtr@label}}}% {}% } +\newrobustcmd*{\glsxtrfieldformatcsvlist}[2]{% + \@glsxtrifhasfield{#2}{#1}% + {\@dtlformatlist\glscurrentfieldvalue}% + {}% +} +\newcommand*{\GlsXtrIfFieldValueInCsvList}{% + \@ifstar\s@GlsXtrIfFieldValueInCsvList\@GlsXtrIfFieldValueInCsvList +} +\newcommand*{\@GlsXtrIfFieldValueInCsvList}[5]{% + \@glsxtrifhasfield{#2}{#1}% + {% + \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% + {#3}{#4}{#5}% + }% + {#5}% +} +\newcommand*{\s@GlsXtrIfFieldValueInCsvList}[5]{% + \s@glsxtrifhasfield{#2}{#1}% + {% + \expandafter\DTLifinlist\expandafter{\glscurrentfieldvalue}% + {#3}{#4}{#5}% + }% + {#5}% +} \newrobustcmd{\glsxtrifhasfield}{% \@ifstar{\s@glsxtrifhasfield}{\@glsxtrifhasfield}% } @@ -1334,6 +1402,11 @@ \GlossariesExtraWarning{Glossary `#1' is not defined}% }% } +\ifdef\@gls@entry@field +{ + \renewcommand*{\@gls@entry@field}[2]{\csuse{glo@\glsdetoklabel{#1}@#2}} +} +{} \renewcommand*{\ifglsused}[3]{% \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}% } @@ -1601,7 +1674,7 @@ \glsseeformat[#1]{#2}{}% } \renewcommand*{\glsseeitemformat}[1]{% - \ifglshasshort{#1}{\glsaccesstext{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% } \newcommand*{\glsxtrhiername}[1]{% \glsdoifexists{#1}% @@ -1609,7 +1682,7 @@ \glsxtrifhasfield{parent}{#1}% {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% - \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% } \newcommand*{\Glsxtrhiername}[1]{% @@ -1618,9 +1691,9 @@ \glsxtrifhasfield{parent}{#1}% {% \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep - \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% - {\ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}}% + {\ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}}% }% } \newcommand*{\GlsXtrhiername}[1]{% @@ -1629,7 +1702,7 @@ \glsxtrifhasfield{parent}{#1}% {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {}% - \ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}% + \ifglshasshort{#1}{\Glsfmttext{#1}}{\Glsfmtname{#1}}% }% } \newcommand*{\GLSxtrhiername}[1]{% @@ -1638,9 +1711,9 @@ \glsxtrifhasfield{parent}{#1}% {% \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep - \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}% + \ifglshasshort{#1}{\glsfmttext{#1}}{\glsfmtname{#1}}% }% - {\ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}}% + {\ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}}% }% } \newcommand*{\GLSXTRhiername}[1]{% @@ -1649,7 +1722,7 @@ \glsxtrifhasfield{parent}{#1}% {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}% {} - \ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}% + \ifglshasshort{#1}{\GLSfmttext{#1}}{\GLSfmtname{#1}}% }% } \newcommand*{\glsxtrhiernamesep}{\,{\small$\triangleright$}\,} @@ -1664,13 +1737,26 @@ }% }% } +\newcommand*{\glsxtrusealias}[1]{% + \glsdoifexists{#1}% + {% + \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@alias}% + \ifdefempty\@glo@see + {}% + {% + \glsxtruseseeformat{\seename}{\@glo@see}% + }% + }% +} \newcommand*{\glsxtruseseealsoformat}[1]{% \glsseeformat[\seealsoname]{#1}{}% } \newrobustcmd{\glsxtrseelist}[1]{% \edef\@glo@tmp{\noexpand\glsseelist{#1}}\@glo@tmp } -\providecommand{\seealsoname}{see also} +\ifdef\alsoname +{\providecommand{\seealsoname}{\alsoname}} +{\providecommand{\seealsoname}{see also}} \ifdef\@xdycrossrefhook { \appto\@xdycrossrefhook{% @@ -1855,6 +1941,8 @@ } \let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries \renewcommand{\makenoidxglossaries}{% + \@domakeglossaries + {% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off {% \glsxtr@orgmakenoidxglossaries @@ -1893,6 +1981,7 @@ {You may only use \string\makenoidxglossaries\ space with the record=off option}% }% + }% } \renewcommand*{\gls@defdocnewglossaryentry}{% \ifcase\@glsxtr@docdefval @@ -2726,7 +2815,14 @@ \@gls@field@link[\let\glscapscase\@thirdoftwo]% {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}% } +\newcommand*{\@@glsxtr@base@acrcmd@warn}[2]{% + \GlossariesExtraWarning{Base acronym command \string#1\space + should not be used with new abbreviation definitions. Use + \string#2\space instead}% +} +\let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn \def\@acrshort#1#2[#3]{% + \@glsxtr@base@acrcmd\acrshort\glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2742,6 +2838,7 @@ \glspostlinkhook } \def\@Acrshort#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrshort\Glsxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2757,6 +2854,7 @@ \glspostlinkhook } \def\@ACRshort#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRshort\GLSxtrshort \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2772,6 +2870,7 @@ \glspostlinkhook } \def\@acrshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrshortpl\glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2787,6 +2886,7 @@ \glspostlinkhook } \def\@Acrshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrshortpl\Glsxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2802,6 +2902,7 @@ \glspostlinkhook } \def\@ACRshortpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRshortpl\GLSxtrshortpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2817,6 +2918,7 @@ \glspostlinkhook } \def\@acrlong#1#2[#3]{% + \@glsxtr@base@acrcmd\acrlong\glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2832,6 +2934,7 @@ \glspostlinkhook } \def\@Acrlong#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrlong\Glsxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2847,6 +2950,7 @@ \glspostlinkhook } \def\@ACRlong#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRlong\GLSxtrlong \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2862,6 +2966,7 @@ \glspostlinkhook } \def\@acrlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrlongpl\glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2877,6 +2982,7 @@ \glspostlinkhook } \def\@Acrlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrlongpl\Glsxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2892,6 +2998,7 @@ \glspostlinkhook } \def\@ACRlongpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRlongpl\GLSxtrlongpl \glsdoifexists{#2}% {% \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper @@ -2906,6 +3013,30 @@ }% \glspostlinkhook } +\def\@acrfull#1#2[#3]{% + \@glsxtr@base@acrcmd\acrfull\glsxtrfull + \acrfullfmt{#1}{#2}{#3}% +} +\def\@Acrfull#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrfull\Glsxtrfull + \Acrfullfmt{#1}{#2}{#3}% +} +\def\@ACRfull#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRfull\GLSxtrfull + \ACRfullfmt{#1}{#2}{#3}% +} +\def\@acrfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\acrfullpl\glsxtrfullpl + \acrfullplfmt{#1}{#2}{#3}% +} +\def\@Acrfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\Acrfullpl\Glsxtrfullpl + \Acrfullplfmt{#1}{#2}{#3}% +} +\def\@ACRfullpl#1#2[#3]{% + \@glsxtr@base@acrcmd\ACRfullpl\GLSxtrfullpl + \ACRfullplfmt{#1}{#2}{#3}% +} \renewcommand*{\@glsaddkey}[7]{% \key@ifundefined{glossentry}{#1}% {% @@ -3115,6 +3246,15 @@ \newcommand*{\@gls@alt@hyp@opt@keys}{} \newcommand*{\GlsXtrSetAltModifier}[2]{% \let\@gls@hyp@opt\@gls@alt@hyp@opt + \ifstrequal{#1}{+}% + {\PackageError{glossaries-extra}% + {Can't use '#1' as modifier (it's already in use)}{}}% + {% + \ifstrequal{#1}{*}% + {\PackageError{glossaries-extra}% + {Can't use '#1' as modifier (it's already in use)}{}}% + {}% + }% \def\@gls@alt@hyp@opt@char{#1}% \def\@gls@alt@hyp@opt@keys{#2}% \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off @@ -3130,13 +3270,13 @@ \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{% \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}% {% - \let\glsdohyperlink\glsxtr@org@dohyperlink + \let\glsxtrdohyperlink\glsxtr@org@dohyperlink \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}% }% }% } {} -\renewcommand*{\glsdohyperlink}[2]{% +\newcommand*{\glsxtrdohyperlink}[2]{% \glshasattribute{\glslabel}{targeturl}% {% \glshasattribute{\glslabel}{targetname}% @@ -3199,7 +3339,7 @@ } \renewcommand{\glsenablehyper}{% \KV@glslink@hypertrue - \def\@glslink{\glsdohyperlink}% + \def\@glslink{\glsxtrdohyperlink}% \def\@glstarget{\glsdohypertarget}% } \def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}} @@ -3208,7 +3348,7 @@ \def\@glslink{\glsdonohyperlink} }% {% - \def\@glslink{\glsdohyperlink} + \def\@glslink{\glsxtrdohyperlink} } \newcommand*{\glsxtrprotectlinks}{% \KV@glslink@hyperfalse @@ -3567,6 +3707,10 @@ \forlistloop\@glslocalunset\@glsxtr@unset@buffer \let\@glsunset\@glsxtr@unset } +\newcommand*{\GlsXtrDiscardUnsetBuffering}{% + \let\@glsunset\@glsxtr@unset + \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer +} \newcommand*{\GlsXtrForUnsetBufferedList}[1]{% \forlistloop#1\@glsxtr@unset@buffer } @@ -4065,6 +4209,13 @@ }% } \renewcommand*{\SetGenericNewAcronym}{% + \ifdefequal\@addtoacronymlists\@glsxtr@org@addtoacronynlists + {}% + {% + \GlossariesWarning{\string\SetGenericNewAcronym\space used + without restoring base acronym functions with + \string\RestoreAcronyms}% + }% \let\@Gls@entryname\@Gls@acrentryname \renewcommand{\newacronym}[4][]{% \ifdefempty{\@glsacronymlists}% @@ -4118,7 +4269,39 @@ } \let\@glsxtr@org@setacronymstyle\setacronymstyle \let\@glsxtr@org@newacronymstyle\newacronymstyle +\let\@glsxtr@acronymlists\@glsacronymlists +\let\@glsxtr@org@addtoacronynlists\@addtoacronymlists +\let\@glsxtr@org@setacronymlists\SetAcronymLists +\newcommand{\@glsxtr@abbrlists}{} +\newcommand*{\forallabbreviationlists}[2]{% + \@for#1:=\@glsxtr@abbrlists\do{\ifdefempty{#1}{}{#2}}% +} +\newcommand*{\@glsxtr@addabbreviationlist}[1]{% + \edef\@glo@type{#1}% + \ifdefempty\@glsxtr@abbrlists + {\let\@glsxtr@abbrlists\@glo@type}% + {% + \ifdefequal\@glsxtr@abbrlists\@glo@type + {}% + {% + \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@abbrlists}{}% + {\eappto\@glsxtr@abbrlists{,\@glo@type}}% + }% + }% +} +\renewcommand*{\forallacronyms}[2]{% + \@glsxtr@base@acrcmd\forallacronyms\forallabbreviationlists + \@for#1:=\@glsacronymlists\do{\ifx#1\@empty\else#2\fi}% +} \newcommand*{\MakeAcronymsAbbreviations}{% + \@for\@gls@type:=\@glsacronymlists\do{% + \csgdef{gls@\@gls@type @entryfmt}{\glsentryfmt}% + }% + \let\@glsxtr@acronymlists\@glsacronymlists + \let\@glsacronymlists\@empty + \let\@addtoacronymlists\@gobble + \let\SetAcronymLists\@gobble + \let\@glsxtr@base@acrcmd\@@glsxtr@base@acrcmd@warn \renewcommand*{\newacronym}[4][]{% \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}% }% @@ -4127,7 +4310,7 @@ \renewcommand*{\setacronymstyle}[1]{% \PackageError{glossaries-extra}{\string\setacronymstyle{##1} unavailable. - Use \string\setabbreviationstyle\space instead. + Use \string\setabbreviationstyle[acronym]\space instead. The original acronym interface can be restored with \string\RestoreAcronyms}{}% }% @@ -4140,6 +4323,13 @@ } \MakeAcronymsAbbreviations \newcommand*{\RestoreAcronyms}{% + \let\@glsacronymlists\@glsxtr@acronymlists + \let\@addtoacronymlists\@glsxtr@org@addtoacronynlists + \let\SetAcronymLists\@glsxtr@org@setacronymlists + \let\@glsxtr@base@acrcmd\@gobbletwo + \@for\@gls@type:=\@glsacronymlists\do{% + \SetDefaultAcronymDisplayStyle{\@gls@type}% + }% \SetGenericNewAcronym \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}% \renewcommand{\acronymfont}[1]{##1}% @@ -4161,148 +4351,151 @@ \newcommand*{\glsacspacemax}{3em} \newcommand*{\@glsxtr@reg@glosslist}{} \let\@glsxtr@org@makeglossaries\makeglossaries +\providecommand{\@domakeglossaries}[1]{#1} \renewcommand*{\makeglossaries}[1][]{% - \@glsxtr@if@record@only - {% - \PackageError{glossaries-extra}{\string\makeglossaries\space - not permitted\MessageBreak with record=\@glsxtr@record@setting\space - package option}% - {You may only use \string\makeglossaries\space with - record=off or record=alsoindex options}% - }% + \@domakeglossaries {% - \ifblank{#1}% - {\@glsxtr@org@makeglossaries}% + \@glsxtr@if@record@only {% - \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex - \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space - not permitted\MessageBreak with record=alsoindex package option}% - {You may only use the hybrid \string\makeglossaries[...]\space with - record=off option}% - \else - \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% - \edef\@glsxtr@reg@glosslist{#1}% - \ifundef{\glswrite}{\newwrite\glswrite}{}% - \protected@write\@auxout{}{\string\providecommand - \string\@glsorder[1]{}} - \protected@write\@auxout{}{\string\providecommand - \string\@istfilename[1]{}} - \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% - \protected@write\@auxout{}{\string\@glsorder{\glsorder}} - \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} - \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% - \@for\@glo@type:=#1\do{% - \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% - }% - \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}}% - \let\@makeglossary\relax - \let\makeglossary\relax - \renewcommand\makeglossaries[1][]{}% - \@disable@onlypremakeg - \let\gls@checkseeallowed\relax - \renewcommand*{\@do@seeglossary}[2]{% - \glsdoifexists{##1}% - {% - \edef\@gls@label{\glsdetoklabel{##1}}% - \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {\@glsxtr@org@doseeglossary{##1}{##2}}% + \PackageError{glossaries-extra}{\string\makeglossaries\space + not permitted\MessageBreak with record=\@glsxtr@record@setting\space + package option}% + {You may only use \string\makeglossaries\space with + record=off or record=alsoindex options}% + }% + {% + \ifblank{#1}% + {\@glsxtr@org@makeglossaries}% + {% + \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex + \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space + not permitted\MessageBreak with record=alsoindex package option}% + {You may only use the hybrid \string\makeglossaries[...]\space with + record=off option}% + \else + \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}% + \edef\@glsxtr@reg@glosslist{#1}% + \ifundef{\glswrite}{\newwrite\glswrite}{}% + \protected@write\@auxout{}{\string\providecommand + \string\@glsorder[1]{}} + \protected@write\@auxout{}{\string\providecommand + \string\@istfilename[1]{}} + \protected@write\@auxout{}{\string\@istfilename{\istfilename}}% + \protected@write\@auxout{}{\string\@glsorder{\glsorder}} + \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}} + \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}% + \@for\@glo@type:=#1\do{% + \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}% + }% + \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}}% + \let\@makeglossary\@gobble + \renewcommand\makeglossaries[1][]{}% + \@disable@onlypremakeg + \let\gls@checkseeallowed\relax + \renewcommand*{\@do@seeglossary}[2]{% + \glsdoifexists{##1}% {% - \@@glsxtrwrglossmark - \protected@write\@auxout{}{% - \string\@gls@reference - {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + \edef\@gls@label{\glsdetoklabel{##1}}% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@org@doseeglossary{##1}{##2}}% + {% + \@@glsxtrwrglossmark + \protected@write\@auxout{}{% + \string\@gls@reference + {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}% + }% }% }% }% - }% - \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary - \def\@@do@@wrglossary{% - \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {\@glsxtr@@do@@wrglossary}% - {\gls@noidxglossary}% - }% - \let\warn@nomakeglossaries\relax - \def\warn@noprintglossary{% - \GlossariesWarningNoLine{No \string\printglossary\space - or \string\printglossaries\space - found.^^J(Remove \string\makeglossaries\space if you don't want - any glossaries.)^^JThis document will not have a glossary}% - }% - \renewcommand{\@gls@noref@warn}[1]{% - \edef\@gls@type{##1}% - \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% - {% - \GlossariesExtraWarning{Can't use - \string\printnoidxglossary[type={\@gls@type}] - when `\@gls@type' is listed in the optional argument of - \string\makeglossaries}% + \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary + \def\@@do@@wrglossary{% + \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {\@glsxtr@@do@@wrglossary}% + {\gls@noidxglossary}% }% - {% - \GlossariesWarning{Empty glossary for - \string\printnoidxglossary[type={##1}]. - Rerun may be required (or you may have forgotten to use - commands like \string\gls)}% + \let\warn@nomakeglossaries\relax + \def\warn@noprintglossary{% + \GlossariesWarningNoLine{No \string\printglossary\space + or \string\printglossaries\space + found.^^J(Remove \string\makeglossaries\space if you don't want + any glossaries.)^^JThis document will not have a glossary}% }% - }% - \renewcommand*{\glsdisplaynumberlist}[1]{% - \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% - {\@glsxtr@idx@displaynumberlist{##1}}% - {\@glsxtr@noidx@displaynumberlist{##1}}% - }% - \renewcommand*{\glsentrynumberlist}[1]{% - \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% - {\@glsxtr@idx@entrynumberlist{##1}}% - {\@glsxtr@noidx@entrynumberlist{##1}}% - }% - \renewcommand*{\glsnumberlistloop}[2]{% - \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% - {% - \PackageError{glossaries-extra}{\string\glsnumberlistloop\space - not available for glossary `##1'}{}% + \renewcommand{\@gls@noref@warn}[1]{% + \edef\@gls@type{##1}% + \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}% + {% + \GlossariesExtraWarning{Can't use + \string\printnoidxglossary[type={\@gls@type}] + when `\@gls@type' is listed in the optional argument of + \string\makeglossaries}% + }% + {% + \GlossariesWarning{Empty glossary for + \string\printnoidxglossary[type={##1}]. + Rerun may be required (or you may have forgotten to use + commands like \string\gls)}% + }% }% - {\@glsxtr@noidx@numberlistloop{##1}{##2}}% - }% - \renewcommand*{\glsprestandardsort}[3]{% - \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% - {% - \glsdosanitizesort + \renewcommand*{\glsdisplaynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@displaynumberlist{##1}}% + {\@glsxtr@noidx@displaynumberlist{##1}}% }% - {% - \ifglssanitizesort - \@gls@noidx@sanitizesort - \else - \@gls@noidx@nosanitizesort - \fi + \renewcommand*{\glsentrynumberlist}[1]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {\@glsxtr@idx@entrynumberlist{##1}}% + {\@glsxtr@noidx@entrynumberlist{##1}}% }% - }% - \renewcommand*\new@glossaryentry[2]{% - \PackageError{glossaries-extra}{Glossary entries must be defined - in the preamble\MessageBreak when you use the optional argument - of \string\makeglossaries}{Either move your definitions to the - preamble or don't use the optional argument of - \string\makeglossaries}% - }% - \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey - \renewcommand*{\@printgloss@setsort}{% - \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% - type=\glsdefaulttype,\@end@glsxtr@gettype - \def\@glo@sorttype{\@glo@default@sorttype}% - }% - \ifglsautomake - \renewcommand*{\@gls@doautomake}{% - \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% - \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% + \renewcommand*{\glsnumberlistloop}[2]{% + \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}% + {% + \PackageError{glossaries-extra}{\string\glsnumberlistloop\space + not available for glossary `##1'}{}% }% + {\@glsxtr@noidx@numberlistloop{##1}{##2}}% }% - \fi - \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% - \fi + \renewcommand*{\glsprestandardsort}[3]{% + \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}% + {% + \glsdosanitizesort + }% + {% + \ifglssanitizesort + \@gls@noidx@sanitizesort + \else + \@gls@noidx@nosanitizesort + \fi + }% + }% + \renewcommand*\new@glossaryentry[2]{% + \PackageError{glossaries-extra}{Glossary entries must be defined + in the preamble\MessageBreak when you use the optional argument + of \string\makeglossaries}{Either move your definitions to the + preamble or don't use the optional argument of + \string\makeglossaries}% + }% + \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey + \renewcommand*{\@printgloss@setsort}{% + \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,% + type=\glsdefaulttype,\@end@glsxtr@gettype + \def\@glo@sorttype{\@glo@default@sorttype}% + }% + \ifglsautomake + \renewcommand*{\@gls@doautomake}{% + \@for\@gls@type:=\@glsxtr@reg@glosslist\do{% + \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}% + }% + }% + \fi + \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}% + \fi + }% }% }% } @@ -4990,6 +5183,14 @@ \let\@gls@doautomake\relax \fi \fi + \@glsxtr@if@record@only + {\ifdefstring{\glsorder}{letter}% + {\GlossariesExtraWarningNoLine{Package option `order=letter' isn't + supported with `record=\@glsxtr@record@setting'. Use `break-at=none' + resource option instead}}% + {}% + }% + {}% } \newcommand*{\@gls@doautomake@err}{% \PackageError{glossaries}{You must use @@ -5848,21 +6049,37 @@ defined}{}% \define@key{glsxtrabbrv}{textaccess}{% \def\@gls@textaccess{#1}% } + \define@key{glsxtrabbrv}{pluralaccess}{% + \def\@gls@pluralaccess{#1}% + } \define@key{glsxtrabbrv}{firstaccess}{% \def\@gls@firstaccess{#1}% } + \define@key{glsxtrabbrv}{firstpluralaccess}{% + \def\@gls@firstpluralaccess{#1}% + } \define@key{glsxtrabbrv}{shortaccess}{% \def\@gls@shortaccess{#1}% } \define@key{glsxtrabbrv}{shortpluralaccess}{% \def\@gls@shortaccesspl{#1}% } + \define@key{glsxtrabbrv}{longaccess}{% + \def\@gls@longaccess{#1}% + } + \define@key{glsxtrabbrv}{shortlonglaccess}{% + \def\@gls@longaccesspl{#1}% + } \newcommand*{\@gls@initaccesskeys}{% \def\@gls@nameaccess{}% \def\@gls@textaccess{}% + \def\@gls@pluralaccess{}% \def\@gls@firstaccess{}% + \def\@gls@firstpluralaccess{}% \def\@gls@shortaccess{}% \def\@gls@shortaccesspl{}% + \def\@gls@longaccess{}% + \def\@gls@longaccesspl{}% } \newcommand*{\@gls@ifaccessattribute@set}[3]{% \glsifcategoryattribute{\glscategorylabel}{access#1}{true}% @@ -5877,27 +6094,76 @@ defined}{}% }% }% } - \newcommand{\@gls@setup@default@short@access}[1]{% + \def\glsdefaultshortaccess#1#2{#1 (#2)} + \newcommand{\glsxtrassignactualsetup}{% + \let\@\empty + \let\emph\@firstofone + \let\textbf\@firstofone + \let\textmd\@firstofone + \let\textit\@firstofone + \let\textsl\@firstofone + \let\textsc\@firstofone + \let\textrm\@firstofone + \let\textsf\@firstofone + \let\texttt\@firstofone + } + \ifdef\pdfstringdef + { + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \pdfstringdef\@gls@actualshort{\glsxtrorgshort}% + \pdfstringdef\@gls@actuallong{\glsxtrorglong}% + \pdfstringdef\@gls@actualshortpl{\@gls@shortpl}% + \pdfstringdef\@gls@actuallongpl{\@gls@longpl}% + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\expandonce\@gls@actualshort}% + \def\noexpand\@gls@actuallong{\expandonce\@gls@actuallong}% + \def\noexpand\@gls@actualshortpl{\expandonce\@gls@actualshortpl}% + \def\noexpand\@gls@actuallongpl{\expandonce\@gls@actuallongpl}% + }% + \@gls@tmp + } + } + { + \newcommand{\@gls@assign@actual}{% + \begingroup + \glsxtrassignactualsetup + \protected@edef\@gls@tmp{\endgroup + \def\noexpand\@gls@actualshort{\glsxtrorgshort}% + \def\noexpand\@gls@actuallong{\glsxtrorglong}% + \def\noexpand\@gls@actualshortpl{\@gls@shortpl}% + \def\noexpand\@gls@actuallongpl{\@gls@longpl}% + }% + \@gls@tmp + } + } + \newcommand{\@gls@setup@default@access}{% + \@gls@assign@actual \ifdefempty\@gls@shortaccess {% - \glsifcategoryattribute{\glscategorylabel}{accessinsertdots}{true}% + \@gls@ifaccessattribute@set{insertdots}% {% - \@glsxtr@insertdots\@gls@shortaccess{#1}% - \eappto\ExtraCustomAbbreviationFields{% - shortaccess={\expandonce\@gls@shortaccess},}% + \expandafter\@glsxtr@insertdots\expandafter\@gls@actualshort\expandafter + {\@gls@actualshort}% }% {}% - }% - {}% - \ifdefempty\@gls@shortaccess - {}% - {% + \ifdefempty\@gls@longaccess + {% + \edef\@gls@shortaccess{\glsdefaultshortaccess + {\expandonce\@gls@actuallong}{\expandonce\@gls@actualshort}}% + }% + {% + \edef\@gls@shortaccess{\glsdefaultshortaccess + {\expandonce\@gls@longaccess}{\expandonce\@gls@actualshort}}% + }% + \eappto\ExtraCustomAbbreviationFields{shortaccess={\@gls@shortaccess},}% \ifdefempty\@gls@shortaccesspl {% \@gls@ifaccessattribute@set{aposplural}% {% \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% - \@gls@shortaccess'\abbrvpluralsuffix}% + \@gls@actualshort'\glsxtrabbrvpluralsuffix}% }% {% \@gls@ifaccessattribute@set{noshortplural}% @@ -5905,26 +6171,32 @@ defined}{}% \let\@gls@shortaccesspl\@gls@shortaccess }% {% - \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{% - \@gls@shortaccess\abbrvpluralsuffix}% + \let\@gls@shortaccesspl\@gls@actualshortpl }% }% - \eappto\ExtraCustomAbbreviationFields{% - shortpluralaccess={\expandonce\@gls@shortaccesspl},}% + \ifdefempty\@gls@longaccesspl + {% + \edef\@gls@shortaccesspl{\glsdefaultshortaccess + {\expandonce\@gls@actuallongpl}{\expandonce\@gls@actualshortpl}}% }% + {% + \edef\@gls@shortaccesspl{\glsdefaultshortaccess + {\expandonce\@gls@longaccesspl}{\expandonce\@gls@actualshort}}% + }% + \eappto\ExtraCustomAbbreviationFields{shortpluralaccess={\@gls@shortaccesspl},}% + }% + {}% + }% + {% + \ifdefempty\@gls@shortaccesspl + {\let\@gls@shortaccesspl\@gls@shortaccess}% {}% }% \ifdefempty\@gls@nameaccess {% \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}% {% - \ifdefempty\@gls@shortaccess - {}% - {% - \eappto\ExtraCustomAbbreviationFields{% - access={\expandonce\@gls@shortaccess},% - }% - }% + \eappto\ExtraCustomAbbreviationFields{access={\@gls@shortaccess},}% }% {}% }% @@ -5933,12 +6205,17 @@ defined}{}% {% \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% {% - \ifdefempty\@gls@shortaccess - {}% - {% - \eappto\ExtraCustomAbbreviationFields{% - textaccess={\expandonce\@gls@shortaccess},% - }% + \eappto\ExtraCustomAbbreviationFields{textaccess={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@pluralaccess + {% + \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{% + pluralaccess={\@gls@shortaccesspl},% }% }% {}% @@ -5948,18 +6225,62 @@ defined}{}% {% \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% {% - \ifdefempty\@gls@shortaccess - {}% - {% - \eappto\ExtraCustomAbbreviationFields{% - firstaccess={\expandonce\@gls@shortaccess},% - }% + \eappto\ExtraCustomAbbreviationFields{firstaccess={\@gls@shortaccess},}% + }% + {}% + }% + {}% + \ifdefempty\@gls@firstpluralaccess + {% + \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}% + {% + \eappto\ExtraCustomAbbreviationFields{% + firstpluralaccess={\@gls@shortaccesspl},% }% }% {}% }% {}% } + \newcommand*{\glsxtrprovideaccsuppcmd}[2]{% + \ifcsundef{glsxtr#1#2accsupp}% + {\csdef{glsxtr#1#2accsupp}{\glsshortaccsupp}}% + {}% + } + \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glssetcategoryattribute{#1}{firstshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + \glsxtrprovideaccsuppcmd{#1}{first}% + \glsxtrprovideaccsuppcmd{#1}{firstpl}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } + \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } + \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } + \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{% + \glssetcategoryattribute{#1}{nameshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{name}% + } + \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{% + \glssetcategoryattribute{#1}{firstshortaccess}{true}% + \glssetcategoryattribute{#1}{textshortaccess}{true}% + \glsxtrprovideaccsuppcmd{#1}{first}% + \glsxtrprovideaccsuppcmd{#1}{firstpl}% + \glsxtrprovideaccsuppcmd{#1}{text}% + \glsxtrprovideaccsuppcmd{#1}{plural}% + } } { \newcommand*{\glsaccessname}[1]{\glsentryname{#1}} @@ -6015,7 +6336,12 @@ defined}{}% \newcommand*{\GLSaccesslongpl}[1]{% \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}} \newcommand*{\@gls@initaccesskeys}{} - \newcommand{\@gls@setup@default@short@access}[1]{}% + \newcommand{\@gls@setup@default@access}{} + \newcommand*{\glsxtrAccSuppAbbrSetNoLongAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetFirstLongAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetTextShortAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetNameShortAttrs}[1]{} + \newcommand*{\glsxtrAccSuppAbbrSetNameLongAttrs}[1]{} } \glsaddstoragekey{category}{general}{\glscategory} \newcommand{\glsifcategory}[4]{% @@ -6640,11 +6966,38 @@ defined}{}% \Glsaccessdesc{#1}% }% } -\renewcommand*{\glossentrysymbol}[1]{% +\ifdef\texorpdfstring +{ + \renewcommand*{\glossentrysymbol}[1]{% + \texorpdfstring{\@glossentrysymbol{#1}}{\glsentrypdfsymbol{#1}}% + } +} +{ + \renewcommand*{\glossentrysymbol}[1]{\@glossentrysymbol{#1}} +} +\newcommand{\glsentrypdfsymbol}[1]{\glsentrysymbol{#1}} +\newrobustcmd*{\@glossentrysymbol}[1]{% \glsdoifexistsorwarn{#1}% {% - \glssetabbrvfmt{\glscategory{#1}}% - \glsaccesssymbol{#1}% + \begingroup + \glssetabbrvfmt{\glscategory{#1}}% + \glshasattribute{#1}{glosssymbolfont}% + {% + \edef\@glsxtr@attrval{\glsgetattribute{#1}{glosssymbolfont}}% + \ifcsdef{\@glsxtr@attrval}% + {% + \letcs{\@glsxtr@glosssymbolfont}{\@glsxtr@attrval}% + }% + {% + \GlossariesExtraWarning{Unknown control sequence name + `\@glsxtr@attrval' supplied in glosssymbolfont attribute + for entry `#1'. Ignoring}% + \let\@glsxtr@glosssymbolfont\@firstofone + }% + }% + {\let\@glsxtr@glosssymbolfont\@firstofone}% + \@glsxtr@glosssymbolfont{\glsaccesssymbol{#1}}% + \endgroup }% } \renewcommand*{\Glossentrysymbol}[1]{% @@ -6874,14 +7227,6 @@ defined}{}% \newcommand{\@glsxtr@swaptwo}[2]{#2#1} \define@key{glsxtrabbrv}{category}{% \edef\glscategorylabel{#1}% - \ifcsdef{@glsabbrv@current@#1}% - {% - \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle - \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo - \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@#1\endcsname}% - \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep - }% - {}% } \define@key{glsxtrabbrv}{shortplural}{% \def\@gls@shortpl{#1}% @@ -6938,8 +7283,17 @@ defined}{}% \def\ExtraCustomAbbreviationFields{}% \@gls@initaccesskeys \def\glscategorylabel{abbreviation}% - \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}% + \ifcsdef{@glsabbrv@current@\glscategorylabel}% + {% + \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle + \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo + \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@\glscategorylabel\endcsname}% + \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep + }% + {% + \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}% + }% \def\@gls@longpl{#4\glspluralsuffix}% \let\@gls@default@longpl\@gls@longpl \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% @@ -6959,7 +7313,7 @@ defined}{}% \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}% {% \@glsxtr@insertdots\@gls@short{#3}% - \expandafter\glsshorttok\expandafter{\@gls@short\spacefactor1000 \relax}% + \appto\@gls@short{\@}% }% {\def\@gls@short{#3}}% }% @@ -6981,6 +7335,8 @@ defined}{}% \expandafter\glsshorttok\expandafter{\@gls@short}% \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}% \setkeys*{glsxtrabbrv}[category]{#1}% + \let\@gls@org@longpl\@gls@longpl + \let\@gls@org@shortpl\@gls@shortpl \ifx\@gls@default@longpl\@gls@longpl \else \glsifcategoryattribute{\glscategorylabel}{markwords}{true}% @@ -6992,7 +7348,7 @@ defined}{}% \fi \expandafter\glsshortpltok\expandafter{\@gls@shortpl}% \expandafter\glslongpltok\expandafter{\@gls@longpl}% - \@gls@setup@default@short@access{#3}% + \@gls@setup@default@access \newabbreviationhook \protected@edef\@do@newglossaryentry{% \noexpand\newglossaryentry{\the\glslabeltok}% @@ -7010,6 +7366,7 @@ defined}{}% }% }% \@do@newglossaryentry + \@glsxtr@addabbreviationlist{\glsentrytype{\the\glslabeltok}}% \GlsXtrPostNewAbbreviation } \newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{} @@ -7556,6 +7913,7 @@ defined}{}% }% \@glsxtr@dostylewarn \csdef{@glsabbrv@current@#1}{#2}% + \edef\glscategorylabel{#1}% \glsxtr@applyabbrvstyle{#2}% }% }% @@ -7648,6 +8006,7 @@ defined}{}% } \newabbreviationstyle{long-short}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -7658,6 +8017,7 @@ defined}{}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -7705,6 +8065,7 @@ defined}{}% } \newabbreviationstyle{long-short-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -7733,6 +8094,7 @@ defined}{}% } \newabbreviationstyle{short-long}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -7743,6 +8105,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -7788,6 +8151,7 @@ defined}{}% } \newabbreviationstyle{short-long-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -7819,6 +8183,7 @@ defined}{}% } \newabbreviationstyle{footnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -7829,6 +8194,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% @@ -7891,14 +8257,49 @@ defined}{}% }% } \letabbreviationstyle{short-footnote}{footnote} +\newcommand*{\glsxtrfootnotedescname}{% + \protect\glsabbrvfont{\the\glsshorttok}% + \protect\glsxtrfullsep{\the\glslabeltok}% + \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}% +} +\newcommand*{\glsxtrfootnotedescsort}{\the\glsshorttok} +\newabbreviationstyle{short-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{footnote}% +} +\letabbreviationstyle{footnote-desc}{short-footnote-desc} \newabbreviationstyle{postfootnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% @@ -7963,16 +8364,50 @@ defined}{}% }% } \letabbreviationstyle{short-postfootnote}{postfootnote} -\newcommand*{\glsxtrshortnolongname}{% - \protect\glsabbrvfont{\the\glsshorttok}% -} -\newabbreviationstyle{short}% +\newabbreviationstyle{short-postfootnote-desc}% {% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% - name={\glsxtrshortnolongname}, - sort={\the\glsshorttok}, - first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, - firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},% + text={\protect\glsabbrvfont{\the\glsshorttok}},% + plural={\protect\glsabbrvfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{postfootnote}% +} +\letabbreviationstyle{postfootnote-desc}{short-postfootnote-desc} +\newcommand*{\glsxtrshortnolongname}{% + \protect\glsabbrvfont{\the\glsshorttok}% +} +\newabbreviationstyle{short}% +{% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrshortnolongname}, + sort={\the\glsshorttok}, + first={\protect\glsfirstabbrvfont{\the\glsshorttok}}, + firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}}, text={\protect\glsabbrvfont{\the\glsshorttok}}, plural={\protect\glsabbrvfont{\the\glsshortpltok}}, description={\the\glslongtok}}% @@ -8049,6 +8484,7 @@ defined}{}% } \newabbreviationstyle{short-desc}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -8257,6 +8693,7 @@ defined}{}% } \newabbreviationstyle{long}% {% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -8291,9 +8728,10 @@ defined}{}% \newcommand*{\glsabbrvscfont}{\glsxtrscfont} \newcommand*{\glsxtrfirstscfont}[1]{\glsabbrvscfont{#1}} \newcommand*{\glsfirstabbrvscfont}{\glsxtrfirstscfont} -\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}} +\newcommand*{\glsxtrscsuffix}{\protect\glstextup{\glsxtrabbrvpluralsuffix}} \newabbreviationstyle{long-short-sc}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -8303,6 +8741,7 @@ defined}{}% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -8314,7 +8753,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -8343,6 +8782,7 @@ defined}{}% } \newabbreviationstyle{long-short-sc-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -8368,6 +8808,7 @@ defined}{}% } \newabbreviationstyle{short-sc-long}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -8378,6 +8819,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -8388,7 +8830,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -8418,6 +8860,7 @@ defined}{}% } \newabbreviationstyle{short-sc-long-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -8443,6 +8886,7 @@ defined}{}% } \newabbreviationstyle{short-sc}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -8455,7 +8899,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -8504,6 +8948,7 @@ defined}{}% \letabbreviationstyle{short-sc-nolong}{short-sc} \newabbreviationstyle{short-sc-desc}% {% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -8515,7 +8960,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -8604,7 +9049,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -8668,7 +9113,7 @@ defined}{}% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -8729,6 +9174,7 @@ defined}{}% \@glsxtr@deprecated@abbrstyle{long-desc-sc}{long-noshort-sc-desc} \newabbreviationstyle{short-sc-footnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -8739,6 +9185,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% @@ -8750,7 +9197,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -8801,14 +9248,42 @@ defined}{}% }% } \@glsxtr@deprecated@abbrstyle{footnote-sc}{short-sc-footnote} +\newabbreviationstyle{short-sc-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-footnote}% +} \newabbreviationstyle{short-sc-postfootnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% @@ -8830,7 +9305,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrscsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -8873,6 +9348,38 @@ defined}{}% }% } \@glsxtr@deprecated@abbrstyle{postfootnote-sc}{short-sc-postfootnote} +\newabbreviationstyle{short-sc-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},% + text={\protect\glsabbrvscfont{\the\glsshorttok}},% + plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sc-postfootnote}% +} \newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}} \newcommand*{\glsabbrvsmfont}{\glsxtrsmfont} \newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}} @@ -8880,6 +9387,7 @@ defined}{}% \newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix} \newabbreviationstyle{long-short-sm}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -8889,6 +9397,7 @@ defined}{}% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -8902,7 +9411,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% @@ -8929,6 +9438,7 @@ defined}{}% } \newabbreviationstyle{long-short-sm-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -8954,6 +9464,7 @@ defined}{}% } \newabbreviationstyle{short-sm-long}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -8964,6 +9475,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -8976,7 +9488,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% @@ -9004,6 +9516,7 @@ defined}{}% } \newabbreviationstyle{short-sm-long-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -9029,6 +9542,7 @@ defined}{}% } \newabbreviationstyle{short-sm}% {% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -9043,7 +9557,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% @@ -9090,6 +9604,7 @@ defined}{}% \letabbreviationstyle{short-sm-nolong}{short-sm} \newabbreviationstyle{short-sm-desc}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -9103,7 +9618,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrinlinefullformat}[2]{% @@ -9177,6 +9692,7 @@ defined}{}% } \newabbreviationstyle{long-noshort-sm}% {% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -9192,7 +9708,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% @@ -9256,7 +9772,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrsubsequentfmt}[2]{% @@ -9315,6 +9831,7 @@ defined}{}% \@glsxtr@deprecated@abbrstyle{long-desc-sm}{long-noshort-sm-desc} \newabbreviationstyle{short-sm-footnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -9325,6 +9842,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% @@ -9338,7 +9856,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% @@ -9387,14 +9905,42 @@ defined}{}% }% } \@glsxtr@deprecated@abbrstyle{footnote-sm}{short-sm-footnote} +\newabbreviationstyle{short-sm-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-footnote}% +} \newabbreviationstyle{short-sm-postfootnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% @@ -9418,7 +9964,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtrsmsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% @@ -9459,6 +10005,38 @@ defined}{}% }% } \@glsxtr@deprecated@abbrstyle{postfootnote-sm}{short-sm-postfootnote} +\newabbreviationstyle{short-sm-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},% + text={\protect\glsabbrvsmfont{\the\glsshorttok}},% + plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-sm-postfootnote}% +} \newcommand*{\glsabbrvemfont}[1]{\emph{#1}}% \newcommand*{\glsfirstabbrvemfont}[1]{\glsabbrvemfont{#1}}% \newcommand*{\glsxtremsuffix}{\glsxtrabbrvpluralsuffix} @@ -9466,6 +10044,7 @@ defined}{}% \newcommand*{\glslongemfont}[1]{\emph{#1}}% \newabbreviationstyle{long-short-em}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -9475,6 +10054,7 @@ defined}{}% firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% description={\the\glslongtok}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -9488,7 +10068,7 @@ defined}{}% {% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}% \renewcommand*{\glsxtrfullformat}[2]{% @@ -9515,6 +10095,7 @@ defined}{}% } \newabbreviationstyle{long-short-em-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -9540,6 +10121,7 @@ defined}{}% } \newabbreviationstyle{long-em-short-em}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -9549,6 +10131,7 @@ defined}{}% firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}},% description={\protect\glslongemfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -9560,7 +10143,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -9589,6 +10172,7 @@ defined}{}% } \newabbreviationstyle{long-em-short-em-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -9614,6 +10198,7 @@ defined}{}% } \newabbreviationstyle{short-em-long}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -9624,6 +10209,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -9634,7 +10220,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -9664,6 +10250,7 @@ defined}{}% } \newabbreviationstyle{short-em-long-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -9689,6 +10276,7 @@ defined}{}% } \newabbreviationstyle{short-em-long-em}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -9699,6 +10287,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -9709,7 +10298,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -9739,6 +10328,7 @@ defined}{}% } \newabbreviationstyle{short-em-long-em-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname},% sort={\glsxtrshortlongdescsort},% @@ -9764,6 +10354,7 @@ defined}{}% } \newabbreviationstyle{short-em}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortnolongname}, sort={\the\glsshorttok}, @@ -9776,7 +10367,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -9825,6 +10416,7 @@ defined}{}% \letabbreviationstyle{short-em-nolong}{short-em} \newabbreviationstyle{short-em-desc}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortdescname}, sort={\the\glsshorttok}, @@ -9836,7 +10428,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -9912,6 +10504,7 @@ defined}{}% } \newabbreviationstyle{long-noshort-em}% {% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -9925,7 +10518,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -9986,6 +10579,7 @@ defined}{}% \@glsxtr@deprecated@abbrstyle{long-em}{long-noshort-em} \newabbreviationstyle{long-em-noshort-em}% {% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -9999,7 +10593,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -10059,6 +10653,7 @@ defined}{}% } \newabbreviationstyle{long-em-noshort-em-noreg}% {% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -10076,7 +10671,7 @@ defined}{}% \GlsXtrUseAbbrStyleSetup{long-noshort-desc}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}% @@ -10149,7 +10744,7 @@ defined}{}% \glssetattribute{\the\glslabeltok}{regular}{true}}% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}% @@ -10223,6 +10818,7 @@ defined}{}% } \newabbreviationstyle{short-em-footnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, @@ -10233,6 +10829,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% \protect\glsxtrabbrvfootnote{\the\glslabeltok}% {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% @@ -10244,7 +10841,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -10295,14 +10892,42 @@ defined}{}% }% } \@glsxtr@deprecated@abbrstyle{footnote-em}{short-em-footnote} +\newabbreviationstyle{short-em-footnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}% + \protect\glsxtrabbrvfootnote{\the\glslabeltok}% + {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-footnote}% +} \newabbreviationstyle{short-em-postfootnote}% {% + \glsxtrAccSuppAbbrSetNoLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrfootnotename}, sort={\the\glsshorttok}, description={\the\glslongtok},% first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \csdef{glsxtrpostlink\glscategorylabel}{% @@ -10324,7 +10949,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtremsuffix}% \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}% @@ -10367,6 +10992,38 @@ defined}{}% }% } \@glsxtr@deprecated@abbrstyle{postfootnote-em}{short-em-postfootnote} +\newabbreviationstyle{short-em-postfootnote-desc}% +{% + \glsxtrAccSuppAbbrSetNameLongAttrs\glscategorylabel + \renewcommand*{\CustomAbbreviationFields}{% + name={\glsxtrfootnotedescname}, + sort={\glsxtrfootnotedescsort}, + first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},% + firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},% + text={\protect\glsabbrvemfont{\the\glsshorttok}},% + plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}% + \renewcommand*{\GlsXtrPostNewAbbreviation}{% + \csdef{glsxtrpostlink\glscategorylabel}{% + \glsxtrifwasfirstuse + {% + \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}% + {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}% + }% + {}% + }% + \glshasattribute{\the\glslabeltok}{regular}% + {% + \glssetattribute{\the\glslabeltok}{regular}{false}% + }% + {}% + }% + \renewcommand*{\glsxtrsetupfulldefs}{% + \let\glsxtrifwasfirstuse\@secondoftwo + }% +}% +{% + \GlsXtrUseAbbrStyleFmts{short-em-postfootnote}% +} \newcommand*{\glsxtruserfield}{useri} \ifdef\glscurrentfieldvalue { @@ -10391,6 +11048,7 @@ defined}{}% \newcommand*{\glsuserdescription}[2]{\glslonguserfont{#1}} \newabbreviationstyle{long-short-user}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -10400,6 +11058,7 @@ defined}{}% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}% \protect\glsxtruserparen {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% @@ -10440,11 +11099,13 @@ defined}{}% } \newabbreviationstyle{long-postshort-user}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% @@ -10515,6 +11176,7 @@ defined}{}% } \newabbreviationstyle{long-postshort-user-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortuserdescname}, sort={\the\glslongtok}, @@ -10545,11 +11207,13 @@ defined}{}% } \newabbreviationstyle{short-postlong-user}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonguserfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},% description={\protect\glsuserdescription{\the\glslongtok}% {\the\glslabeltok}}}% @@ -10621,6 +11285,7 @@ defined}{}% } \newabbreviationstyle{short-postlong-user-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlonguserdescname}, sort={\the\glsshorttok}, @@ -10651,6 +11316,7 @@ defined}{}% } \newabbreviationstyle{long-short-user-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortuserdescname}, sort={\glsxtrlongshortdescsort},% @@ -10676,6 +11342,7 @@ defined}{}% } \newabbreviationstyle{short-long-user}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -10687,6 +11354,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}% \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}% {\the\glslabeltok}},% + text={\protect\glsabbrvuserfont{\the\glsshorttok}},% plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% \glshasattribute{\the\glslabeltok}{regular}% @@ -10725,6 +11393,7 @@ defined}{}% } \newabbreviationstyle{short-long-user-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlonguserdescname}, sort={\glsxtrshortlongdescsort},% @@ -10776,6 +11445,7 @@ defined}{}% \newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix} \newabbreviationstyle{long-hyphen-short-hyphen}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, @@ -10785,6 +11455,7 @@ defined}{}% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -10818,6 +11489,7 @@ defined}{}% } \newabbreviationstyle{long-hyphen-short-hyphen-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort}, @@ -10855,6 +11527,7 @@ defined}{}% sort={\expandonce\glsxtrorglong}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glslonghyphenfont{\the\glslongtok}},% plural={\protect\glslonghyphenfont{\the\glslongpltok}}% }% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -10919,6 +11592,7 @@ defined}{}% } \newabbreviationstyle{long-hyphen-noshort-noreg}% {% + \glsxtrAccSuppAbbrSetNameShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongnoshortname}, sort={\the\glsshorttok}, @@ -10962,11 +11636,13 @@ defined}{}% } \newabbreviationstyle{long-hyphen-postshort-hyphen}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortname}, sort={\the\glsshorttok}, first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},% firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -11039,6 +11715,7 @@ defined}{}% } \newabbreviationstyle{long-hyphen-postshort-hyphen-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrlongshortdescname}, sort={\glsxtrlongshortdescsort},% @@ -11079,6 +11756,7 @@ defined}{}% } \newabbreviationstyle{short-hyphen-long-hyphen}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, @@ -11088,6 +11766,7 @@ defined}{}% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}% \protect\glsxtrfullsep{\the\glslabeltok}% \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -11121,6 +11800,7 @@ defined}{}% } \newabbreviationstyle{short-hyphen-long-hyphen-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort}, @@ -11163,11 +11843,13 @@ defined}{}% } \newabbreviationstyle{short-hyphen-postlong-hyphen}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongname}, sort={\the\glsshorttok}, first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},% firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},% + text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},% plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},% description={\protect\glslonghyphenfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -11240,6 +11922,7 @@ defined}{}% } \newabbreviationstyle{short-hyphen-postlong-hyphen-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtrshortlongdescname}, sort={\glsxtrshortlongdescsort},% @@ -11278,11 +11961,13 @@ defined}{}% } \newabbreviationstyle{long-only-short-only}% {% + \glsxtrAccSuppAbbrSetFirstLongAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlyname}, sort={\the\glsshorttok}, first={\protect\glsfirstlongonlyfont{\the\glslongtok}},% firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},% + text={\protect\glsabbrvonlyfont{\the\glsshorttok}},% plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},% description={\protect\glslongonlyfont{\the\glslongtok}}}% \renewcommand*{\GlsXtrPostNewAbbreviation}{% @@ -11294,7 +11979,7 @@ defined}{}% }% }% {% - \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtronlysuffix}% + \renewcommand*{\abbrvpluralsuffix}{\glsxtronlysuffix}% \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}% \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}% \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}% @@ -11346,6 +12031,7 @@ defined}{}% } \newabbreviationstyle{long-only-short-only-desc}% {% + \glsxtrAccSuppAbbrSetTextShortAttrs\glscategorylabel \renewcommand*{\CustomAbbreviationFields}{% name={\glsxtronlydescname}, sort={\glsxtronlydescsort},% @@ -11532,6 +12218,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitleshort}[1]{% \Glsxtrshort[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitleshort}[1]{% + \GLSxtrshort[noindex,hyper=false]{#1}[]% +} \newcommand*{\Glsxtrheadshortpl}[1]{% \protect\NoCaseChange {% @@ -11547,6 +12236,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitleshortpl}[1]{% \Glsxtrshortpl[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitleshortpl}[1]{% + \GLSxtrshortpl[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadname}[1]{% \protect\NoCaseChange {% @@ -11577,6 +12269,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlename}[1]{% \Glsname[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlename}[1]{% + \GLSname[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadtext}[1]{% \protect\NoCaseChange {% @@ -11607,6 +12302,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitletext}[1]{% \Glstext[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitletext}[1]{% + \GLStext[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadplural}[1]{% \protect\NoCaseChange {% @@ -11637,6 +12335,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitleplural}[1]{% \Glsplural[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitleplural}[1]{% + \GLSplural[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadfirst}[1]{% \protect\NoCaseChange {% @@ -11667,6 +12368,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlefirst}[1]{% \Glsfirst[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlefirst}[1]{% + \GLSfirst[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadfirstplural}[1]{% \protect\NoCaseChange {% @@ -11697,6 +12401,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlefirstplural}[1]{% \Glsfirstplural[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlefirstplural}[1]{% + \GLSfirstplural[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadlong}[1]{% \protect\NoCaseChange {% @@ -11742,6 +12449,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlelong}[1]{% \Glsxtrlong[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlelong}[1]{% + \GLSxtrlong[noindex,hyper=false]{#1}[]% +} \newcommand*{\Glsxtrheadlongpl}[1]{% \protect\NoCaseChange {% @@ -11757,6 +12467,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlelongpl}[1]{% \Glsxtrlongpl[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlelongpl}[1]{% + \GLSxtrlongpl[noindex,hyper=false]{#1}[]% +} \newcommand*{\glsxtrheadfull}[1]{% \protect\NoCaseChange {% @@ -11802,6 +12515,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlefull}[1]{% \Glsxtrfull[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlefull}[1]{% + \GLSxtrfull[noindex,hyper=false]{#1}[]% +} \newcommand*{\Glsxtrheadfullpl}[1]{% \protect\NoCaseChange {% @@ -11817,6 +12533,9 @@ defined}{}% \newrobustcmd*{\Glsxtrtitlefullpl}[1]{% \Glsxtrfullpl[noindex,hyper=false]{#1}[]% } +\newrobustcmd*{\GLSxtrtitlefullpl}[1]{% + \GLSxtrfullpl[noindex,hyper=false]{#1}[]% +} \ifdef\texorpdfstring { \newcommand*{\glsfmtshort}[1]{% @@ -11890,6 +12609,18 @@ defined}{}% \Glsxtrtitlename{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtname}[1]{% + \texorpdfstring + {\GLSxtrtitlename{#1}}% + {\glsentryname{#1}}% + } +} +{ + \newcommand*{\GLSfmtname}[1]{% + \GLSxtrtitlename{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmttext}[1]{% \texorpdfstring @@ -11914,6 +12645,18 @@ defined}{}% \Glsxtrtitletext{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmttext}[1]{% + \texorpdfstring + {\GLSxtrtitletext{#1}}% + {\glsentrytext{#1}}% + } +} +{ + \newcommand*{\GLSfmttext}[1]{% + \GLSxtrtitletext{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmtplural}[1]{% \texorpdfstring @@ -11938,6 +12681,18 @@ defined}{}% \Glsxtrtitleplural{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtplural}[1]{% + \texorpdfstring + {\GLSxtrtitleplural{#1}}% + {\glsentryplural{#1}}% + } +} +{ + \newcommand*{\GLSfmtplural}[1]{% + \GLSxtrtitleplural{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmtfirst}[1]{% \texorpdfstring @@ -11962,6 +12717,18 @@ defined}{}% \Glsxtrtitlefirst{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfirst}[1]{% + \texorpdfstring + {\GLSxtrtitlefirst{#1}}% + {\glsentryfirst{#1}}% + } +} +{ + \newcommand*{\GLSfmtfirst}[1]{% + \Glsxtrtitlefirst{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmtfirstpl}[1]{% \texorpdfstring @@ -11986,6 +12753,18 @@ defined}{}% \Glsxtrtitlefirstplural{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfirstpl}[1]{% + \texorpdfstring + {\GLSxtrtitlefirstplural{#1}}% + {\glsentryfirstplural{#1}}% + } +} +{ + \newcommand*{\GLSfmtfirstpl}[1]{% + \GLSxtrtitlefirstplural{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmtlong}[1]{% \texorpdfstring @@ -12010,6 +12789,18 @@ defined}{}% \Glsxtrtitlelong{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtlong}[1]{% + \texorpdfstring + {\GLSxtrtitlelong{#1}}% + {\glsentrylong{#1}}% + } +} +{ + \newcommand*{\GLSfmtlong}[1]{% + \GLSxtrtitlelong{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmtlongpl}[1]{% \texorpdfstring @@ -12034,11 +12825,25 @@ defined}{}% \Glsxtrtitlelongpl{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtlongpl}[1]{% + \texorpdfstring + {\GLSxtrtitlelongpl{#1}}% + {\glsentrylongpl{#1}}% + } +} +{ + \newcommand*{\GLSfmtlongpl}[1]{% + \GLSxtrtitlelongpl{#1}} +} +\newcommand*{\glspdffmtfull}[1]{\glsentrylong{#1} (\glsentryshort{#1})}% +\newcommand*{\glspdffmtfullpl}[1]{\glsentrylongpl{#1} (\glsentryshortpl{#1})}% +\ifdef\texorpdfstring { \newcommand*{\glsfmtfull}[1]{% \texorpdfstring {\glsxtrtitlefull{#1}}% - {\glsxtrinlinefullformat{#1}{}}% + {\glspdffmtfull{#1}}% } } { @@ -12050,7 +12855,7 @@ defined}{}% \newcommand*{\Glsfmtfull}[1]{% \texorpdfstring {\Glsxtrtitlefull{#1}}% - {\Glsxtrinlinefullformat{#1}{}}% + {\glspdffmtfull{#1}{}}% } } { @@ -12058,11 +12863,23 @@ defined}{}% \Glsxtrtitlefull{#1}} } \ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfull}[1]{% + \texorpdfstring + {\GLSxtrtitlefull{#1}}% + {\glspdffmtfull{#1}}% + } +} +{ + \newcommand*{\GLSfmtfull}[1]{% + \GLSxtrtitlefull{#1}} +} +\ifdef\texorpdfstring { \newcommand*{\glsfmtfullpl}[1]{% \texorpdfstring {\glsxtrtitlefullpl{#1}}% - {\glsxtrinlinefullplformat{#1}{}}% + {\glspdffmtfullpl{#1}}% } } { @@ -12074,13 +12891,25 @@ defined}{}% \newcommand*{\Glsfmtfullpl}[1]{% \texorpdfstring {\Glsxtrtitlefullpl{#1}}% - {\Glsxtrinlinefullplformat{#1}{}}% + {\glspdffmtfullpl{#1}{}}% } } { \newcommand*{\Glsfmtfullpl}[1]{% \Glsxtrtitlefullpl{#1}} } +\ifdef\texorpdfstring +{ + \newcommand*{\GLSfmtfullpl}[1]{% + \texorpdfstring + {\GLSxtrtitlefullpl{#1}}% + {\glspdffmtfullpl{#1}{}}% + } +} +{ + \newcommand*{\GLSfmtfullpl}[1]{% + \GLSxtrtitlefullpl{#1}} +} \newcommand*{\RequireGlossariesExtraLang}[1]{% \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}% } diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty index 8b4851257aa..67b246421dc 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-bookindex.sty @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `glossary-bookindex.sty,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-bookindex}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossary-bookindex}[2020/02/13 v1.42 (NLCT)] \RequirePackage{multicol} \RequirePackage{glossary-tree} \newcommand{\glsxtrbookindexcols}{2} @@ -80,6 +80,7 @@ {% \newcommand*{\glsxtrbookindexbookmark}[2]{} } +\newcommand*{\glsxtrbookindexbookmarkprefix}{\currentglossary.} \newcommand*{\glsxtrbookindexcolspread}{} \newcommand*{\glsxtrbookindexmulticolsenv}{multicols} \newglossarystyle{bookindex}{% @@ -195,7 +196,7 @@ \let\@glsxtr@bookindex@subatendgroup\relax \let\@glsxtr@bookindex@subsubatendgroup\relax \glsxtrgetgrouptitle{##1}{\glsxtrcurrentgrptitle}% - \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{index.##1}% + \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{\glsxtrbookindexbookmarkprefix##1}% \glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}% \nopagebreak\indexspace\nopagebreak\@afterheading }% diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty index 5724ca61515..bd3118cb99a 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-longextra.sty @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `glossary-longextra.sty,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-longextra}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossary-longextra}[2020/02/13 v1.42 (NLCT)] \RequirePackage{glossary-longbooktabs} \newcommand{\glslongextraNameFmt}[1]{% \glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}% diff --git a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty index b73fe6dc74d..74bd967eb0f 100644 --- a/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty +++ b/Master/texmf-dist/tex/latex/glossaries-extra/glossary-topic.sty @@ -7,7 +7,7 @@ %% glossaries-extra.dtx (with options: `glossary-topic.sty,package') %% %% glossaries-extra.dtx -%% Copyright 2019 Nicola Talbot +%% Copyright 2020 Nicola Talbot %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 @@ -39,7 +39,7 @@ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{glossary-topic}[2019/04/09 v1.41 (NLCT)] +\ProvidesPackage{glossary-topic}[2020/02/13 v1.42 (NLCT)] \RequirePackage{multicol} \newglossarystyle{topic}{% \renewenvironment{theglossary}% -- cgit v1.2.3